Skip to content

V1.4.1 Changelog

Release Date: 2026-03-24 Version: V1.4.1 Compatibility: ✅ Backward compatible with V1.4.0


🎉 Version Highlights

V1.4.1 is a stability enhancement release, focusing on core functionality improvements and code quality:

  • 🔌 Circuit Breaker Refactoring - State pattern implementation, reduced cyclomatic complexity by 67%
  • 📊 Rate Limiter Testing - Complete unit test coverage
  • 📝 Configuration Audit - Configuration change tracking and audit logging
  • 🏷️ Value Objects - Introduced InstanceId for type safety

✨ New Features

1. Circuit Breaker State Pattern Refactoring

The circuit breaker now uses the state pattern, providing cleaner code structure and better maintainability.

Improvements: - Cyclomatic complexity reduced from 15 to 5 - Follows Single Responsibility and Open-Closed principles - Clearer state transition logic

Usage Example:

// Create circuit breaker
CircuitBreaker breaker = new StatefulCircuitBreaker(5, 2, 60000);

// Record request results
breaker.recordSuccess();  // or breaker.recordFailure()

// Check if request is allowed
if (breaker.allowRequest()) {
    // Execute request
}

Compatibility: Original DefaultCircuitBreaker is still available. New code should use StatefulCircuitBreaker.


2. Configuration Audit Functionality

Now you can track configuration change history for troubleshooting and audit requirements.

Features: - Record configuration change operations - Record operator and operation time - Record before/after value comparison

Database Changes:

-- New configuration change audit log table
CREATE TABLE config_change_audit_log (
    id VARCHAR(64) PRIMARY KEY,
    config_key VARCHAR(256) NOT NULL,
    operation VARCHAR(32) NOT NULL,
    old_value TEXT,
    new_value TEXT,
    operator VARCHAR(64),
    operated_at TIMESTAMP NOT NULL,
    ip_address VARCHAR(45),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);


3. Rate Limiter Algorithm Testing

Complete unit tests for rate limiting algorithms to ensure correctness.

Test Coverage: - ✅ Token bucket algorithm basic tests - ✅ Rate limiter configuration tests - ✅ Concurrent rate limiting tests - ✅ Rate limiter recovery tests


4. InstanceId Value Object

Introduced InstanceId value object for enhanced type safety and validation.

Usage Example:

// Create from string (with validation)
InstanceId id = InstanceId.of("my-instance-001");

// Generate random instance ID
InstanceId newId = InstanceId.generate();

// Get value
String value = id.toString();

Validation Rules: - Cannot be empty - Length ≤ 64 characters - Only letters, numbers, underscores, and hyphens allowed


📦 Installation & Upgrade

Upgrade Steps

  1. Backup Data

    # Backup database
    mysqldump -u root -p modelrouter > backup_v1.4.0.sql
    

  2. Download New Version

    git pull origin master
    git checkout V1.4.1
    

  3. Database Migration

    -- Execute new table creation script
    source /path/to/schema_v1.4.1.sql
    

  4. Restart Application

    mvn spring-boot:run -P fast
    

  5. Verify Functionality

    curl http://localhost:8080/actuator/health
    # Should return: {"status":"UP"}
    


🔧 Configuration Changes

New Configuration Items

No configuration changes required in this version. All configurations remain backward compatible.


⚠️ Notes

Backward Compatibility

  • ✅ Fully backward compatible with V1.4.0
  • ✅ No breaking API changes
  • ✅ No configuration format changes

Known Issues

No known issues at this time.


📊 Code Statistics

MetricCount
New Files11
New Code Lines+878
New Test Lines+285
Commits4

🐛 Bug Fixes

This version focuses on feature enhancements with no specific bug fixes.



👥 Contributors

Thanks to the following developers for their contributions:

  • JAiRouter Development Team

Update Date: 2026-03-24 Documentation Maintainer: JAiRouter Team