Silence control conn errors around shutdown

This commit is contained in:
Tyler Hobbs
2014-03-06 17:16:03 -06:00
parent 335e6001f1
commit dc6180be3a

View File

@@ -1440,7 +1440,7 @@ class ControlConnection(object):
if self._is_shutdown:
return
self._cluster.executor.submit(self._reconnect)
self._submit(self._reconnect)
def _reconnect(self):
log.debug("[control connection] Attempting to reconnect")
@@ -1479,6 +1479,14 @@ class ControlConnection(object):
self._reconnection_handler = new_handler
return old
def _submit(self, *args, **kwargs):
try:
if not self._cluster._is_shutdown:
return self._cluster.executor.submit(*args, **kwargs)
except ReferenceError:
pass
return None
def shutdown(self):
with self._lock:
if self._is_shutdown:
@@ -1504,6 +1512,9 @@ class ControlConnection(object):
self._signal_error()
def _refresh_schema(self, connection, keyspace=None, table=None):
if self._cluster._is_shutdown:
return
self.wait_for_schema_agreement(connection)
where_clause = ""
@@ -1645,9 +1656,9 @@ class ControlConnection(object):
table = event['table'] or None
if event['change_type'] in ("CREATED", "DROPPED"):
keyspace = keyspace if table else None
self._cluster.executor.submit(self.refresh_schema, keyspace)
self._submit(self.refresh_schema, keyspace)
elif event['change_type'] == "UPDATED":
self._cluster.executor.submit(self.refresh_schema, keyspace, table)
self._submit(self.refresh_schema, keyspace, table)
def wait_for_schema_agreement(self, connection=None):
# Each schema change typically generates two schema refreshes, one