From 6f126a88387c8614bd891479271c6e0c46cdfa2f Mon Sep 17 00:00:00 2001 From: "Costa Tsaousis (ktsaou)" Date: Wed, 1 Jun 2016 10:23:33 +0300 Subject: [PATCH] prevent invalid compression ratio values --- src/plugin_proc.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/plugin_proc.c b/src/plugin_proc.c index ffcc32c4..0e2d9c12 100644 --- a/src/plugin_proc.c +++ b/src/plugin_proc.c @@ -351,17 +351,19 @@ void *proc_main(void *ptr) } else rrdset_next(stcompression); - unsigned long long gcontent_size = global_statistics.content_size; + // since we don't lock here to read the global statistics + // read the smaller value first unsigned long long gcompressed_content_size = global_statistics.compressed_content_size; + unsigned long long gcontent_size = global_statistics.content_size; - unsigned long long content_size = gcontent_size - old_content_size; unsigned long long compressed_content_size = gcompressed_content_size - old_compressed_content_size; + unsigned long long content_size = gcontent_size - old_content_size; - old_content_size = gcontent_size; old_compressed_content_size = gcompressed_content_size; + old_content_size = gcontent_size; - if(content_size) - compression_ratio = (content_size - compressed_content_size) * 100 * 1000 / content_size; + if(content_size && content_size >= compressed_content_size) + compression_ratio = ((content_size - compressed_content_size) * 100 * 1000) / content_size; if(compression_ratio != -1) rrddim_set(stcompression, "savings", compression_ratio); -- 2.39.2