@@ -130,78 +130,10 @@ impl Default for KeeperMetrics {
130130impl  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