Skip to content

Commit 064a193

Browse files
chore(kms-connector): improve error handling (#798)
* chore(kms-connector): improve error handling * chore(kms-connector): configurable reverted tx tracing
1 parent a6b2739 commit 064a193

File tree

12 files changed

+384
-77
lines changed

12 files changed

+384
-77
lines changed

kms-connector/Cargo.lock

Lines changed: 28 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

kms-connector/Cargo.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,11 @@ tfhe = "=1.3.2"
2828
actix-web = "=4.11.0"
2929
alloy = { version = "=1.0.9", default-features = false, features = [
3030
"essentials",
31-
"reqwest-rustls-tls",
32-
"std",
31+
"provider-debug-api",
3332
"provider-ws",
33+
"reqwest-rustls-tls",
3434
"signer-aws",
35+
"std",
3536
] }
3637
anyhow = { version = "=1.0.98", default-features = false }
3738
async-trait = { version = "=0.1.88", default-features = false }

kms-connector/config/tx-sender.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ private_key = "8da4ef21b864d2cc526dbdb2a120bd2874c36c9d0a1fb7f8c63d7f7a8b41de8f"
8282
# ENV: KMS_CONNECTOR_TX_RETRY_INTERVAL_MS
8383
# tx_retry_interval = 100
8484

85+
# Boolean to enable tracing of reverted transactions, using `debug_trace_transaction` RPC call (optional, defaults to true)
86+
# ENV: KMS_CONNECTOR_TRACE_REVERTED_TX
87+
# trace_reverted_tx = true
88+
8589
# The gas multiplier percentage after each transaction attempt (optional, defaults to 130%)
8690
# ENV: KMS_CONNECTOR_GAS_MULTIPLIER_PERCENT
8791
# gas_multiplier_percent = 130

kms-connector/crates/tx-sender/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ tracing.workspace = true
2424
connector-utils = { workspace = true, features = ["tests"] }
2525
rstest.workspace = true
2626
serial_test.workspace = true
27+
serde_json.workspace = true
2728
tempfile.workspace = true
2829
tokio-stream.workspace = true
2930
toml.workspace = true

kms-connector/crates/tx-sender/src/core/config/parsed.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ pub struct Config {
3535
pub tx_retries: u8,
3636
/// The interval between transaction retries.
3737
pub tx_retry_interval: Duration,
38+
/// Enable tracing of reverted transactions.
39+
pub trace_reverted_tx: bool,
3840
/// The batch size for KMS Core response processing.
3941
pub responses_batch_size: u8,
4042
/// The gas multiplier percentage after each transaction attempt.
@@ -110,6 +112,7 @@ impl Config {
110112
wallet,
111113
tx_retries: raw_config.tx_retries,
112114
tx_retry_interval,
115+
trace_reverted_tx: raw_config.trace_reverted_tx,
113116
responses_batch_size: raw_config.responses_batch_size,
114117
gas_multiplier_percent: raw_config.gas_multiplier_percent,
115118
task_limit: raw_config.task_limit,
@@ -164,6 +167,7 @@ mod tests {
164167
env::remove_var("KMS_CONNECTOR_RESPONSES_BATCH_SIZE");
165168
env::remove_var("KMS_CONNECTOR_TX_RETRIES");
166169
env::remove_var("KMS_CONNECTOR_TX_RETRY_INTERVAL_MS");
170+
env::remove_var("KMS_CONNECTOR_TRACE_REVERTED_TX");
167171
env::remove_var("KMS_CONNECTOR_GAS_MULTIPLIER_PERCENT");
168172
}
169173
}
@@ -249,6 +253,7 @@ mod tests {
249253
env::set_var("KMS_CONNECTOR_RESPONSES_BATCH_SIZE", "20");
250254
env::set_var("KMS_CONNECTOR_TX_RETRIES", "5");
251255
env::set_var("KMS_CONNECTOR_TX_RETRY_INTERVAL_MS", "200");
256+
env::set_var("KMS_CONNECTOR_TRACE_REVERTED_TX", "false");
252257
env::set_var("KMS_CONNECTOR_GAS_MULTIPLIER_PERCENT", "180");
253258
}
254259

@@ -270,6 +275,7 @@ mod tests {
270275
assert_eq!(config.responses_batch_size, 20);
271276
assert_eq!(config.tx_retries, 5);
272277
assert_eq!(config.tx_retry_interval, Duration::from_millis(200));
278+
assert!(!config.trace_reverted_tx);
273279
assert_eq!(config.gas_multiplier_percent, 180);
274280

275281
cleanup_env_vars();

kms-connector/crates/tx-sender/src/core/config/raw.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ pub struct RawConfig {
2929
pub tx_retries: u8,
3030
#[serde(default = "default_tx_retry_interval_ms")]
3131
pub tx_retry_interval_ms: u64,
32+
#[serde(default = "default_trace_reverted_tx")]
33+
pub trace_reverted_tx: bool,
3234
#[serde(default = "default_responses_batch_size")]
3335
pub responses_batch_size: u8,
3436
#[serde(default = "default_gas_multiplier_percent")]
@@ -57,12 +59,16 @@ fn default_tx_retry_interval_ms() -> u64 {
5759
100
5860
}
5961

62+
fn default_trace_reverted_tx() -> bool {
63+
true
64+
}
65+
6066
fn default_responses_batch_size() -> u8 {
6167
10
6268
}
6369

6470
fn default_gas_multiplier_percent() -> usize {
65-
130 // 130% gas increase by default
71+
300 // 300% gas increase by default
6672
}
6773

6874
impl DeserializeRawConfig for RawConfig {}
@@ -93,6 +99,7 @@ impl Default for RawConfig {
9399
aws_kms_config: None,
94100
tx_retries: default_tx_retries(),
95101
tx_retry_interval_ms: default_tx_retry_interval_ms(),
102+
trace_reverted_tx: default_trace_reverted_tx(),
96103
responses_batch_size: default_responses_batch_size(),
97104
gas_multiplier_percent: default_gas_multiplier_percent(),
98105
task_limit: default_task_limit(),

0 commit comments

Comments
 (0)