From d8f98b3dcbbc27a358bec8d7e02126d0d986f5c4 Mon Sep 17 00:00:00 2001 From: "Jeff Washington (jwash)" <75863576+jeffwashington@users.noreply.github.com> Date: Mon, 27 Sep 2021 08:25:23 -0500 Subject: [PATCH] AcctIdx: avoid crazy #s on ms_per_age stat (#20184) --- runtime/src/bucket_map_holder_stats.rs | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/runtime/src/bucket_map_holder_stats.rs b/runtime/src/bucket_map_holder_stats.rs index e26bab35f7..bd56841ef9 100644 --- a/runtime/src/bucket_map_holder_stats.rs +++ b/runtime/src/bucket_map_holder_stats.rs @@ -80,19 +80,20 @@ impl BucketMapHolderStats { } fn ms_per_age(&self, storage: &BucketMapHolder) -> u64 { - let elapsed_ms = self.get_elapsed_ms_and_reset(); - let mut age_now = storage.current_age(); - let last_age = self.last_age.swap(age_now, Ordering::Relaxed); - if last_age > age_now { - // age may have wrapped - age_now += u8::MAX; - } - let age_delta = age_now.saturating_sub(last_age) as u64; - if age_delta > 0 { - elapsed_ms / age_delta - } else { - 0 + if !storage.get_startup() { + let elapsed_ms = self.get_elapsed_ms_and_reset(); + let mut age_now = storage.current_age(); + let last_age = self.last_age.swap(age_now, Ordering::Relaxed); + if last_age > age_now { + // age may have wrapped + age_now += u8::MAX; + } + let age_delta = age_now.saturating_sub(last_age) as u64; + if age_delta > 0 { + return elapsed_ms / age_delta; + } } + 0 // avoid crazy numbers } pub fn remaining_until_next_interval(&self) -> u64 {