@@ -323,17 +323,23 @@ def test_wait_for_schema_agreement_does_not_accept_session_fallback_after_known_
323323 assert not self .control_connection .wait_for_schema_agreement ()
324324 session .wait_for_schema_agreement .assert_not_called ()
325325
326- def test_wait_for_schema_agreement_does_not_accept_session_fallback_after_mismatch_then_busy (self ):
326+ def test_wait_for_schema_agreement_retries_control_connection_after_mismatch_then_busy (self ):
327327 session = Mock (is_shutdown = False )
328328 session .wait_for_schema_agreement .return_value = True
329329 self .cluster .sessions = [session ]
330- self .connection .peer_results [1 ][1 ][2 ] = 'b'
330+
331+ peer_columns = self .connection .peer_results [0 ]
332+ mismatching_peer_rows = [list (row ) for row in self .connection .peer_results [1 ]]
333+ mismatching_peer_rows [1 ][2 ] = 'b'
334+ matching_peer_rows = [list (row ) for row in self .connection .peer_results [1 ]]
331335 self .connection .wait_for_responses .side_effect = [
332- _node_meta_results (self .connection .local_results , self .connection .peer_results ),
333- ConnectionBusy ("overloaded" )]
336+ _node_meta_results (self .connection .local_results , (peer_columns , mismatching_peer_rows )),
337+ ConnectionBusy ("overloaded" ),
338+ _node_meta_results (self .connection .local_results , (peer_columns , matching_peer_rows ))]
334339
335- assert not self .control_connection .wait_for_schema_agreement ()
340+ assert self .control_connection .wait_for_schema_agreement ()
336341 session .wait_for_schema_agreement .assert_not_called ()
342+ assert self .connection .wait_for_responses .call_count == 3
337343
338344 def test_wait_for_schema_agreement_does_not_exceed_configured_wait_with_session_fallback (self ):
339345 session = Mock (is_shutdown = False )
0 commit comments