From 5d97c1e3236a54cfd4f15fb28624f9b9e88038be Mon Sep 17 00:00:00 2001 From: Adam Holmberg Date: Tue, 12 Jan 2016 17:27:38 -0600 Subject: [PATCH] is_schema_agreed attribute for insight following DDL requests PYTHON-458 --- cassandra/cluster.py | 10 +++++++++- docs/api/cassandra/cluster.rst | 2 ++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/cassandra/cluster.py b/cassandra/cluster.py index dfeb7026..9d944103 100644 --- a/cassandra/cluster.py +++ b/cassandra/cluster.py @@ -2614,7 +2614,7 @@ def refresh_schema_and_set_result(control_conn, response_future, **kwargs): if control_conn._meta_refresh_enabled: log.debug("Refreshing schema in response to schema change. " "%s", kwargs) - control_conn._refresh_schema(response_future._connection, **kwargs) + response_future.is_schema_agreed = control_conn._refresh_schema(response_future._connection, **kwargs) else: log.debug("Skipping schema refresh in response to schema change because meta refresh is disabled; " "%s", kwargs) @@ -2643,6 +2643,13 @@ class ResponseFuture(object): :class:`.ResponseFuture`. """ + is_schema_agreed = True + """ + For DDL requests, this may be set ``False`` if the schema agreement poll after the response fails. + + Always ``True`` for non-DDL requests. + """ + session = None row_factory = None message = None @@ -2866,6 +2873,7 @@ class ResponseFuture(object): elif response.kind == RESULT_KIND_SCHEMA_CHANGE: # refresh the schema before responding, but do it in another # thread instead of the event loop thread + self.is_schema_agreed = False self.session.submit( refresh_schema_and_set_result, self.session.cluster.control_connection, diff --git a/docs/api/cassandra/cluster.rst b/docs/api/cassandra/cluster.rst index fbe8fe3f..7fe878ca 100644 --- a/docs/api/cassandra/cluster.rst +++ b/docs/api/cassandra/cluster.rst @@ -131,6 +131,8 @@ .. autoattribute:: custom_payload() + .. autoattribute:: is_schema_agreed + .. autoattribute:: has_more_pages .. autoattribute:: warnings