Merge remote-tracking branch 'the-gigi/master' into PYTHON-175
This commit is contained in:
@@ -366,9 +366,10 @@ class Cluster(object):
|
|||||||
|
|
||||||
control_connection_timeout = 2.0
|
control_connection_timeout = 2.0
|
||||||
"""
|
"""
|
||||||
A timeout, in seconds, for queries made by the control connection, such
|
A default timeout, in seconds, for queries made by the control connection,
|
||||||
as querying the current schema and information about nodes in the cluster.
|
such as querying the current schema and information about nodes in the
|
||||||
If set to :const:`None`, there will be no timeout for these queries.
|
cluster. If set to :const:`None`, there will be no timeout for these
|
||||||
|
queries. Can be overridden by passing it to __init__()
|
||||||
"""
|
"""
|
||||||
|
|
||||||
sessions = None
|
sessions = None
|
||||||
@@ -405,7 +406,7 @@ class Cluster(object):
|
|||||||
protocol_version=2,
|
protocol_version=2,
|
||||||
executor_threads=2,
|
executor_threads=2,
|
||||||
max_schema_agreement_wait=10,
|
max_schema_agreement_wait=10,
|
||||||
control_connection_timeout=2.0):
|
control_connection_timeout=control_connection_timeout):
|
||||||
"""
|
"""
|
||||||
Any of the mutable Cluster attributes may be set as keyword arguments
|
Any of the mutable Cluster attributes may be set as keyword arguments
|
||||||
to the constructor.
|
to the constructor.
|
||||||
@@ -2162,6 +2163,7 @@ class ControlConnection(object):
|
|||||||
log.debug("[control connection] Waiting for schema agreement")
|
log.debug("[control connection] Waiting for schema agreement")
|
||||||
start = self._time.time()
|
start = self._time.time()
|
||||||
elapsed = 0
|
elapsed = 0
|
||||||
|
poll_interval = 0.2
|
||||||
cl = ConsistencyLevel.ONE
|
cl = ConsistencyLevel.ONE
|
||||||
total_timeout = self._cluster.max_schema_agreement_wait
|
total_timeout = self._cluster.max_schema_agreement_wait
|
||||||
schema_mismatches = None
|
schema_mismatches = None
|
||||||
@@ -2169,12 +2171,13 @@ class ControlConnection(object):
|
|||||||
peers_query = QueryMessage(query=self._SELECT_SCHEMA_PEERS, consistency_level=cl)
|
peers_query = QueryMessage(query=self._SELECT_SCHEMA_PEERS, consistency_level=cl)
|
||||||
local_query = QueryMessage(query=self._SELECT_SCHEMA_LOCAL, consistency_level=cl)
|
local_query = QueryMessage(query=self._SELECT_SCHEMA_LOCAL, consistency_level=cl)
|
||||||
try:
|
try:
|
||||||
timeout = min(2.0, total_timeout - elapsed)
|
timeout = min(self._timeout, total_timeout - elapsed)
|
||||||
peers_result, local_result = connection.wait_for_responses(
|
peers_result, local_result = connection.wait_for_responses(
|
||||||
peers_query, local_query, timeout=timeout)
|
peers_query, local_query, timeout=timeout)
|
||||||
except OperationTimedOut as timeout:
|
except OperationTimedOut as timeout:
|
||||||
log.debug("[control connection] Timed out waiting for "
|
log.debug("[control connection] Timed out waiting for "
|
||||||
"response during schema agreement check: %s", timeout)
|
"response during schema agreement check: %s", timeout)
|
||||||
|
self._time.sleep(poll_interval)
|
||||||
elapsed = self._time.time() - start
|
elapsed = self._time.time() - start
|
||||||
continue
|
continue
|
||||||
except ConnectionShutdown:
|
except ConnectionShutdown:
|
||||||
@@ -2189,7 +2192,7 @@ class ControlConnection(object):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
log.debug("[control connection] Schemas mismatched, trying again")
|
log.debug("[control connection] Schemas mismatched, trying again")
|
||||||
self._time.sleep(0.2)
|
self._time.sleep(poll_interval)
|
||||||
elapsed = self._time.time() - start
|
elapsed = self._time.time() - start
|
||||||
|
|
||||||
log.warn("Node %s is reporting a schema disagreement: %s",
|
log.warn("Node %s is reporting a schema disagreement: %s",
|
||||||
|
|||||||
Reference in New Issue
Block a user