@@ -28,22 +28,11 @@ use vss_client_ng::types::{
2828 Storable ,
2929} ;
3030use vss_client_ng:: util:: key_obfuscator:: KeyObfuscator ;
31- use vss_client_ng:: util:: retry:: {
32- ExponentialBackoffRetryPolicy , FilteredRetryPolicy , JitteredRetryPolicy ,
33- MaxAttemptsRetryPolicy , MaxTotalDelayRetryPolicy , RetryPolicy ,
34- } ;
3531use vss_client_ng:: util:: storable_builder:: { EntropySource , StorableBuilder } ;
3632
3733use crate :: io:: utils:: check_namespace_key_validity;
3834use crate :: runtime:: Runtime ;
3935
40- type CustomRetryPolicy = FilteredRetryPolicy <
41- JitteredRetryPolicy <
42- MaxTotalDelayRetryPolicy < MaxAttemptsRetryPolicy < ExponentialBackoffRetryPolicy < VssError > > > ,
43- > ,
44- Box < dyn Fn ( & VssError ) -> bool + ' static + Send + Sync > ,
45- > ;
46-
4736// We set this to a small number of threads that would still allow to make some progress if one
4837// would hit a blocking case
4938const INTERNAL_RUNTIME_WORKERS : usize = 2 ;
@@ -69,8 +58,8 @@ impl VssStore {
6958 pub ( crate ) fn new (
7059 base_url : String , store_id : String , vss_seed : [ u8 ; 32 ] ,
7160 header_provider : Arc < dyn VssHeaderProvider > , runtime : Arc < Runtime > ,
72- ) -> Self {
73- let inner = Arc :: new ( VssStoreInner :: new ( base_url, store_id, vss_seed, header_provider) ) ;
61+ ) -> io :: Result < Self > {
62+ let inner = Arc :: new ( VssStoreInner :: new ( base_url, store_id, vss_seed, header_provider) ? ) ;
7463 let next_version = AtomicU64 :: new ( 1 ) ;
7564 let internal_runtime = Some (
7665 tokio:: runtime:: Builder :: new_multi_thread ( )
@@ -86,7 +75,7 @@ impl VssStore {
8675 . unwrap ( ) ,
8776 ) ;
8877
89- Self { inner, next_version, runtime, internal_runtime }
78+ Ok ( Self { inner, next_version, runtime, internal_runtime } )
9079 }
9180
9281 // Same logic as for the obfuscated keys below, but just for locking, using the plaintext keys
@@ -314,7 +303,7 @@ impl Drop for VssStore {
314303}
315304
316305struct VssStoreInner {
317- client : VssClient < CustomRetryPolicy > ,
306+ client : VssClient ,
318307 store_id : String ,
319308 data_encryption_key : [ u8 ; 32 ] ,
320309 key_obfuscator : KeyObfuscator ,
@@ -327,26 +316,16 @@ impl VssStoreInner {
327316 pub ( crate ) fn new (
328317 base_url : String , store_id : String , vss_seed : [ u8 ; 32 ] ,
329318 header_provider : Arc < dyn VssHeaderProvider > ,
330- ) -> Self {
319+ ) -> io :: Result < Self > {
331320 let ( data_encryption_key, obfuscation_master_key) =
332321 derive_data_encryption_and_obfuscation_keys ( & vss_seed) ;
333322 let key_obfuscator = KeyObfuscator :: new ( obfuscation_master_key) ;
334- let retry_policy = ExponentialBackoffRetryPolicy :: new ( Duration :: from_millis ( 10 ) )
335- . with_max_attempts ( 10 )
336- . with_max_total_delay ( Duration :: from_secs ( 15 ) )
337- . with_max_jitter ( Duration :: from_millis ( 10 ) )
338- . skip_retry_on_error ( Box :: new ( |e : & VssError | {
339- matches ! (
340- e,
341- VssError :: NoSuchKeyError ( ..)
342- | VssError :: InvalidRequestError ( ..)
343- | VssError :: ConflictError ( ..)
344- )
345- } ) as _ ) ;
346-
347- let client = VssClient :: new_with_headers ( base_url, retry_policy, header_provider) ;
323+ let client = VssClient :: new_with_headers ( base_url, header_provider) . map_err ( |e| {
324+ let msg = format ! ( "Failed to setup VssClient: {}" , e) ;
325+ Error :: new ( ErrorKind :: Other , msg)
326+ } ) ?;
348327 let locks = Mutex :: new ( HashMap :: new ( ) ) ;
349- Self { client, store_id, data_encryption_key, key_obfuscator, locks }
328+ Ok ( Self { client, store_id, data_encryption_key, key_obfuscator, locks } )
350329 }
351330
352331 fn get_inner_lock_ref ( & self , locking_key : String ) -> Arc < tokio:: sync:: Mutex < u64 > > {
@@ -630,7 +609,7 @@ mod tests {
630609 let logger = Arc :: new ( Logger :: new_log_facade ( ) ) ;
631610 let runtime = Arc :: new ( Runtime :: new ( logger) . unwrap ( ) ) ;
632611 let vss_store =
633- VssStore :: new ( vss_base_url, rand_store_id, vss_seed, header_provider, runtime) ;
612+ VssStore :: new ( vss_base_url, rand_store_id, vss_seed, header_provider, runtime) . unwrap ( ) ;
634613
635614 do_read_write_remove_list_persist ( & vss_store) ;
636615 }
@@ -646,7 +625,7 @@ mod tests {
646625 let logger = Arc :: new ( Logger :: new_log_facade ( ) ) ;
647626 let runtime = Arc :: new ( Runtime :: new ( logger) . unwrap ( ) ) ;
648627 let vss_store =
649- VssStore :: new ( vss_base_url, rand_store_id, vss_seed, header_provider, runtime) ;
628+ VssStore :: new ( vss_base_url, rand_store_id, vss_seed, header_provider, runtime) . unwrap ( ) ;
650629
651630 do_read_write_remove_list_persist ( & vss_store) ;
652631 drop ( vss_store)
0 commit comments