17
17
import unittest # noqa
18
18
19
19
from cassandra import OperationTimedOut , WriteTimeout
20
- from cassandra .cluster import Cluster , ExecutionProfile , ResponseFuture , EXEC_PROFILE_DEFAULT
20
+ from cassandra .cluster import Cluster , ExecutionProfile , ResponseFuture , EXEC_PROFILE_DEFAULT , NoHostAvailable
21
21
from cassandra .query import SimpleStatement
22
22
from cassandra .policies import ConstantSpeculativeExecutionPolicy , RoundRobinPolicy , RetryPolicy , WriteType
23
+ from cassandra .protocol import OverloadedErrorMessage , IsBootstrappingErrorMessage , TruncateError , ServerError
23
24
24
25
from tests .integration import greaterthancass21 , requiressimulacron , SIMULACRON_JAR , \
25
26
CASSANDRA_VERSION
@@ -242,7 +243,7 @@ def on_unavailable(self, query, consistency, required_replicas, alive_replicas,
242
243
243
244
def on_request_error (self , query , consistency , error , retry_num ):
244
245
next (self .request_error )
245
- return self .IGNORE , None
246
+ return self .RETHROW , None
246
247
247
248
def reset_counters (self ):
248
249
self .write_timeout = count ()
@@ -429,14 +430,20 @@ def test_retry_policy_on_request_error(self):
429
430
retry_policy = CounterRetryPolicy ()
430
431
self .set_cluster (retry_policy )
431
432
432
- for e in [overloaded_error , bootstrapping_error , truncate_error , server_error ]:
433
+ for prime_error , exc in [
434
+ (overloaded_error , OverloadedErrorMessage ),
435
+ (bootstrapping_error , IsBootstrappingErrorMessage ),
436
+ (truncate_error , TruncateError ),
437
+ (server_error , ServerError )]:
438
+
439
+ clear_queries ()
433
440
query_to_prime = "SELECT * from simulacron_keyspace.simulacron_table;"
434
- prime_query (query_to_prime , then = e , rows = None , column_types = None )
441
+ prime_query (query_to_prime , then = prime_error , rows = None , column_types = None )
435
442
rf = self .session .execute_async (query_to_prime )
436
- try :
443
+
444
+ with self .assertRaises (exc ):
437
445
rf .result ()
438
- except :
439
- pass
446
+
440
447
self .assertEqual (len (rf .attempted_hosts ), 1 ) # no retry
441
448
442
449
self .assertEqual (next (retry_policy .request_error ), 4 )
@@ -446,11 +453,12 @@ def test_retry_policy_on_request_error(self):
446
453
self .set_cluster (retry_policy )
447
454
448
455
for e in [overloaded_error , bootstrapping_error , truncate_error , server_error ]:
456
+ clear_queries ()
449
457
query_to_prime = "SELECT * from simulacron_keyspace.simulacron_table;"
450
458
prime_query (query_to_prime , then = e , rows = None , column_types = None )
451
459
rf = self .session .execute_async (query_to_prime )
452
- try :
460
+
461
+ with self .assertRaises (NoHostAvailable ):
453
462
rf .result ()
454
- except :
455
- pass
463
+
456
464
self .assertEqual (len (rf .attempted_hosts ), 3 ) # all 3 nodes failed
0 commit comments