1212# See the License for the specific language governing permissions and
1313# limitations under the License.
1414
15- import struct
16- import traceback
15+ import struct , logging , sys , traceback
1716
18- import cassandra
19- from cassandra import ConsistencyLevel
17+ from cassandra import ConsistencyLevel , OperationTimedOut , ReadTimeout , WriteTimeout , Unavailable
2018from cassandra .cluster import Cluster
21- from cassandra .policies import TokenAwarePolicy , RoundRobinPolicy , \
22- DowngradingConsistencyRetryPolicy
19+ from cassandra .policies import TokenAwarePolicy , RoundRobinPolicy , DowngradingConsistencyRetryPolicy
2320from cassandra .query import SimpleStatement
2421from tests .integration import use_singledc , PROTOCOL_VERSION
2522
26- from tests .integration .long .utils import force_stop , create_schema , \
27- wait_for_down , wait_for_up , start , CoordinatorStats
23+ from tests .integration .long .utils import ( force_stop , create_schema , wait_for_down , wait_for_up ,
24+ start , CoordinatorStats )
2825
2926try :
3027 import unittest2 as unittest
3128except ImportError :
3229 import unittest # noqa
3330
31+ log = logging .getLogger (__name__ )
32+
3433ALL_CONSISTENCY_LEVELS = set ([
3534 ConsistencyLevel .ANY , ConsistencyLevel .ONE , ConsistencyLevel .TWO ,
3635 ConsistencyLevel .QUORUM , ConsistencyLevel .THREE ,
@@ -74,7 +73,14 @@ def _query(self, session, keyspace, count, consistency_level=ConsistencyLevel.ON
7473 ss = SimpleStatement ('SELECT * FROM cf WHERE k = 0' ,
7574 consistency_level = consistency_level ,
7675 routing_key = routing_key )
77- self .coordinator_stats .add_coordinator (session .execute_async (ss ))
76+ while True :
77+ try :
78+ self .coordinator_stats .add_coordinator (session .execute_async (ss ))
79+ break
80+ except (OperationTimedOut , ReadTimeout ):
81+ ex_type , ex , tb = sys .exc_info ()
82+ log .warn ("{0}: {1} Backtrace: {2}" .format (ex_type .__name__ , ex , traceback .extract_tb (tb )))
83+ del tb
7884
7985 def _assert_writes_succeed (self , session , keyspace , consistency_levels ):
8086 for cl in consistency_levels :
@@ -103,7 +109,7 @@ def _assert_writes_fail(self, session, keyspace, consistency_levels):
103109 try :
104110 self ._insert (session , keyspace , 1 , cl )
105111 self ._cl_expected_failure (cl )
106- except (cassandra . Unavailable , cassandra . WriteTimeout ):
112+ except (Unavailable , WriteTimeout ):
107113 pass
108114
109115 def _assert_reads_fail (self , session , keyspace , consistency_levels ):
@@ -112,7 +118,7 @@ def _assert_reads_fail(self, session, keyspace, consistency_levels):
112118 try :
113119 self ._query (session , keyspace , 1 , cl )
114120 self ._cl_expected_failure (cl )
115- except (cassandra . Unavailable , cassandra . ReadTimeout ):
121+ except (Unavailable , ReadTimeout ):
116122 pass
117123
118124 def _test_tokenaware_one_node_down (self , keyspace , rf , accepted ):
0 commit comments