AcctIdx: avoid crazy #s on ms_per_age stat (#20184)

This commit is contained in:
Jeff Washington (jwash) 2021-09-27 08:25:23 -05:00 committed by GitHub
parent 12a52b3c8c
commit d8f98b3dcb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 12 deletions

View File

@ -80,19 +80,20 @@ impl BucketMapHolderStats {
} }
fn ms_per_age<T: IndexValue>(&self, storage: &BucketMapHolder<T>) -> u64 { fn ms_per_age<T: IndexValue>(&self, storage: &BucketMapHolder<T>) -> u64 {
let elapsed_ms = self.get_elapsed_ms_and_reset(); if !storage.get_startup() {
let mut age_now = storage.current_age(); let elapsed_ms = self.get_elapsed_ms_and_reset();
let last_age = self.last_age.swap(age_now, Ordering::Relaxed); let mut age_now = storage.current_age();
if last_age > age_now { let last_age = self.last_age.swap(age_now, Ordering::Relaxed);
// age may have wrapped if last_age > age_now {
age_now += u8::MAX; // age may have wrapped
} age_now += u8::MAX;
let age_delta = age_now.saturating_sub(last_age) as u64; }
if age_delta > 0 { let age_delta = age_now.saturating_sub(last_age) as u64;
elapsed_ms / age_delta if age_delta > 0 {
} else { return elapsed_ms / age_delta;
0 }
} }
0 // avoid crazy numbers
} }
pub fn remaining_until_next_interval(&self) -> u64 { pub fn remaining_until_next_interval(&self) -> u64 {