[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