Skip to content

feat: add support for blue/green deployments #911

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 47 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
79abe63
wip
aaron-congo Jun 4, 2025
51dd60d
Add plugin_to_skip arg to connect/force_connect, is_plugin_in_use
aaron-congo Jun 5, 2025
16bc9f0
Add set_status, get_status
aaron-congo Jun 5, 2025
589fb84
Fix build errors
aaron-congo Jun 5, 2025
547101a
Merge branch 'plugin-service-extensions' into bg
aaron-congo Jun 5, 2025
704ab13
Add is_ip()
aaron-congo Jun 5, 2025
9d73de4
Merge branch 'plugin-service-extensions' into bg
aaron-congo Jun 5, 2025
117ce35
All BlueGreen classes except BlueGreenStatusProvider
aaron-congo Jun 10, 2025
0262338
Done BlueGreenStatusProvider, mypy/isort/flake8 pass
aaron-congo Jun 12, 2025
d0b1ee9
Cleanup, fix some TODOs
aaron-congo Jun 12, 2025
c5e7f3d
Merge branch 'main' into plugin-service-extensions
aaron-congo Jun 13, 2025
6c94ba7
Fix .flake8 formatting
aaron-congo Jun 13, 2025
4319ef2
Attempt to fix build
aaron-congo Jun 13, 2025
2c8262b
Port over integration/host code from JDBC
aaron-congo Jun 13, 2025
276ad22
Merge branch 'main' into plugin-service-extensions
aaron-congo Jun 16, 2025
64637c9
unit test failures wip
aaron-congo Jun 16, 2025
f479a09
Fix unit tests
aaron-congo Jun 17, 2025
f393225
Attempt to fix test_verify_urls
aaron-congo Jun 17, 2025
fd493b3
integ-tests wip
aaron-congo Jun 17, 2025
476d3fd
Attempt to fix test_reader_failover_handler#test_failover
aaron-congo Jun 17, 2025
717afac
Merge branch 'plugin-service-extensions' into bg
aaron-congo Jun 17, 2025
688a1a5
Fix build
aaron-congo Jun 17, 2025
83dc3b7
Add blue/green deployment tests
aaron-congo Jun 20, 2025
b7b5be9
Merge branch 'main' into plugin-service-extensions
aaron-congo Jun 20, 2025
55c8fdd
Merge branch 'plugin-service-extensions' into bg
aaron-congo Jun 20, 2025
f3df9ac
Fix build error, add exception timeout check
aaron-congo Jun 20, 2025
d22cfdb
PG test passing, max_green_node_changed_name_time 0
aaron-congo Jun 25, 2025
312a3cd
Multi-AZ instance passing without IAM
aaron-congo Jun 26, 2025
b886786
test_switchover passing
aaron-congo Jun 27, 2025
39f0db2
Merge branch 'main' into bg
aaron-congo Jun 27, 2025
a6e2681
Merge branch 'main' into bg
aaron-congo Jul 7, 2025
835dd24
Cleanup
aaron-congo Jul 8, 2025
fcbe35a
PR suggestions
aaron-congo Jul 10, 2025
cfd02cb
Merge branch 'main' into bg
aaron-congo Jul 10, 2025
05fc6d3
bug fixes wip
aaron-congo Jul 11, 2025
732fd3f
Merge branch 'main' into bg
aaron-congo Jul 14, 2025
6c32e64
Cleanup
aaron-congo Jul 15, 2025
5cd24e0
Fix timing bugs and stale bg data bug
aaron-congo Jul 17, 2025
2e27c9d
Address PR feedback
aaron-congo Jul 17, 2025
28e3b5e
cleanup
aaron-congo Jul 17, 2025
a303e27
cleanup
aaron-congo Jul 17, 2025
8d12c9e
Merge branch 'main' into bg
aaron-congo Jul 17, 2025
f09c9ad
Fix flake8
aaron-congo Jul 17, 2025
c734391
cleanup
aaron-congo Jul 17, 2025
2087711
Merge branch 'main' into bg
aaron-congo Jul 17, 2025
c2c5bb5
Uncomment commented out code
aaron-congo Jul 17, 2025
73966cd
Fix bug where variables were assigned a ValueContainer instead of the…
aaron-congo Jul 18, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ def _get_verified_writer_connection(self, props: Properties, is_initial_connecti
self._plugin_service.force_refresh_host_list(writer_candidate_conn)
writer_candidate = self._plugin_service.identify_connection(writer_candidate_conn)

if writer_candidate is not None and writer_candidate.role != HostRole.WRITER:
if writer_candidate is None or writer_candidate.role != HostRole.WRITER:
self._close_connection(writer_candidate_conn)
self._delay(retry_delay_ms)
continue
Expand Down Expand Up @@ -133,6 +133,11 @@ def _get_verified_reader_connection(self, props: Properties, is_initial_connecti
self._plugin_service.force_refresh_host_list(reader_candidate_conn)
reader_candidate = self._plugin_service.identify_connection(reader_candidate_conn)

if reader_candidate is None:
self._close_connection(reader_candidate_conn)
self._delay(retry_delay_ms)
continue

if reader_candidate is not None and reader_candidate.role != HostRole.READER:
if self._has_no_readers():
# Cluster has no readers. Simulate Aurora reader cluster endpoint logic and return the current writer connection.
Expand Down
Loading
Loading