Skip to content

Commit 9bccd36

Browse files
committed
schema-agreement: cap mismatch retry sleep
1 parent 590e5ac commit 9bccd36

2 files changed

Lines changed: 6 additions & 11 deletions

File tree

cassandra/cluster.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4270,7 +4270,9 @@ def wait_for_schema_agreement(self, connection=None, preloaded_results=None, wai
42704270
return True
42714271

42724272
log.debug("[control connection] Schemas mismatched, trying again")
4273-
self._time.sleep(0.2)
4273+
remaining = total_timeout - elapsed
4274+
if remaining > 0:
4275+
self._time.sleep(min(0.2, remaining))
42744276
elapsed = self._time.time() - start
42754277

42764278
log.warning("Node %s is reporting a schema disagreement: %s",

tests/unit/test_control_connection.py

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -370,19 +370,12 @@ def test_schema_change_refresh_does_not_session_fallback_after_mismatch_then_con
370370
assert not response_future.is_schema_agreed
371371
response_future._set_final_result.assert_called_once_with(None)
372372

373-
def test_wait_for_schema_agreement_does_not_exceed_configured_wait_with_session_fallback(self):
374-
session = Mock(is_shutdown=False)
375-
376-
def wait_for_schema_agreement(wait_time=None):
377-
self.time.sleep(wait_time)
378-
return False
379-
380-
session.wait_for_schema_agreement.side_effect = wait_for_schema_agreement
381-
self.cluster.sessions = [session]
373+
def test_wait_for_schema_agreement_does_not_sleep_past_deadline_after_mismatch(self):
374+
self.cluster.max_schema_agreement_wait = 0.1
382375
self.connection.peer_results[1][1][2] = 'b'
383376

384377
assert not self.control_connection.wait_for_schema_agreement()
385-
assert self.time.clock < self.cluster.max_schema_agreement_wait + 0.2
378+
assert self.time.clock == self.cluster.max_schema_agreement_wait
386379

387380
def test_wait_for_schema_agreement_skipping(self):
388381
"""

0 commit comments

Comments
 (0)