From 5ec00d80eb318b7b7a23a1cbff34ab55d0d45f07 Mon Sep 17 00:00:00 2001 From: Frederik Rothenberger Date: Fri, 27 Sep 2024 09:13:11 +0200 Subject: [PATCH] Use stable BTreeMap directly to report stats When implementing the original stats feature, I missed that `len` exists on the stable `BTreeMap`, leading to a much more complicated implementation for keeping track of the number of event stats related data. This is the first step of simplifying again (we need to wait one release before removing the duplicated counters for rollback compatibility). --- src/internet_identity/src/http/metrics.rs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/internet_identity/src/http/metrics.rs b/src/internet_identity/src/http/metrics.rs index b0ec2ff92c..c6e24f6f68 100644 --- a/src/internet_identity/src/http/metrics.rs +++ b/src/internet_identity/src/http/metrics.rs @@ -38,6 +38,16 @@ fn encode_metrics(w: &mut MetricsEncoder>) -> std::io::Result<()> { (hi - 1) as f64, "The highest Identity Anchor that can be served by this canister.", )?; + w.encode_gauge( + "internet_identity_event_data_count", + storage.event_data.len() as f64, + "Number of events stored in event_data map.", + )?; + w.encode_gauge( + "internet_identity_event_aggregations_count", + storage.event_aggregations.len() as f64, + "Number of entries in the event_aggregations map.", + )?; let mut virtual_memory_stats_builder = w.gauge_vec( "internet_identity_virtual_memory_size_pages", @@ -201,16 +211,6 @@ fn persistent_state_metrics( Duration::from_nanos(register_rate_limit_config.time_per_token_ns).as_secs() as f64, "Min number of seconds between two register calls to not exceed the rate limit (sustained).", )?; - w.encode_gauge( - "internet_identity_event_data_count", - persistent_state.event_data_count as f64, - "Number of events stored in event_data map.", - )?; - w.encode_gauge( - "internet_identity_event_aggregations_count", - persistent_state.event_aggregations_count as f64, - "Number of entries in the event_aggregations map.", - )?; let stats = &persistent_state.active_anchor_stats; if let Some(ref daily_active_anchor_stats) = stats.completed.daily_events {