Skip to content

Commit 5b7b097

Browse files
devin-ai-integration[bot]Jayant Krishnamurthy
andcommitted
refactor: simplify KeeperMetrics::new to use Vec<(String, Address)>
Co-Authored-By: Jayant Krishnamurthy <[email protected]>
1 parent 821f6f1 commit 5b7b097

File tree

2 files changed

+60
-72
lines changed

2 files changed

+60
-72
lines changed

apps/fortuna/src/command/run.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,11 @@ pub async fn run_keeper(
104104
) -> Result<()> {
105105
let mut handles = Vec::new();
106106
let keeper_metrics = Arc::new({
107-
let chain_ids: Vec<String> = chains.keys().map(|id| id.clone()).collect();
108-
let provider_addresses: Vec<Address> = chains.values().map(|state| state.provider_address).collect();
109-
KeeperMetrics::new(metrics_registry.clone(), chain_ids, provider_addresses).await
107+
let chain_labels: Vec<(String, Address)> = chains
108+
.iter()
109+
.map(|(id, state)| (id.clone(), state.provider_address))
110+
.collect();
111+
KeeperMetrics::new(metrics_registry.clone(), chain_labels).await
110112
});
111113
for (chain_id, chain_config) in chains {
112114
let chain_eth_config = config

apps/fortuna/src/keeper.rs

Lines changed: 55 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -130,78 +130,10 @@ impl Default for KeeperMetrics {
130130
impl KeeperMetrics {
131131
pub async fn new(
132132
registry: Arc<RwLock<Registry>>,
133-
chain_ids: Vec<String>,
134-
provider_addresses: Vec<Address>,
133+
chain_labels: Vec<(String, Address)>,
135134
) -> Self {
136135
let mut writable_registry = registry.write().await;
137136
let keeper_metrics = KeeperMetrics::default();
138-
139-
// Initialize metrics for each chain_id and provider_address pair
140-
for (chain_id, provider_address) in chain_ids.into_iter().zip(provider_addresses) {
141-
let account_label = AccountLabel {
142-
chain_id,
143-
address: provider_address.to_string(),
144-
};
145-
146-
// Pre-initialize metrics with the account label
147-
let _ = keeper_metrics
148-
.current_sequence_number
149-
.get_or_create(&account_label);
150-
let _ = keeper_metrics
151-
.end_sequence_number
152-
.get_or_create(&account_label);
153-
let _ = keeper_metrics
154-
.balance
155-
.get_or_create(&account_label);
156-
let _ = keeper_metrics
157-
.collected_fee
158-
.get_or_create(&account_label);
159-
let _ = keeper_metrics
160-
.current_fee
161-
.get_or_create(&account_label);
162-
let _ = keeper_metrics
163-
.target_provider_fee
164-
.get_or_create(&account_label);
165-
let _ = keeper_metrics
166-
.total_gas_spent
167-
.get_or_create(&account_label);
168-
let _ = keeper_metrics
169-
.total_gas_fee_spent
170-
.get_or_create(&account_label);
171-
let _ = keeper_metrics
172-
.requests
173-
.get_or_create(&account_label);
174-
let _ = keeper_metrics
175-
.requests_processed
176-
.get_or_create(&account_label);
177-
let _ = keeper_metrics
178-
.requests_processed_success
179-
.get_or_create(&account_label);
180-
let _ = keeper_metrics
181-
.requests_processed_failure
182-
.get_or_create(&account_label);
183-
let _ = keeper_metrics
184-
.requests_reprocessed
185-
.get_or_create(&account_label);
186-
let _ = keeper_metrics
187-
.reveals
188-
.get_or_create(&account_label);
189-
let _ = keeper_metrics
190-
.request_duration_ms
191-
.get_or_create(&account_label);
192-
let _ = keeper_metrics
193-
.retry_count
194-
.get_or_create(&account_label);
195-
let _ = keeper_metrics
196-
.final_gas_multiplier
197-
.get_or_create(&account_label);
198-
let _ = keeper_metrics
199-
.final_fee_multiplier
200-
.get_or_create(&account_label);
201-
let _ = keeper_metrics
202-
.gas_price_estimate
203-
.get_or_create(&account_label);
204-
}
205137

206138
writable_registry.register(
207139
"current_sequence_number",
@@ -317,6 +249,60 @@ impl KeeperMetrics {
317249
keeper_metrics.gas_price_estimate.clone(),
318250
);
319251

252+
// *Important*: When adding a new metric:
253+
// 1. Register it above using `writable_registry.register(...)`
254+
// 2. Add a get_or_create call in the loop below to initialize it for each chain/provider pair
255+
for (chain_id, provider_address) in chain_labels {
256+
let account_label = AccountLabel {
257+
chain_id,
258+
address: provider_address.to_string(),
259+
};
260+
261+
let _ = keeper_metrics
262+
.current_sequence_number
263+
.get_or_create(&account_label);
264+
let _ = keeper_metrics
265+
.end_sequence_number
266+
.get_or_create(&account_label);
267+
let _ = keeper_metrics.balance.get_or_create(&account_label);
268+
let _ = keeper_metrics.collected_fee.get_or_create(&account_label);
269+
let _ = keeper_metrics.current_fee.get_or_create(&account_label);
270+
let _ = keeper_metrics
271+
.target_provider_fee
272+
.get_or_create(&account_label);
273+
let _ = keeper_metrics.total_gas_spent.get_or_create(&account_label);
274+
let _ = keeper_metrics
275+
.total_gas_fee_spent
276+
.get_or_create(&account_label);
277+
let _ = keeper_metrics.requests.get_or_create(&account_label);
278+
let _ = keeper_metrics
279+
.requests_processed
280+
.get_or_create(&account_label);
281+
let _ = keeper_metrics
282+
.requests_processed_success
283+
.get_or_create(&account_label);
284+
let _ = keeper_metrics
285+
.requests_processed_failure
286+
.get_or_create(&account_label);
287+
let _ = keeper_metrics
288+
.requests_reprocessed
289+
.get_or_create(&account_label);
290+
let _ = keeper_metrics.reveals.get_or_create(&account_label);
291+
let _ = keeper_metrics
292+
.request_duration_ms
293+
.get_or_create(&account_label);
294+
let _ = keeper_metrics.retry_count.get_or_create(&account_label);
295+
let _ = keeper_metrics
296+
.final_gas_multiplier
297+
.get_or_create(&account_label);
298+
let _ = keeper_metrics
299+
.final_fee_multiplier
300+
.get_or_create(&account_label);
301+
let _ = keeper_metrics
302+
.gas_price_estimate
303+
.get_or_create(&account_label);
304+
}
305+
320306
keeper_metrics
321307
}
322308
}

0 commit comments

Comments
 (0)