Skip to content

Improve Cassandra connection resilience and configurability - #334

Merged
lstruman merged 1 commit into
developfrom
james-dev
Jul 31, 2026
Merged

Improve Cassandra connection resilience and configurability#334
lstruman merged 1 commit into
developfrom
james-dev

Conversation

@lstruman

Copy link
Copy Markdown
Contributor
  • Make disable_initial_host_lookup configurable via config key; replace hardcoded constant with dbconf.GetBoolean
  • Add exponential reconnection policy with configurable initial interval, max retries (default 10), and max interval
  • Add socket keepalive support via configurable socket_keepalive_sec
  • Upgrade host selection to TokenAwareHostPolicy wrapping DCAwareRoundRobinPolicy when local_dc is set
  • Fix TLS host verification: derive EnableHostVerification from insecure_skip_verify instead of hardcoding false
  • Read insecure_skip_verify once and pass to loadCassandraTLSConfig to eliminate duplicate config reads
  • Add tls.server_name support for SNI override
  • Raise default timeouts from 1s to 10s; align sample config
  • Document all new config keys in sample_webconfig.conf for both cassandra and yugabyte blocks

- Make disable_initial_host_lookup configurable via config key;
  replace hardcoded constant with dbconf.GetBoolean
- Add exponential reconnection policy with configurable initial
  interval, max retries (default 10), and max interval
- Add socket keepalive support via configurable socket_keepalive_sec
- Upgrade host selection to TokenAwareHostPolicy wrapping
  DCAwareRoundRobinPolicy when local_dc is set
- Fix TLS host verification: derive EnableHostVerification from
  insecure_skip_verify instead of hardcoding false
- Read insecure_skip_verify once and pass to loadCassandraTLSConfig
  to eliminate duplicate config reads
- Add tls.server_name support for SNI override
- Raise default timeouts from 1s to 10s; align sample config
- Document all new config keys in sample_webconfig.conf for both
  cassandra and yugabyte blocks
Copilot AI review requested due to automatic review settings July 31, 2026 21:27

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR improves Cassandra/Yugabyte connection robustness and configurability by moving several previously hardcoded connection behaviors into configuration, and tightening TLS verification behavior.

Changes:

  • Adds configurable connection options (timeouts, socket keepalive, disable_initial_host_lookup) and an exponential reconnection policy.
  • Improves host selection when local_dc is set by switching to token-aware routing over DC-aware round-robin.
  • Fixes TLS host verification behavior (driven by tls.insecure_skip_verify) and adds tls.server_name for SNI override; updates sample config accordingly.

Reviewed changes

Copilot reviewed 2 out of 3 changed files in this pull request and generated 2 comments.

File Description
db/cassandra/cassandra_client.go Adds configurable timeouts/keepalive/reconnection policy, token-aware host selection, and corrected TLS verification/SNI handling.
config/sample_webconfig.conf Documents new Cassandra/Yugabyte config keys and updates sample defaults (timeouts, connections, TLS server_name).
.gitignore Adds ignore entries for .opencode/ and CLAUDE.md.
Suppressed comments (1)

config/sample_webconfig.conf:268

  • Same as above: an empty tls.server_name will default to the corresponding hosts entry, which may be a DNS name, not necessarily an IP address.
                // Override SNI hostname sent during TLS handshake.
                // Required when the certificate uses DNS SANs only (no IP SANs).
                // Leave empty to use the host IP address (gocql default).
                server_name = ""

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread config/sample_webconfig.conf
Comment thread db/cassandra/cassandra_client.go
@lstruman
lstruman merged commit 27a2d54 into develop Jul 31, 2026
5 checks passed
@github-actions github-actions Bot locked and limited conversation to collaborators Jul 31, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants