[pve-devel] [PATCH pve-cluster v3] fix #6615: rrd: only return last entry if populated
Fiona Ebner
f.ebner at proxmox.com
Wed Oct 22 14:17:38 CEST 2025
Am 27.08.25 um 11:04 AM schrieb Hannes Laimer:
> RRD fetch can include the latest bucket before metrics are flushed,
> resulting in entries with only a timestamp.
>
> This now only returns the last entry if it contains at least one value.
>
> Signed-off-by: Hannes Laimer <h.laimer at proxmox.com>
Tested-by: Fiona Ebner <f.ebner at proxmox.com>
Reviewed-by: Fiona Ebner <f.ebner at proxmox.com>
With minor style nits below, but could also be applied as is:
> ---
> v3, thanks @Dominik:
> - only remove last entry if empty, not all empty ones
>
> src/PVE/RRD.pm | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/src/PVE/RRD.pm b/src/PVE/RRD.pm
> index 8fe1927..5a23889 100644
> --- a/src/PVE/RRD.pm
> +++ b/src/PVE/RRD.pm
> @@ -81,6 +81,12 @@ sub create_rrd_data {
> push @$res, $entry;
> }
>
> + # The newest bucket can still be empty right after a boundary.
> + if (@$res) {
Style nit: I'd prefer scalar($res->@*) > 0 to be explicit
> + # only contains 'time'
> + pop @$res if (scalar(keys %{$res->[-1]}) == 1);
Style nit: we don't usually use parentheses for post-if
Style nit: I'd prefer $res->[-1]->%* so you don't have to mentally keep
track of the % when reading
> + }
> +
> return $res;
> }
>
More information about the pve-devel
mailing list