From df46e42b65f1f884d6fd6d792d7eca58c7ffb937 Mon Sep 17 00:00:00 2001 From: mertwole Date: Fri, 6 Sep 2024 05:11:45 +0000 Subject: [PATCH 1/5] Refactor --- utils-prometheus/src/lib.rs | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/utils-prometheus/src/lib.rs b/utils-prometheus/src/lib.rs index 36efa7de..590d6fc5 100644 --- a/utils-prometheus/src/lib.rs +++ b/utils-prometheus/src/lib.rs @@ -16,6 +16,18 @@ pub trait MeteredService { #[macro_export] macro_rules! impl_metered_service { + ($($impl:tt)*) => { + #[derive(::core::clone::Clone)] + $($impl)* + + $crate::impl_metered_service_inner! { + $($impl)* + } + } +} + +#[macro_export] +macro_rules! impl_metered_service_inner { ( $(#[$($struct_attributes:tt)*])* $vis:vis struct $struct_name:ident { @@ -26,15 +38,6 @@ macro_rules! impl_metered_service { $(,)? } ) => { - #[derive(Clone, Debug)] - $(#[$($struct_attributes)*])* - $vis struct $struct_name { - $( - $(#[$($attributes)*])* - $field_vis $field_name: $field_type - ),* - } - impl $crate::MeteredService for $struct_name { fn get_sources(&self) -> impl ::core::iter::IntoIterator< Item = ::std::boxed::Box From e09a027e70650222b4506cf9e1ace53f1c125f3f Mon Sep 17 00:00:00 2001 From: mertwole Date: Fri, 6 Sep 2024 05:21:06 +0000 Subject: [PATCH 2/5] Auto-implement new --- relayer/src/ethereum_checkpoints/metrics.rs | 4 ---- .../src/message_relayer/common/ethereum_block_listener.rs | 4 ---- .../message_relayer/common/ethereum_message_sender/era.rs | 4 ---- .../message_relayer/common/ethereum_message_sender/mod.rs | 4 ---- relayer/src/message_relayer/common/gear_block_listener.rs | 4 ---- .../src/message_relayer/common/merkle_root_extractor.rs | 4 ---- .../common/message_paid_event_extractor.rs | 4 ---- .../common/message_queued_event_extractor.rs | 4 ---- .../src/message_relayer/common/paid_messages_filter.rs | 4 ---- relayer/src/proof_storage/gear.rs | 4 ---- relayer/src/relay_merkle_roots.rs | 8 -------- utils-prometheus/src/lib.rs | 6 ++++++ 12 files changed, 6 insertions(+), 48 deletions(-) diff --git a/relayer/src/ethereum_checkpoints/metrics.rs b/relayer/src/ethereum_checkpoints/metrics.rs index e9de5177..2b41e551 100644 --- a/relayer/src/ethereum_checkpoints/metrics.rs +++ b/relayer/src/ethereum_checkpoints/metrics.rs @@ -12,10 +12,6 @@ impl_metered_service! { } impl Updates { - pub fn new() -> Self { - Self::new_inner().expect("Failed to create metrics") - } - fn new_inner() -> prometheus::Result { Ok(Self { fetched_sync_update_slot: IntGauge::new( diff --git a/relayer/src/message_relayer/common/ethereum_block_listener.rs b/relayer/src/message_relayer/common/ethereum_block_listener.rs index f02e4d0c..a4eb1fa3 100644 --- a/relayer/src/message_relayer/common/ethereum_block_listener.rs +++ b/relayer/src/message_relayer/common/ethereum_block_listener.rs @@ -31,10 +31,6 @@ impl_metered_service! { } impl Metrics { - fn new() -> Self { - Self::new_inner().expect("Failed to create metrics") - } - fn new_inner() -> prometheus::Result { Ok(Self { latest_block: IntGauge::new( diff --git a/relayer/src/message_relayer/common/ethereum_message_sender/era.rs b/relayer/src/message_relayer/common/ethereum_message_sender/era.rs index 7b92fd91..95e56f9b 100644 --- a/relayer/src/message_relayer/common/ethereum_message_sender/era.rs +++ b/relayer/src/message_relayer/common/ethereum_message_sender/era.rs @@ -32,10 +32,6 @@ impl_metered_service! { } impl Metrics { - pub fn new() -> Self { - Self::new_inner().expect("Failed to create metrics") - } - fn new_inner() -> prometheus::Result { Ok(Self { total_submitted_txs: IntCounter::new( diff --git a/relayer/src/message_relayer/common/ethereum_message_sender/mod.rs b/relayer/src/message_relayer/common/ethereum_message_sender/mod.rs index fca39c71..6e38d6e9 100644 --- a/relayer/src/message_relayer/common/ethereum_message_sender/mod.rs +++ b/relayer/src/message_relayer/common/ethereum_message_sender/mod.rs @@ -41,10 +41,6 @@ impl_metered_service! { } impl Metrics { - fn new() -> Self { - Self::new_inner().expect("Failed to create metrics") - } - fn new_inner() -> prometheus::Result { Ok(Self { pending_tx_count: IntGauge::new( diff --git a/relayer/src/message_relayer/common/gear_block_listener.rs b/relayer/src/message_relayer/common/gear_block_listener.rs index 3873554a..fe885454 100644 --- a/relayer/src/message_relayer/common/gear_block_listener.rs +++ b/relayer/src/message_relayer/common/gear_block_listener.rs @@ -31,10 +31,6 @@ impl_metered_service! { } impl Metrics { - fn new() -> Self { - Self::new_inner().expect("Failed to create metrics") - } - fn new_inner() -> prometheus::Result { Ok(Self { latest_block: IntGauge::new( diff --git a/relayer/src/message_relayer/common/merkle_root_extractor.rs b/relayer/src/message_relayer/common/merkle_root_extractor.rs index 6bcbd511..5e803dd4 100644 --- a/relayer/src/message_relayer/common/merkle_root_extractor.rs +++ b/relayer/src/message_relayer/common/merkle_root_extractor.rs @@ -28,10 +28,6 @@ impl_metered_service! { } impl Metrics { - fn new() -> Self { - Self::new_inner().expect("Failed to create metrics") - } - fn new_inner() -> prometheus::Result { Ok(Self { latest_merkle_root_for_block: IntGauge::new( diff --git a/relayer/src/message_relayer/common/message_paid_event_extractor.rs b/relayer/src/message_relayer/common/message_paid_event_extractor.rs index f14bbd0c..37755e0b 100644 --- a/relayer/src/message_relayer/common/message_paid_event_extractor.rs +++ b/relayer/src/message_relayer/common/message_paid_event_extractor.rs @@ -39,10 +39,6 @@ impl_metered_service! { } impl Metrics { - fn new() -> Self { - Self::new_inner().expect("Failed to create metrics") - } - fn new_inner() -> prometheus::Result { Ok(Self { total_messages_found: IntCounter::new( diff --git a/relayer/src/message_relayer/common/message_queued_event_extractor.rs b/relayer/src/message_relayer/common/message_queued_event_extractor.rs index 5aab0c5e..930c2a02 100644 --- a/relayer/src/message_relayer/common/message_queued_event_extractor.rs +++ b/relayer/src/message_relayer/common/message_queued_event_extractor.rs @@ -26,10 +26,6 @@ impl_metered_service! { } impl Metrics { - fn new() -> Self { - Self::new_inner().expect("Failed to create metrics") - } - fn new_inner() -> prometheus::Result { Ok(Self { total_messages_found: IntCounter::new( diff --git a/relayer/src/message_relayer/common/paid_messages_filter.rs b/relayer/src/message_relayer/common/paid_messages_filter.rs index 4ee40b26..ec5c53ee 100644 --- a/relayer/src/message_relayer/common/paid_messages_filter.rs +++ b/relayer/src/message_relayer/common/paid_messages_filter.rs @@ -28,10 +28,6 @@ impl_metered_service! { } impl Metrics { - fn new() -> Self { - Self::new_inner().expect("Failed to create metrics") - } - fn new_inner() -> prometheus::Result { Ok(Self { pending_messages_count: IntGauge::new( diff --git a/relayer/src/proof_storage/gear.rs b/relayer/src/proof_storage/gear.rs index b96300a4..63e0d82f 100644 --- a/relayer/src/proof_storage/gear.rs +++ b/relayer/src/proof_storage/gear.rs @@ -49,10 +49,6 @@ impl_metered_service! { } impl Metrics { - fn new() -> Self { - Self::new_inner().expect("Failed to create metrics") - } - fn new_inner() -> prometheus::Result { Ok(Self { fee_payer_balance: Gauge::new( diff --git a/relayer/src/relay_merkle_roots.rs b/relayer/src/relay_merkle_roots.rs index 0dd92bd4..13ecc48b 100644 --- a/relayer/src/relay_merkle_roots.rs +++ b/relayer/src/relay_merkle_roots.rs @@ -35,10 +35,6 @@ impl_metered_service! { } impl Metrics { - fn new() -> Self { - Self::new_inner().expect("Failed to create metrics") - } - fn new_inner() -> prometheus::Result { Ok(Self { latest_proven_era: IntGauge::new( @@ -282,10 +278,6 @@ impl_metered_service! { } impl EraMetrics { - fn new() -> Self { - Self::new_inner().expect("Failed to create metrics") - } - fn new_inner() -> prometheus::Result { Ok(Self { sealed_not_finalized_count: IntGauge::new( diff --git a/utils-prometheus/src/lib.rs b/utils-prometheus/src/lib.rs index 590d6fc5..f1e492e6 100644 --- a/utils-prometheus/src/lib.rs +++ b/utils-prometheus/src/lib.rs @@ -54,6 +54,12 @@ macro_rules! impl_metered_service_inner { ] } } + + impl $struct_name { + $vis fn new() -> Self { + Self::new_inner().expect("Failed to create metrics") + } + } } } From 5d79598405e286696470c0b1aed0cd6bc57a8807 Mon Sep 17 00:00:00 2001 From: mertwole Date: Fri, 6 Sep 2024 05:37:41 +0000 Subject: [PATCH 3/5] Inline constructors --- relayer/src/ethereum_checkpoints/metrics.rs | 25 +++++++++++++++---- .../common/ethereum_block_listener.rs | 5 +++- .../common/ethereum_message_sender/era.rs | 15 ++++++++--- .../common/ethereum_message_sender/mod.rs | 10 ++++++-- .../common/gear_block_listener.rs | 5 +++- .../common/merkle_root_extractor.rs | 5 +++- .../common/message_paid_event_extractor.rs | 5 +++- .../common/message_queued_event_extractor.rs | 5 +++- .../common/paid_messages_filter.rs | 5 +++- relayer/src/proof_storage/gear.rs | 5 +++- relayer/src/relay_merkle_roots.rs | 22 ++++++++++++---- utils-prometheus/src/lib.rs | 14 ++++++++--- 12 files changed, 95 insertions(+), 26 deletions(-) diff --git a/relayer/src/ethereum_checkpoints/metrics.rs b/relayer/src/ethereum_checkpoints/metrics.rs index 2b41e551..0decf007 100644 --- a/relayer/src/ethereum_checkpoints/metrics.rs +++ b/relayer/src/ethereum_checkpoints/metrics.rs @@ -3,11 +3,26 @@ use utils_prometheus::impl_metered_service; impl_metered_service! { pub struct Updates { - pub fetched_sync_update_slot: IntGauge, - pub total_fetched_finality_updates: IntCounter, - pub processed_finality_updates: IntCounter, - pub processed_committee_updates: IntCounter, - pub account_total_balance: IntGauge, + pub fetched_sync_update_slot: IntGauge = IntGauge::new( + "checkpoints_relayer_fetched_sync_update_slot", + "The slot of the last applied update", + ), + pub total_fetched_finality_updates: IntCounter = IntCounter::new( + "checkpoints_relayer_total_fetched_finality_updates", + "Total amount of fetched finality updates", + ), + pub processed_finality_updates: IntCounter = IntCounter::new( + "checkpoints_relayer_processed_finality_updates", + "Amount of processed finality updates", + ), + pub processed_committee_updates: IntCounter = IntCounter::new( + "checkpoints_relayer_processed_committee_updates", + "Amount of processed committee updates", + ), + pub account_total_balance: IntGauge = IntGauge::new( + "checkpoints_relayer_account_total_balance", + "The total balance of the account used to send messages", + ), } } diff --git a/relayer/src/message_relayer/common/ethereum_block_listener.rs b/relayer/src/message_relayer/common/ethereum_block_listener.rs index a4eb1fa3..618f3646 100644 --- a/relayer/src/message_relayer/common/ethereum_block_listener.rs +++ b/relayer/src/message_relayer/common/ethereum_block_listener.rs @@ -26,7 +26,10 @@ impl MeteredService for EthereumBlockListener { impl_metered_service! { struct Metrics { - latest_block: IntGauge, + latest_block: IntGauge = IntGauge::new( + "ethereum_block_listener_latest_block", + "Latest ethereum block discovered by listener", + ), } } diff --git a/relayer/src/message_relayer/common/ethereum_message_sender/era.rs b/relayer/src/message_relayer/common/ethereum_message_sender/era.rs index 95e56f9b..3c31525c 100644 --- a/relayer/src/message_relayer/common/ethereum_message_sender/era.rs +++ b/relayer/src/message_relayer/common/ethereum_message_sender/era.rs @@ -25,9 +25,18 @@ struct RelayMessagePendingTx { impl_metered_service! { pub struct Metrics { - total_submitted_txs: IntCounter, - total_failed_txs: IntCounter, - total_failed_txs_because_processed: IntCounter, + total_submitted_txs: IntCounter = IntCounter::new( + "ethereum_message_sender_total_submitted_txs", + "Total amount of txs sent to ethereum", + ), + total_failed_txs: IntCounter = IntCounter::new( + "ethereum_message_sender_total_failed_txs", + "Total amount of txs sent to ethereum and failed", + ), + total_failed_txs_because_processed: IntCounter = IntCounter::new( + "ethereum_message_sender_total_failed_txs_because_processed", + "Amount of txs sent to ethereum and failed because they've already been processed", + ), } } diff --git a/relayer/src/message_relayer/common/ethereum_message_sender/mod.rs b/relayer/src/message_relayer/common/ethereum_message_sender/mod.rs index 6e38d6e9..b30423b0 100644 --- a/relayer/src/message_relayer/common/ethereum_message_sender/mod.rs +++ b/relayer/src/message_relayer/common/ethereum_message_sender/mod.rs @@ -35,8 +35,14 @@ impl MeteredService for EthereumMessageSender { impl_metered_service! { struct Metrics { - pending_tx_count: IntGauge, - fee_payer_balance: Gauge + pending_tx_count: IntGauge = IntGauge::new( + "ethereum_message_sender_pending_tx_count", + "Amount of txs pending finalization on ethereum", + ), + fee_payer_balance: Gauge = Gauge::new( + "ethereum_message_sender_fee_payer_balance", + "Transaction fee payer balance", + ) } } diff --git a/relayer/src/message_relayer/common/gear_block_listener.rs b/relayer/src/message_relayer/common/gear_block_listener.rs index fe885454..72af1d15 100644 --- a/relayer/src/message_relayer/common/gear_block_listener.rs +++ b/relayer/src/message_relayer/common/gear_block_listener.rs @@ -26,7 +26,10 @@ impl MeteredService for GearBlockListener { impl_metered_service! { struct Metrics { - latest_block: IntGauge, + latest_block: IntGauge = IntGauge::new( + "gear_block_listener_latest_block", + "Latest gear block discovered by gear block listener", + ) } } diff --git a/relayer/src/message_relayer/common/merkle_root_extractor.rs b/relayer/src/message_relayer/common/merkle_root_extractor.rs index 5e803dd4..17c9c91a 100644 --- a/relayer/src/message_relayer/common/merkle_root_extractor.rs +++ b/relayer/src/message_relayer/common/merkle_root_extractor.rs @@ -23,7 +23,10 @@ impl MeteredService for MerkleRootExtractor { impl_metered_service! { struct Metrics { - latest_merkle_root_for_block: IntGauge + latest_merkle_root_for_block: IntGauge = IntGauge::new( + "merkle_root_extractor_latest_merkle_root_for_block", + "Latest gear block present in found merkle roots", + ) } } diff --git a/relayer/src/message_relayer/common/message_paid_event_extractor.rs b/relayer/src/message_relayer/common/message_paid_event_extractor.rs index 37755e0b..80238a46 100644 --- a/relayer/src/message_relayer/common/message_paid_event_extractor.rs +++ b/relayer/src/message_relayer/common/message_paid_event_extractor.rs @@ -34,7 +34,10 @@ impl MeteredService for MessagePaidEventExtractor { impl_metered_service! { struct Metrics { - total_messages_found: IntCounter, + total_messages_found: IntCounter = IntCounter::new( + "message_paid_event_extractor_total_messages_found", + "Total amount of paid messages discovered", + ), } } diff --git a/relayer/src/message_relayer/common/message_queued_event_extractor.rs b/relayer/src/message_relayer/common/message_queued_event_extractor.rs index 930c2a02..33d33c0a 100644 --- a/relayer/src/message_relayer/common/message_queued_event_extractor.rs +++ b/relayer/src/message_relayer/common/message_queued_event_extractor.rs @@ -21,7 +21,10 @@ impl MeteredService for MessageQueuedEventExtractor { impl_metered_service! { struct Metrics { - total_messages_found: IntCounter, + total_messages_found: IntCounter = IntCounter::new( + "message_queued_event_extractor_total_messages_found", + "Total amount of messages discovered", + ), } } diff --git a/relayer/src/message_relayer/common/paid_messages_filter.rs b/relayer/src/message_relayer/common/paid_messages_filter.rs index ec5c53ee..05676b7a 100644 --- a/relayer/src/message_relayer/common/paid_messages_filter.rs +++ b/relayer/src/message_relayer/common/paid_messages_filter.rs @@ -23,7 +23,10 @@ impl MeteredService for PaidMessagesFilter { impl_metered_service! { struct Metrics { - pending_messages_count: IntGauge + pending_messages_count: IntGauge = IntGauge::new( + "paid_messages_filter_pending_messages_count", + "Amount of discovered but not paid messages", + ) } } diff --git a/relayer/src/proof_storage/gear.rs b/relayer/src/proof_storage/gear.rs index 63e0d82f..17ba0ced 100644 --- a/relayer/src/proof_storage/gear.rs +++ b/relayer/src/proof_storage/gear.rs @@ -44,7 +44,10 @@ struct Cache { impl_metered_service! { struct Metrics { - fee_payer_balance: Gauge + fee_payer_balance: Gauge = Gauge::new( + "gear_proof_storage_fee_payer_balance", + "Gear proof storage fee payer balance", + ) } } diff --git a/relayer/src/relay_merkle_roots.rs b/relayer/src/relay_merkle_roots.rs index 13ecc48b..c361d7ed 100644 --- a/relayer/src/relay_merkle_roots.rs +++ b/relayer/src/relay_merkle_roots.rs @@ -28,9 +28,18 @@ pub struct MerkleRootRelayer { impl_metered_service! { struct Metrics { - latest_proven_era: IntGauge, - latest_observed_gear_era: IntGauge, - fee_payer_balance: Gauge + latest_proven_era: IntGauge = IntGauge::new( + "merkle_root_relayer_latest_proven_era", + "Latest proven era number", + ), + latest_observed_gear_era: IntGauge = IntGauge::new( + "merkle_root_relayer_latest_observed_gear_era", + "Latest era number observed by relayer", + ), + fee_payer_balance: Gauge = Gauge::new( + "merkle_root_relayer_fee_payer_balance", + "Transaction fee payer balance", + ) } } @@ -272,8 +281,11 @@ impl MeteredService for Eras { impl_metered_service! { struct EraMetrics { - sealed_not_finalized_count: IntGauge, - last_sealed_era: IntGauge + sealed_not_finalized_count: IntGauge = IntGauge::new( + "sealed_not_finalized_count", + "Amount of eras that have been sealed but tx is not yet finalized by ethereum", + ), + last_sealed_era: IntGauge = IntGauge::new("last_sealed_era", "Latest era that have been sealed"), } } diff --git a/utils-prometheus/src/lib.rs b/utils-prometheus/src/lib.rs index f1e492e6..70b3bf0c 100644 --- a/utils-prometheus/src/lib.rs +++ b/utils-prometheus/src/lib.rs @@ -17,9 +17,6 @@ pub trait MeteredService { #[macro_export] macro_rules! impl_metered_service { ($($impl:tt)*) => { - #[derive(::core::clone::Clone)] - $($impl)* - $crate::impl_metered_service_inner! { $($impl)* } @@ -33,11 +30,20 @@ macro_rules! impl_metered_service_inner { $vis:vis struct $struct_name:ident { $( $(#[$($attributes:tt)*])* - $field_vis:vis $field_name:ident: $field_type:ty + $field_vis:vis $field_name:ident : $field_type:ty = $constructor:expr ),* $(,)? } ) => { + #[derive(Clone)] + $(#[$($struct_attributes)*])* + $vis struct $struct_name { + $( + $(#[$($attributes)*])* + $field_vis $field_name: $field_type + ),* + } + impl $crate::MeteredService for $struct_name { fn get_sources(&self) -> impl ::core::iter::IntoIterator< Item = ::std::boxed::Box From 0ad538be71074398e1d869ff675a24d778def149 Mon Sep 17 00:00:00 2001 From: mertwole Date: Fri, 6 Sep 2024 05:44:12 +0000 Subject: [PATCH 4/5] Remove boilerplate --- relayer/src/ethereum_checkpoints/metrics.rs | 27 ---------------- .../common/ethereum_block_listener.rs | 11 ------- .../common/ethereum_message_sender/era.rs | 19 ------------ .../common/ethereum_message_sender/mod.rs | 15 --------- .../common/gear_block_listener.rs | 11 ------- .../common/merkle_root_extractor.rs | 11 ------- .../common/message_paid_event_extractor.rs | 11 ------- .../common/message_queued_event_extractor.rs | 11 ------- .../common/paid_messages_filter.rs | 11 ------- relayer/src/proof_storage/gear.rs | 11 ------- relayer/src/relay_merkle_roots.rs | 31 ------------------- utils-prometheus/src/lib.rs | 10 +++++- 12 files changed, 9 insertions(+), 170 deletions(-) diff --git a/relayer/src/ethereum_checkpoints/metrics.rs b/relayer/src/ethereum_checkpoints/metrics.rs index 0decf007..9c28875b 100644 --- a/relayer/src/ethereum_checkpoints/metrics.rs +++ b/relayer/src/ethereum_checkpoints/metrics.rs @@ -25,30 +25,3 @@ impl_metered_service! { ), } } - -impl Updates { - fn new_inner() -> prometheus::Result { - Ok(Self { - fetched_sync_update_slot: IntGauge::new( - "checkpoints_relayer_fetched_sync_update_slot", - "The slot of the last applied update", - )?, - total_fetched_finality_updates: IntCounter::new( - "checkpoints_relayer_total_fetched_finality_updates", - "Total amount of fetched finality updates", - )?, - processed_finality_updates: IntCounter::new( - "checkpoints_relayer_processed_finality_updates", - "Amount of processed finality updates", - )?, - processed_committee_updates: IntCounter::new( - "checkpoints_relayer_processed_committee_updates", - "Amount of processed committee updates", - )?, - account_total_balance: IntGauge::new( - "checkpoints_relayer_account_total_balance", - "The total balance of the account used to send messages", - )?, - }) - } -} diff --git a/relayer/src/message_relayer/common/ethereum_block_listener.rs b/relayer/src/message_relayer/common/ethereum_block_listener.rs index 618f3646..cb02f8de 100644 --- a/relayer/src/message_relayer/common/ethereum_block_listener.rs +++ b/relayer/src/message_relayer/common/ethereum_block_listener.rs @@ -33,17 +33,6 @@ impl_metered_service! { } } -impl Metrics { - fn new_inner() -> prometheus::Result { - Ok(Self { - latest_block: IntGauge::new( - "ethereum_block_listener_latest_block", - "Latest ethereum block discovered by listener", - )?, - }) - } -} - impl EthereumBlockListener { pub fn new(eth_api: EthApi, from_block: u64) -> Self { Self { diff --git a/relayer/src/message_relayer/common/ethereum_message_sender/era.rs b/relayer/src/message_relayer/common/ethereum_message_sender/era.rs index 3c31525c..c539d019 100644 --- a/relayer/src/message_relayer/common/ethereum_message_sender/era.rs +++ b/relayer/src/message_relayer/common/ethereum_message_sender/era.rs @@ -40,25 +40,6 @@ impl_metered_service! { } } -impl Metrics { - fn new_inner() -> prometheus::Result { - Ok(Self { - total_submitted_txs: IntCounter::new( - "ethereum_message_sender_total_submitted_txs", - "Total amount of txs sent to ethereum", - )?, - total_failed_txs: IntCounter::new( - "ethereum_message_sender_total_failed_txs", - "Total amount of txs sent to ethereum and failed", - )?, - total_failed_txs_because_processed: IntCounter::new( - "ethereum_message_sender_total_failed_txs_because_processed", - "Amount of txs sent to ethereum and failed because they've already been processed", - )?, - }) - } -} - impl Era { pub fn new(metrics: Metrics) -> Self { Self { diff --git a/relayer/src/message_relayer/common/ethereum_message_sender/mod.rs b/relayer/src/message_relayer/common/ethereum_message_sender/mod.rs index b30423b0..a0df272f 100644 --- a/relayer/src/message_relayer/common/ethereum_message_sender/mod.rs +++ b/relayer/src/message_relayer/common/ethereum_message_sender/mod.rs @@ -46,21 +46,6 @@ impl_metered_service! { } } -impl Metrics { - fn new_inner() -> prometheus::Result { - Ok(Self { - pending_tx_count: IntGauge::new( - "ethereum_message_sender_pending_tx_count", - "Amount of txs pending finalization on ethereum", - )?, - fee_payer_balance: Gauge::new( - "ethereum_message_sender_fee_payer_balance", - "Transaction fee payer balance", - )?, - }) - } -} - impl EthereumMessageSender { pub fn new(eth_api: EthApi, gear_api: GearApi) -> Self { Self { diff --git a/relayer/src/message_relayer/common/gear_block_listener.rs b/relayer/src/message_relayer/common/gear_block_listener.rs index 72af1d15..5e1b932a 100644 --- a/relayer/src/message_relayer/common/gear_block_listener.rs +++ b/relayer/src/message_relayer/common/gear_block_listener.rs @@ -33,17 +33,6 @@ impl_metered_service! { } } -impl Metrics { - fn new_inner() -> prometheus::Result { - Ok(Self { - latest_block: IntGauge::new( - "gear_block_listener_latest_block", - "Latest gear block discovered by gear block listener", - )?, - }) - } -} - impl GearBlockListener { pub fn new(gear_api: GearApi, from_block: u32) -> Self { Self { diff --git a/relayer/src/message_relayer/common/merkle_root_extractor.rs b/relayer/src/message_relayer/common/merkle_root_extractor.rs index 17c9c91a..42b55ac6 100644 --- a/relayer/src/message_relayer/common/merkle_root_extractor.rs +++ b/relayer/src/message_relayer/common/merkle_root_extractor.rs @@ -30,17 +30,6 @@ impl_metered_service! { } } -impl Metrics { - fn new_inner() -> prometheus::Result { - Ok(Self { - latest_merkle_root_for_block: IntGauge::new( - "merkle_root_extractor_latest_merkle_root_for_block", - "Latest gear block present in found merkle roots", - )?, - }) - } -} - impl MerkleRootExtractor { pub fn new(eth_api: EthApi, gear_api: GearApi) -> Self { Self { diff --git a/relayer/src/message_relayer/common/message_paid_event_extractor.rs b/relayer/src/message_relayer/common/message_paid_event_extractor.rs index 80238a46..1a0e0cc8 100644 --- a/relayer/src/message_relayer/common/message_paid_event_extractor.rs +++ b/relayer/src/message_relayer/common/message_paid_event_extractor.rs @@ -41,17 +41,6 @@ impl_metered_service! { } } -impl Metrics { - fn new_inner() -> prometheus::Result { - Ok(Self { - total_messages_found: IntCounter::new( - "message_paid_event_extractor_total_messages_found", - "Total amount of paid messages discovered", - )?, - }) - } -} - impl MessagePaidEventExtractor { pub fn new(gear_api: GearApi, bridging_payment_address: H256) -> Self { Self { diff --git a/relayer/src/message_relayer/common/message_queued_event_extractor.rs b/relayer/src/message_relayer/common/message_queued_event_extractor.rs index 33d33c0a..140afb4e 100644 --- a/relayer/src/message_relayer/common/message_queued_event_extractor.rs +++ b/relayer/src/message_relayer/common/message_queued_event_extractor.rs @@ -28,17 +28,6 @@ impl_metered_service! { } } -impl Metrics { - fn new_inner() -> prometheus::Result { - Ok(Self { - total_messages_found: IntCounter::new( - "message_queued_event_extractor_total_messages_found", - "Total amount of messages discovered", - )?, - }) - } -} - impl MessageQueuedEventExtractor { pub fn new(gear_api: GearApi) -> Self { Self { diff --git a/relayer/src/message_relayer/common/paid_messages_filter.rs b/relayer/src/message_relayer/common/paid_messages_filter.rs index 05676b7a..cb8399fe 100644 --- a/relayer/src/message_relayer/common/paid_messages_filter.rs +++ b/relayer/src/message_relayer/common/paid_messages_filter.rs @@ -30,17 +30,6 @@ impl_metered_service! { } } -impl Metrics { - fn new_inner() -> prometheus::Result { - Ok(Self { - pending_messages_count: IntGauge::new( - "paid_messages_filter_pending_messages_count", - "Amount of discovered but not paid messages", - )?, - }) - } -} - impl PaidMessagesFilter { pub fn new() -> Self { Self { diff --git a/relayer/src/proof_storage/gear.rs b/relayer/src/proof_storage/gear.rs index 17ba0ced..919a4cb1 100644 --- a/relayer/src/proof_storage/gear.rs +++ b/relayer/src/proof_storage/gear.rs @@ -51,17 +51,6 @@ impl_metered_service! { } } -impl Metrics { - fn new_inner() -> prometheus::Result { - Ok(Self { - fee_payer_balance: Gauge::new( - "gear_proof_storage_fee_payer_balance", - "Gear proof storage fee payer balance", - )?, - }) - } -} - impl MeteredService for GearProofStorage { fn get_sources(&self) -> impl IntoIterator> { self.metrics.get_sources() diff --git a/relayer/src/relay_merkle_roots.rs b/relayer/src/relay_merkle_roots.rs index c361d7ed..fdff7f44 100644 --- a/relayer/src/relay_merkle_roots.rs +++ b/relayer/src/relay_merkle_roots.rs @@ -43,25 +43,6 @@ impl_metered_service! { } } -impl Metrics { - fn new_inner() -> prometheus::Result { - Ok(Self { - latest_proven_era: IntGauge::new( - "merkle_root_relayer_latest_proven_era", - "Latest proven era number", - )?, - latest_observed_gear_era: IntGauge::new( - "merkle_root_relayer_latest_observed_gear_era", - "Latest era number observed by relayer", - )?, - fee_payer_balance: Gauge::new( - "merkle_root_relayer_fee_payer_balance", - "Transaction fee payer balance", - )?, - }) - } -} - impl MeteredService for MerkleRootRelayer { fn get_sources(&self) -> impl IntoIterator> { self.metrics @@ -289,18 +270,6 @@ impl_metered_service! { } } -impl EraMetrics { - fn new_inner() -> prometheus::Result { - Ok(Self { - sealed_not_finalized_count: IntGauge::new( - "sealed_not_finalized_count", - "Amount of eras that have been sealed but tx is not yet finalized by ethereum", - )?, - last_sealed_era: IntGauge::new("last_sealed_era", "Latest era that have been sealed")?, - }) - } -} - impl Eras { pub async fn new( last_sealed: Option, diff --git a/utils-prometheus/src/lib.rs b/utils-prometheus/src/lib.rs index 70b3bf0c..a5a61128 100644 --- a/utils-prometheus/src/lib.rs +++ b/utils-prometheus/src/lib.rs @@ -63,7 +63,15 @@ macro_rules! impl_metered_service_inner { impl $struct_name { $vis fn new() -> Self { - Self::new_inner().expect("Failed to create metrics") + let new_inner = || -> prometheus::Result { + Ok(Self { + $( + $field_name: $constructor ? + ),* + }) + }; + + new_inner().expect("Failed to create metrics") } } } From 096e96f07b396c0f140c8096a16ee3d51f2fae8d Mon Sep 17 00:00:00 2001 From: mertwole Date: Fri, 6 Sep 2024 05:47:55 +0000 Subject: [PATCH 5/5] Remove excess macro --- utils-prometheus/src/lib.rs | 9 --------- 1 file changed, 9 deletions(-) diff --git a/utils-prometheus/src/lib.rs b/utils-prometheus/src/lib.rs index a5a61128..22d3ac78 100644 --- a/utils-prometheus/src/lib.rs +++ b/utils-prometheus/src/lib.rs @@ -16,15 +16,6 @@ pub trait MeteredService { #[macro_export] macro_rules! impl_metered_service { - ($($impl:tt)*) => { - $crate::impl_metered_service_inner! { - $($impl)* - } - } -} - -#[macro_export] -macro_rules! impl_metered_service_inner { ( $(#[$($struct_attributes:tt)*])* $vis:vis struct $struct_name:ident {