proxmox-rrd: pass time and value to update function

This commit is contained in:
Dietmar Maurer 2021-10-14 08:11:04 +02:00
parent fae4f6c509
commit 58f70bccbb
2 changed files with 9 additions and 8 deletions

View File

@ -244,24 +244,23 @@ impl RRDCache {
pub fn update_value( pub fn update_value(
&self, &self,
rel_path: &str, rel_path: &str,
time: f64,
value: f64, value: f64,
dst: DST, dst: DST,
) -> Result<(), Error> { ) -> Result<(), Error> {
let mut state = self.state.write().unwrap(); // block other writers let mut state = self.state.write().unwrap(); // block other writers
let now = proxmox_time::epoch_f64(); if (time - state.last_journal_flush) > self.apply_interval {
if (now - state.last_journal_flush) > self.apply_interval {
if let Err(err) = self.apply_journal_locked(&mut state) { if let Err(err) = self.apply_journal_locked(&mut state) {
log::error!("apply journal failed: {}", err); log::error!("apply journal failed: {}", err);
} }
} }
Self::append_journal_entry(&mut state, now, value, dst, rel_path)?; Self::append_journal_entry(&mut state, time, value, dst, rel_path)?;
if let Some(rrd) = state.rrd_map.get_mut(rel_path) { if let Some(rrd) = state.rrd_map.get_mut(rel_path) {
rrd.update(now, value); rrd.update(time, value);
} else { } else {
let mut path = self.basedir.clone(); let mut path = self.basedir.clone();
path.push(rel_path); path.push(rel_path);
@ -269,7 +268,7 @@ impl RRDCache {
let mut rrd = Self::load_rrd(&path, dst); let mut rrd = Self::load_rrd(&path, dst);
rrd.update(now, value); rrd.update(time, value);
state.rrd_map.insert(rel_path.into(), rrd); state.rrd_map.insert(rel_path.into(), rrd);
} }

View File

@ -76,7 +76,8 @@ pub fn extract_rrd_data(
/// Update RRD Gauge values /// Update RRD Gauge values
pub fn rrd_update_gauge(name: &str, value: f64) { pub fn rrd_update_gauge(name: &str, value: f64) {
if let Ok(rrd_cache) = get_rrd_cache() { if let Ok(rrd_cache) = get_rrd_cache() {
if let Err(err) = rrd_cache.update_value(name, value, DST::Gauge) { let now = proxmox_time::epoch_f64();
if let Err(err) = rrd_cache.update_value(name, now, value, DST::Gauge) {
log::error!("rrd::update_value '{}' failed - {}", name, err); log::error!("rrd::update_value '{}' failed - {}", name, err);
} }
} }
@ -85,7 +86,8 @@ pub fn rrd_update_gauge(name: &str, value: f64) {
/// Update RRD Derive values /// Update RRD Derive values
pub fn rrd_update_derive(name: &str, value: f64) { pub fn rrd_update_derive(name: &str, value: f64) {
if let Ok(rrd_cache) = get_rrd_cache() { if let Ok(rrd_cache) = get_rrd_cache() {
if let Err(err) = rrd_cache.update_value(name, value, DST::Derive) { let now = proxmox_time::epoch_f64();
if let Err(err) = rrd_cache.update_value(name, now, value, DST::Derive) {
log::error!("rrd::update_value '{}' failed - {}", name, err); log::error!("rrd::update_value '{}' failed - {}", name, err);
} }
} }