Skip to content

Commit b597272

Browse files
committed
Account for Retry being handled internally
We recently dropped the `Retry` logic in `vss-client-ng`, and rather now lean on `reqwest`'s retry logic. Here, we account for the corresponding interface changes.
1 parent 586a52b commit b597272

File tree

3 files changed

+19
-35
lines changed

3 files changed

+19
-35
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ serde_json = { version = "1.0.128", default-features = false, features = ["std"]
6666
log = { version = "0.4.22", default-features = false, features = ["std"]}
6767

6868
#vss-client-ng = "0.3"
69-
vss-client-ng = { git = "https://github.com/tnull/vss-client", rev = "98ac5e171ef1ab970bbc58cd995ffc1e615421d1" }
69+
vss-client-ng = { git = "https://github.com/tnull/vss-client", rev = "e6d8e57a949bff3cf511aef258b7aa2c681e35c9" }
7070
prost = { version = "0.11.6", default-features = false}
7171

7272
[target.'cfg(windows)'.dependencies]

src/builder.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -732,7 +732,12 @@ impl NodeBuilder {
732732
let vss_seed_bytes: [u8; 32] = vss_xprv.private_key.secret_bytes();
733733

734734
let vss_store =
735-
VssStore::new(vss_url, store_id, vss_seed_bytes, header_provider, Arc::clone(&runtime));
735+
VssStore::new(vss_url, store_id, vss_seed_bytes, header_provider, Arc::clone(&runtime))
736+
.map_err(|e| {
737+
log_error!(logger, "Failed to setup store: {}", e);
738+
BuildError::KVStoreSetupFailed
739+
})?;
740+
736741
build_with_store_internal(
737742
config,
738743
self.chain_data_source_config.as_ref(),

src/io/vss_store.rs

Lines changed: 12 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -28,22 +28,11 @@ use vss_client_ng::types::{
2828
Storable,
2929
};
3030
use vss_client_ng::util::key_obfuscator::KeyObfuscator;
31-
use vss_client_ng::util::retry::{
32-
ExponentialBackoffRetryPolicy, FilteredRetryPolicy, JitteredRetryPolicy,
33-
MaxAttemptsRetryPolicy, MaxTotalDelayRetryPolicy, RetryPolicy,
34-
};
3531
use vss_client_ng::util::storable_builder::{EntropySource, StorableBuilder};
3632

3733
use crate::io::utils::check_namespace_key_validity;
3834
use 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
4938
const 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

316305
struct 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>> {
@@ -631,7 +610,7 @@ mod tests {
631610
let logger = Arc::new(Logger::new_log_facade());
632611
let runtime = Arc::new(Runtime::new(logger).unwrap());
633612
let vss_store =
634-
VssStore::new(vss_base_url, rand_store_id, vss_seed, header_provider, runtime);
613+
VssStore::new(vss_base_url, rand_store_id, vss_seed, header_provider, runtime).unwrap();
635614

636615
do_read_write_remove_list_persist(&vss_store);
637616
}
@@ -647,7 +626,7 @@ mod tests {
647626
let logger = Arc::new(Logger::new_log_facade());
648627
let runtime = Arc::new(Runtime::new(logger).unwrap());
649628
let vss_store =
650-
VssStore::new(vss_base_url, rand_store_id, vss_seed, header_provider, runtime);
629+
VssStore::new(vss_base_url, rand_store_id, vss_seed, header_provider, runtime).unwrap();
651630

652631
do_read_write_remove_list_persist(&vss_store);
653632
drop(vss_store)

0 commit comments

Comments
 (0)