From: Dietmar Maurer <dietmar@proxmox.com>
To: pbs-devel@lists.proxmox.com
Subject: Re: [pbs-devel] [PATCH proxmox-backup 14/15] proxmox-rrd: rename last_counter to last_value
Date: Wed, 13 Oct 2021 11:51:02 +0200 (CEST) [thread overview]
Message-ID: <14529285.1981.1634118662433@webmail.proxmox.com> (raw)
This introduces a bug: here is the fix
diff --git a/proxmox-rrd/src/rrd.rs b/proxmox-rrd/src/rrd.rs
index c6996e42..eb6154e7 100644
--- a/proxmox-rrd/src/rrd.rs
+++ b/proxmox-rrd/src/rrd.rs
@@ -107,11 +107,12 @@ impl DataSource {
} else {
value - self.last_value
};
+ self.last_value = value;
value = diff/time_diff;
+ } else {
+ self.last_value = value;
}
- self.last_value = value;
-
Ok(value)
}
> On 10/13/2021 10:24 AM Dietmar Maurer <dietmar@proxmox.com> wrote:
>
>
> ---
> proxmox-rrd/src/rrd.rs | 25 +++++++++++++++----------
> proxmox-rrd/src/rrd_v1.rs | 2 +-
> 2 files changed, 16 insertions(+), 11 deletions(-)
>
> diff --git a/proxmox-rrd/src/rrd.rs b/proxmox-rrd/src/rrd.rs
> index 7901fe39..72769bfd 100644
> --- a/proxmox-rrd/src/rrd.rs
> +++ b/proxmox-rrd/src/rrd.rs
> @@ -63,7 +63,7 @@ pub struct DataSource {
> pub last_update: f64,
> /// Stores the last value, used to compute differential value for
> /// derive/counters
> - pub counter_value: f64,
> + pub last_value: f64,
> }
>
> impl DataSource {
> @@ -72,7 +72,7 @@ impl DataSource {
> Self {
> dst,
> last_update: 0.0,
> - counter_value: f64::NAN,
> + last_value: f64::NAN,
> }
> }
>
> @@ -94,23 +94,24 @@ impl DataSource {
> if is_counter || self.dst == DST::Derive {
> let time_diff = time - self.last_update;
>
> - let diff = if self.counter_value.is_nan() {
> + let diff = if self.last_value.is_nan() {
> 0.0
> } else if is_counter && value < 0.0 {
> bail!("got negative value for counter");
> - } else if is_counter && value < self.counter_value {
> + } else if is_counter && value < self.last_value {
> // Note: We do not try automatic overflow corrections, but
> - // we update counter_value anyways, so that we can compute the diff
> + // we update last_value anyways, so that we can compute the diff
> // next time.
> - self.counter_value = value;
> + self.last_value = value;
> bail!("conter overflow/reset detected");
> } else {
> - value - self.counter_value
> + value - self.last_value
> };
> - self.counter_value = value;
> value = diff/time_diff;
> }
>
> + self.last_value = value;
> +
> Ok(value)
> }
>
> @@ -138,11 +139,15 @@ impl RRA {
> }
> }
>
> - fn slot_end_time(&self, time: u64) -> u64 {
> + pub fn slot_end_time(&self, time: u64) -> u64 {
> self.resolution*(time/self.resolution + 1)
> }
>
> - fn slot(&self, time: u64) -> usize {
> + pub fn slot_start_time(&self, time: u64) -> u64 {
> + self.resolution*(time/self.resolution)
> + }
> +
> + pub fn slot(&self, time: u64) -> usize {
> ((time/self.resolution) as usize) % self.data.len()
> }
>
> diff --git a/proxmox-rrd/src/rrd_v1.rs b/proxmox-rrd/src/rrd_v1.rs
> index 511b510b..7e4b97c2 100644
> --- a/proxmox-rrd/src/rrd_v1.rs
> +++ b/proxmox-rrd/src/rrd_v1.rs
> @@ -285,7 +285,7 @@ impl RRDv1 {
>
> let source = DataSource {
> dst,
> - counter_value: f64::NAN,
> + last_value: f64::NAN,
> last_update: self.hour_avg.last_update, // IMPORTANT!
> };
> Ok(RRD {
> --
> 2.30.2
next reply other threads:[~2021-10-13 9:52 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-13 9:51 Dietmar Maurer [this message]
-- strict thread matches above, loose matches on Subject: below --
2021-10-13 8:24 [pbs-devel] [PATCH proxmox-backup 00/15] RRD database improvements Dietmar Maurer
2021-10-13 8:24 ` [pbs-devel] [PATCH proxmox-backup 14/15] proxmox-rrd: rename last_counter to last_value Dietmar Maurer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=14529285.1981.1634118662433@webmail.proxmox.com \
--to=dietmar@proxmox.com \
--cc=pbs-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.