Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
9 changes: 9 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,15 @@ Features
``Cluster(driver_config_reporting_enabled=False)``; ``SESSION_ID`` is unaffected by
that setting. Reporting is best effort and never prevents a connection from being
established.
* ``DRIVER_CONFIG`` now describes the configuration itself rather than only the schema
version it follows (DRIVER-379). The report covers connection settings (timeouts,
request capacity, shard awareness, socket options, reconnection policy, TLS hostname
verification), the driver's own control-plane query timeouts, and the query defaults
and policies of the default execution profile. It follows the JSON schema shared with
the other ScyllaDB drivers, so the same document describes a client whichever driver
wrote it. Custom policies are reported by type name only and never by their
attributes, so a policy holding a credential does not leak it into the clients
table.
* Negotiate and implement the ``SCYLLA_USE_METADATA_ID`` protocol extension: prepared
statements skip re-sending result metadata on EXECUTE, and the driver automatically
refreshes cached metadata when the server detects a schema change (DRIVER-153)
Expand Down
2 changes: 1 addition & 1 deletion cassandra/cluster.py
Original file line number Diff line number Diff line change
Expand Up @@ -1520,7 +1520,7 @@ def __init__(self,
# Built whatever the flag says, so that the flag is the only thing that
# decides whether a connection reports: see _make_connection_kwargs. The
# reporter holds no state, so an unused one costs nothing.
self._driver_config_reporter = DriverConfigReporter()
self._driver_config_reporter = DriverConfigReporter(self)

self.control_connection = ControlConnection(
self, self.control_connection_timeout,
Expand Down
8 changes: 7 additions & 1 deletion cassandra/connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -1563,7 +1563,13 @@ def _handle_options_response(self, options_response):
# only the control connection reports it. A reporter left as None means
# the cluster has configuration reporting disabled.
if self.is_control_connection and self._driver_config_reporter is not None:
self._driver_config_reporter.add_startup_options(options)
# Whether this is a ScyllaDB node is already known: the features
# above were parsed from the SUPPORTED response, and sharding info
# is what the driver itself keys ScyllaDB-only behaviour off (see
# ControlConnection._try_connect), so the report describes what the
# driver will actually do rather than only what it was configured to.
self._driver_config_reporter.add_startup_options(
options, is_scylla=self.features.sharding_info is not None)

if self.cql_version:
if self.cql_version not in supported_cql_versions:
Expand Down
Loading
Loading