feat: Add blue-green deployment strategy support for zero downtime#63
Merged
srinath-prabhu merged 12 commits intomainfrom Jul 21, 2025
Merged
feat: Add blue-green deployment strategy support for zero downtime#63srinath-prabhu merged 12 commits intomainfrom
srinath-prabhu merged 12 commits intomainfrom
Conversation
- Implement automatic blue-green strategy detection on connection - Add strategy header to all gRPC requests - Handle graceful strategy transitions without query interruption - Support 456 error handling for strategy mismatches - Add thread-safe and process-safe strategy caching - Update all API responses to include optional new_strategy field - Add comprehensive testing with mock gRPC server - Update documentation for blue-green deployment Key features: - Zero downtime during server deployments - Automatic failover between blue/green strategies - Per-query strategy tracking for consistency - 5-minute strategy cache for performance - Compatible with multi-threaded/multi-process applications 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Pull Request Overview
This PR implements blue-green deployment strategy support for the e6data Python connector to enable zero downtime deployments. The implementation includes automatic strategy detection, graceful transitions, and comprehensive error handling to ensure query continuity during server deployments.
Key changes:
- Added automatic blue-green strategy detection and header injection for all gRPC requests
- Implemented 456 error handling for strategy mismatches with automatic failover
- Added thread-safe and process-safe strategy caching with 5-minute TTL
Reviewed Changes
Copilot reviewed 67 out of 69 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| test/verify_decimal_fix.py | Test validation for DECIMAL128 binary data handling edge cases |
| test/validate_implementation.py | Comprehensive validation suite for DECIMAL128 IEEE 754-2008 implementation |
| test/validate_decimal128.py | Integration test for DECIMAL128 parsing with VectorType support |
| test/test_user_binary_value.py | Specific test for problematic DECIMAL128 binary patterns |
| test/test_strategy_sharing_fix.py | Validation of strategy state sharing between ClusterManager and e6data_grpc |
| test/test_strategy_persistence_fix.py | Test for strategy persistence after cluster resume operations |
| test/test_strategy_logic.py | Mock server testing for strategy logic and transitions |
| test/test_strategy.py | Comprehensive strategy detection tests with multi-threading/processing |
| test/test_specific_binary.py | Analysis of specific DECIMAL128 binary encoding patterns |
| test/test_multiprocessing_fix.py | Verification of multiprocessing RuntimeError fixes |
| test/test_mock_server.py | Client testing against mock gRPC server for strategy switching |
| test/test_manual_analysis.py | Manual analysis tools for 38-digit DECIMAL128 values |
| test/test_known_case.py | Validation of known working DECIMAL128 test cases |
| test/test_improved_parsing.py | Enhanced DECIMAL128 binary parsing with IEEE 754-2008 support |
| test/test_fix.py | Basic DECIMAL128 invalid binary data handling test |
| test/test_decimal128_parsing.py | Core DECIMAL128 parsing functionality tests |
| test/test_decimal128_binary_parsing.py | Binary format parsing tests for IEEE 754-2008 Decimal128 |
| test/test_current_implementation.py | Testing current DECIMAL128 implementation with field extraction |
| test/test_comprehensive.py | Full test suite covering all DECIMAL128 expected values |
| test/test_cluster_manager_strategy.py | ClusterManager integration with strategy support |
| test/test_cluster_manager_none_strategy.py | Testing ClusterManager behavior with no active strategy |
| test/test_cluster_manager_efficiency.py | Efficiency testing for established strategy reuse |
| test/test_all_decimal128_cases.py | Coverage of all DECIMAL128 cases from query output |
| test/test_38_nines.py | Specific test for 38-digit number (99999...9999) parsing |
| setup.py | Version bump to 2.2.6 |
| run_mock_test.sh | Shell script for running mock server and test client |
Comments suppressed due to low confidence (1)
test/test_comprehensive.py:45
- [nitpick] The test case description says 'Row 5: 0' but the expected value should be more descriptive in the test data structure. Consider using 'expected_value' or similar for clarity.
'expected': 0
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Key features:
🤖 Generated with Claude Code