@@ -73,6 +73,9 @@ use stacks_common::util::hash::{bytes_to_hex, Sha512Trunc256Sum};
73
73
use stacks_common:: util:: secp256k1:: MessageSignature ;
74
74
use url:: Url ;
75
75
76
+ #[ cfg( test) ]
77
+ use std:: sync:: LazyLock ;
78
+
76
79
#[ cfg( any( test, feature = "testing" ) ) ]
77
80
lazy_static ! {
78
81
/// Do not announce a signed/mined block to the network when set to true.
@@ -330,7 +333,7 @@ impl RewardSetEventPayload {
330
333
}
331
334
332
335
#[ cfg( test) ]
333
- static TEST_EVENT_OBSERVER_SKIP_RETRY : std :: sync :: Mutex < Option < bool > > = std :: sync :: Mutex :: new ( None ) ;
336
+ static TEST_EVENT_OBSERVER_SKIP_RETRY : LazyLock < TestFlag < bool > > = LazyLock :: new ( TestFlag :: default ) ;
334
337
335
338
impl EventObserver {
336
339
fn init_db ( db_path : & str ) -> Result < Connection , db_error > {
@@ -440,11 +443,7 @@ impl EventObserver {
440
443
Self :: send_payload_directly ( & payload, & url, timeout) ;
441
444
442
445
#[ cfg( test) ]
443
- if TEST_EVENT_OBSERVER_SKIP_RETRY
444
- . lock ( )
445
- . unwrap ( )
446
- . unwrap_or ( false )
447
- {
446
+ if TEST_EVENT_OBSERVER_SKIP_RETRY . get ( ) {
448
447
warn ! ( "Fault injection: delete_payload" ) ;
449
448
return ;
450
449
}
@@ -509,11 +508,7 @@ impl EventObserver {
509
508
}
510
509
511
510
#[ cfg( test) ]
512
- if TEST_EVENT_OBSERVER_SKIP_RETRY
513
- . lock ( )
514
- . unwrap ( )
515
- . unwrap_or ( false )
516
- {
511
+ if TEST_EVENT_OBSERVER_SKIP_RETRY . get ( ) {
517
512
warn ! ( "Fault injection: skipping retry of payload" ) ;
518
513
return ;
519
514
}
@@ -2058,11 +2053,7 @@ mod test {
2058
2053
2059
2054
let url = & format ! ( "{}/api" , & server. url( ) ) ;
2060
2055
2061
- // Ensure retrying is enabled on the test (as other tests will run in parallel)
2062
- TEST_EVENT_OBSERVER_SKIP_RETRY
2063
- . lock ( )
2064
- . unwrap ( )
2065
- . replace ( false ) ;
2056
+ TEST_EVENT_OBSERVER_SKIP_RETRY . set ( false ) ;
2066
2057
2067
2058
// Insert payload
2068
2059
EventObserver :: insert_payload ( & conn, url, & payload, timeout)
@@ -2135,11 +2126,7 @@ mod test {
2135
2126
2136
2127
let observer = EventObserver :: new ( Some ( working_dir. clone ( ) ) , endpoint, timeout) ;
2137
2128
2138
- // Ensure retrying is enabled on the test (as other tests will run in parallel)
2139
- TEST_EVENT_OBSERVER_SKIP_RETRY
2140
- . lock ( )
2141
- . unwrap ( )
2142
- . replace ( false ) ;
2129
+ TEST_EVENT_OBSERVER_SKIP_RETRY . set ( false ) ;
2143
2130
2144
2131
// Call send_payload
2145
2132
observer. send_payload ( & payload, "/test" ) ;
@@ -2400,18 +2387,15 @@ mod test {
2400
2387
2401
2388
// Disable retrying so that it sends the payload only once
2402
2389
// and that payload will be ignored by the test server.
2403
- TEST_EVENT_OBSERVER_SKIP_RETRY . lock ( ) . unwrap ( ) . replace ( true ) ;
2390
+ TEST_EVENT_OBSERVER_SKIP_RETRY . set ( true ) ;
2404
2391
2405
2392
info ! ( "Sending payload 1" ) ;
2406
2393
2407
2394
// Send the payload
2408
2395
observer. send_payload ( & payload, "/test" ) ;
2409
2396
2410
2397
// Re-enable retrying
2411
- TEST_EVENT_OBSERVER_SKIP_RETRY
2412
- . lock ( )
2413
- . unwrap ( )
2414
- . replace ( false ) ;
2398
+ TEST_EVENT_OBSERVER_SKIP_RETRY . set ( false ) ;
2415
2399
2416
2400
info ! ( "Sending payload 2" ) ;
2417
2401
0 commit comments