Update counters irrespective of logging level (#1799)

This commit is contained in:
Sathish
2018-11-13 16:55:14 -08:00
committed by GitHub
parent 4668a798ca
commit 7b92497d21

View File

@ -29,8 +29,8 @@ macro_rules! create_counter {
} }
macro_rules! inc_counter { macro_rules! inc_counter {
($name:expr, $count:expr) => { ($name:expr, $level:expr, $count:expr) => {
unsafe { $name.inc($count) }; unsafe { $name.inc($level, $count) };
}; };
} }
@ -45,10 +45,8 @@ macro_rules! inc_new_counter_info {
macro_rules! inc_new_counter { macro_rules! inc_new_counter {
($name:expr, $count:expr, $level:expr, $lograte:expr) => {{ ($name:expr, $count:expr, $level:expr, $lograte:expr) => {{
if log_enabled!($level) { static mut INC_NEW_COUNTER: Counter = create_counter!($name, $lograte);
static mut INC_NEW_COUNTER: Counter = create_counter!($name, $lograte); inc_counter!(INC_NEW_COUNTER, $level, $count);
inc_counter!(INC_NEW_COUNTER, $count);
}
}}; }};
} }
@ -63,7 +61,7 @@ impl Counter {
v v
} }
} }
pub fn inc(&mut self, events: usize) { pub fn inc(&mut self, level: log::Level, events: usize) {
let counts = self.counts.fetch_add(events, Ordering::Relaxed); let counts = self.counts.fetch_add(events, Ordering::Relaxed);
let times = self.times.fetch_add(1, Ordering::Relaxed); let times = self.times.fetch_add(1, Ordering::Relaxed);
let mut lograte = self.lograte.load(Ordering::Relaxed); let mut lograte = self.lograte.load(Ordering::Relaxed);
@ -72,14 +70,16 @@ impl Counter {
self.lograte.store(lograte, Ordering::Relaxed); self.lograte.store(lograte, Ordering::Relaxed);
} }
if times % lograte == 0 && times > 0 { if times % lograte == 0 && times > 0 {
info!( if log_enabled!(level) {
"COUNTER:{{\"name\": \"{}\", \"counts\": {}, \"samples\": {}, \"now\": {}, \"events\": {}}}", info!(
self.name, "COUNTER:{{\"name\": \"{}\", \"counts\": {}, \"samples\": {}, \"now\": {}, \"events\": {}}}",
counts + events, self.name,
times, counts + events,
timing::timestamp(), times,
events, timing::timestamp(),
); events,
);
}
let lastlog = self.lastlog.load(Ordering::Relaxed); let lastlog = self.lastlog.load(Ordering::Relaxed);
let prev = self let prev = self
@ -122,7 +122,7 @@ mod tests {
let _readlock = get_env_lock().read(); let _readlock = get_env_lock().read();
static mut COUNTER: Counter = create_counter!("test", 100); static mut COUNTER: Counter = create_counter!("test", 100);
let count = 1; let count = 1;
inc_counter!(COUNTER, count); inc_counter!(COUNTER, Level::Info, count);
unsafe { unsafe {
assert_eq!(COUNTER.counts.load(Ordering::Relaxed), 1); assert_eq!(COUNTER.counts.load(Ordering::Relaxed), 1);
assert_eq!(COUNTER.times.load(Ordering::Relaxed), 1); assert_eq!(COUNTER.times.load(Ordering::Relaxed), 1);
@ -131,12 +131,12 @@ mod tests {
assert_eq!(COUNTER.name, "test"); assert_eq!(COUNTER.name, "test");
} }
for _ in 0..199 { for _ in 0..199 {
inc_counter!(COUNTER, 2); inc_counter!(COUNTER, Level::Info, 2);
} }
unsafe { unsafe {
assert_eq!(COUNTER.lastlog.load(Ordering::Relaxed), 199); assert_eq!(COUNTER.lastlog.load(Ordering::Relaxed), 199);
} }
inc_counter!(COUNTER, 2); inc_counter!(COUNTER, Level::Info, 2);
unsafe { unsafe {
assert_eq!(COUNTER.lastlog.load(Ordering::Relaxed), 399); assert_eq!(COUNTER.lastlog.load(Ordering::Relaxed), 399);
} }
@ -160,7 +160,7 @@ mod tests {
DEFAULT_METRICS_RATE, DEFAULT_METRICS_RATE,
); );
static mut COUNTER: Counter = create_counter!("test_lograte", 0); static mut COUNTER: Counter = create_counter!("test_lograte", 0);
inc_counter!(COUNTER, 2); inc_counter!(COUNTER, Level::Info, 2);
unsafe { unsafe {
assert_eq!( assert_eq!(
COUNTER.lograte.load(Ordering::Relaxed), COUNTER.lograte.load(Ordering::Relaxed),
@ -175,14 +175,14 @@ mod tests {
let _writelock = get_env_lock().write(); let _writelock = get_env_lock().write();
static mut COUNTER: Counter = create_counter!("test_lograte_env", 0); static mut COUNTER: Counter = create_counter!("test_lograte_env", 0);
env::set_var("SOLANA_DEFAULT_METRICS_RATE", "50"); env::set_var("SOLANA_DEFAULT_METRICS_RATE", "50");
inc_counter!(COUNTER, 2); inc_counter!(COUNTER, Level::Info, 2);
unsafe { unsafe {
assert_eq!(COUNTER.lograte.load(Ordering::Relaxed), 50); assert_eq!(COUNTER.lograte.load(Ordering::Relaxed), 50);
} }
static mut COUNTER2: Counter = create_counter!("test_lograte_env", 0); static mut COUNTER2: Counter = create_counter!("test_lograte_env", 0);
env::set_var("SOLANA_DEFAULT_METRICS_RATE", "0"); env::set_var("SOLANA_DEFAULT_METRICS_RATE", "0");
inc_counter!(COUNTER2, 2); inc_counter!(COUNTER2, Level::Info, 2);
unsafe { unsafe {
assert_eq!( assert_eq!(
COUNTER2.lograte.load(Ordering::Relaxed), COUNTER2.lograte.load(Ordering::Relaxed),