Files
ddns_local_server/RELEASE_NOTES_v1.2.7.md
koenieee 1c3584cf9a Release v1.2.7: Critical batch processing race condition fix
CRITICAL BUG FIX:
- Fixed race condition where only first config file was updated in multi-file scenarios
- Implemented deferred IP storage for atomic batch processing
- All config files now update consistently when IP changes occur

ENHANCED CI/CD TESTING:
- Added comprehensive batch processing validation to test suite
- Increased test coverage from 3 to 5 config files for better detection
- Dynamic IP resolution and detailed error reporting
- Integrated into main test_all.sh for automated CI/CD pipelines

TECHNICAL IMPROVEMENTS:
- Added update_file_only() methods for atomic batch operations
- Enhanced environment variable support for better test infrastructure
- Improved error handling and logging throughout batch processing

This release resolves the critical issue where 'not all config files were being updated'
and ensures reliable, consistent DDNS updates across all configuration files.
2025-10-03 15:56:56 +02:00

4.1 KiB

DDNS Updater v1.2.7 Release Notes

Release Date: October 3, 2025 Type: Critical Bug Fix + CI/CD Enhancement

🚨 Critical Fix

Batch Processing Race Condition Resolved

  • Issue: In multi-config file scenarios, only the first config file was being updated
  • Root Cause: IP was stored immediately after first file update, causing subsequent files to see "no change needed"
  • Solution: Implemented deferred IP storage - all files are processed first, then IP is stored once atomically
  • Impact: All config files now update consistently when IP changes occur

🔧 Technical Improvements

Enhanced Batch Processing Architecture

  • Added update_file_only() methods in both application and domain layers
  • Implemented atomic update semantics: all files update together or none do
  • Improved error handling and rollback capabilities
  • Enhanced logging for better debugging of batch operations

Environment Variable Support

  • Fixed DDNS_STORAGE_DIR environment variable handling in test mode
  • Improved test isolation and reliability
  • Better support for automated testing environments

🧪 CI/CD Enhancements

Comprehensive Test Suite Improvements

  • Enhanced batch processing test: Increased from 3 to 5 config files for better race condition detection
  • Dynamic IP resolution: Tests adapt to changing DNS resolution (no hardcoded IPs)
  • Detailed error reporting: Specific failure reasons for better debugging in CI environments
  • Integrated into main test suite: Runs automatically in CI/CD pipelines

Test Reliability

  • Improved test infrastructure with better cleanup and isolation
  • Enhanced error messages for actionable debugging
  • Validates atomic update behavior across all configuration files

🎯 Production Impact

Before v1.2.7 (Issue)

Config files: site1.conf, site2.conf, site3.conf
Old IP: 192.168.1.100, New IP: 85.146.26.129

Result: 
- site1.conf: ✅ Updated to 85.146.26.129
- site2.conf: ❌ Still has 192.168.1.100  
- site3.conf: ❌ Still has 192.168.1.100

After v1.2.7 (Fixed)

Config files: site1.conf, site2.conf, site3.conf  
Old IP: 192.168.1.100, New IP: 85.146.26.129

Result:
- site1.conf: ✅ Updated to 85.146.26.129
- site2.conf: ✅ Updated to 85.146.26.129
- site3.conf: ✅ Updated to 85.146.26.129

📦 Installation

Debian/Ubuntu Package

wget https://github.com/koenieee/ddns_local_server/releases/download/v1.2.7/ddns-updater_1.2.7-1_amd64.deb
sudo dpkg -i ddns-updater_1.2.7-1_amd64.deb

From Source

git clone https://github.com/koenieee/ddns_local_server.git
cd ddns_local_server
git checkout v1.2.7
cargo build --release

🔄 Upgrade Notes

For Production Users

  • Immediate upgrade recommended if you use multiple config files
  • The race condition fix ensures all your config files will be updated consistently
  • No configuration changes required - fix is automatic

For Developers/CI

  • Enhanced test suite provides better validation of batch processing
  • New environment variable support improves test isolation
  • CI/CD pipelines will automatically benefit from improved test coverage

Performance & Compatibility

  • Performance: No performance impact - fix maintains existing optimizations from v1.2.6
  • Compatibility: Fully backward compatible with existing configurations
  • Dependencies: No new dependencies added
  • Rust Version: Still requires Rust 1.82+ (unchanged)

🧰 Developer Notes

Key Changes

  • New methods: update_ddns_file_only(), update_file_only()
  • Enhanced update_ddns_multiple() with deferred IP storage
  • Improved test infrastructure with dynamic IP detection
  • Better error handling and logging throughout batch processing flow

Testing

# Run the enhanced test suite
./scripts/test_all.sh

# Test specific batch processing
cargo test batch_processing

Full Changelog: v1.2.6...v1.2.7

Issues Fixed: Batch processing race condition affecting multi-config deployments Contributors: DDNS Updater Team