Update counters irrespective of logging level (#1799)
This commit is contained in:
@ -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),
|
||||||
|
Reference in New Issue
Block a user