feature(cluster): use control-connection query fallback for public address connections#14512
Merged
Merged
Conversation
8 tasks
fruch
added a commit
to fruch/scylla-cluster-tests
that referenced
this pull request
May 11, 2026
…dress connections Replace DynamicWhiteListRoundRobinPolicy (from unmerged python-driver PR scylladb#833) with ControlConnectionQueryFallback.SkipPoolCreation (from merged python-driver PR scylladb#878, available in scylla-driver 3.29.10). When IP_SSH_CONNECTIONS is set to 'public', the driver falls back to the control connection for queries instead of trying to create node pools that can't reach broadcast RPC addresses. Drop run-ami-artifact-test.sh convenience script. [scylladb#14512]
ecdc90f to
2986b1e
Compare
fruch
added a commit
to fruch/scylla-cluster-tests
that referenced
this pull request
May 11, 2026
…dress connections When IP_SSH_CONNECTIONS is set to 'public', the CQL driver cannot establish node pools because nodes are accessed via public IPs that differ from the broadcast RPC addresses. Use ControlConnectionQueryFallback.SkipPoolCreation (scylla-driver 3.29.10, python-driver PR scylladb#878) to route queries through the control connection instead. Update scylla-driver from 3.29.9 to 3.29.10. [scylladb#14512]
2986b1e to
cf01e99
Compare
Collaborator
✅ Test Summary: PASSED✅ Precommit: PASSED
✅ Tests: PASSED
|
…dress connections When IP_SSH_CONNECTIONS is set to 'public', the CQL driver cannot establish node pools because nodes are accessed via public IPs that differ from the broadcast RPC addresses. Use ControlConnectionQueryFallback.SkipPoolCreation (scylla-driver 3.29.10, python-driver PR scylladb#878) to route queries through the control connection instead. Update scylla-driver from 3.29.9 to 3.29.10. [scylladb#14512]
d8a31d1 to
70f563e
Compare
Contributor
soyacz
reviewed
May 12, 2026
Contributor
soyacz
left a comment
There was a problem hiding this comment.
maybe we should use it in the artifact test (we use it in Azure tests: jenkins-pipelines/oss/artifacts/artifacts-azure-image.jenkinsfile)?
Contributor
Author
I've tested this locally, using public communication with AWS, should be the same. |
fruch
added a commit
that referenced
this pull request
May 12, 2026
…dress connections When IP_SSH_CONNECTIONS is set to 'public', the CQL driver cannot establish node pools because nodes are accessed via public IPs that differ from the broadcast RPC addresses. Use ControlConnectionQueryFallback.SkipPoolCreation (scylla-driver 3.29.10, python-driver PR #878) to route queries through the control connection instead. Update scylla-driver from 3.29.9 to 3.29.10. [#14512]
4 tasks
scylladbbot
pushed a commit
to scylladbbot/scylla-cluster-tests
that referenced
this pull request
May 12, 2026
…dress connections When IP_SSH_CONNECTIONS is set to 'public', the CQL driver cannot establish node pools because nodes are accessed via public IPs that differ from the broadcast RPC addresses. Use ControlConnectionQueryFallback.SkipPoolCreation (scylla-driver 3.29.10, python-driver PR scylladb#878) to route queries through the control connection instead. Update scylla-driver from 3.29.9 to 3.29.10. [scylladb#14512] (cherry picked from commit 0d6eb56)
fruch
added a commit
that referenced
this pull request
May 12, 2026
…dress connections When IP_SSH_CONNECTIONS is set to 'public', the CQL driver cannot establish node pools because nodes are accessed via public IPs that differ from the broadcast RPC addresses. Use ControlConnectionQueryFallback.SkipPoolCreation (scylla-driver 3.29.10, python-driver PR #878) to route queries through the control connection instead. Update scylla-driver from 3.29.9 to 3.29.10. [#14512] (cherry picked from commit 0d6eb56)
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.
Summary
When
IP_SSH_CONNECTIONSis set topublic, the CQL driver cannot establish node pools because nodes are accessed via their public IPs, which differ from the broadcast RPC addresses advertised by the cluster. This causesNoHostAvailableerrors.This PR uses the new
ControlConnectionQueryFallback.SkipPoolCreationoption (added in python-driver PR #878, released in scylla-driver 3.29.10) to fall back to the control connection for queries when public addresses are in use.What changed
sdcm/cluster.py: In_create_session, whenIP_SSH_CONNECTIONS == "public", passallow_control_connection_query_fallback=ControlConnectionQueryFallback.SkipPoolCreationto theClusterDriverconstructor. This tells the driver to skip node-pool creation entirely and route all application queries through the control connection.pyproject.toml: Updatescylla-driverfrom3.29.9to3.29.10(the first release containingControlConnectionQueryFallback).Previous approach (dropped)
The original implementation used
DynamicWhiteListRoundRobinPolicyfrom an unmerged python-driver branch (PR #833), which required pinningscylla-driverto a git ref. That PR was not accepted. This rework uses the officially released and merged approach instead.Backends Affected
Manual Testing Required
IP_SSH_CONNECTIONS=publicuv run sct.py run-test artifacts_test.ArtifactsTest.test_scylla_service --backend aws --config test-cases/artifacts/ami.yaml --config configurations/network_config/test_communication_public.yaml