From 8e4dc948f0a198f28b26a9a52b6c67e8ba0618d6 Mon Sep 17 00:00:00 2001 From: Hamid Akhtar Date: Mon, 29 Aug 2022 23:10:36 +0500 Subject: [PATCH] PG-501: Missing Buckets and incorrect calls count. Ensuring the outer bound for the bucket is an exclusive boundary and it as it belongs to the next bucket. To explain the point further, a set of five second bucket would be: Bucket 1: 00:00:00.00 -> 00:00:04.99... Bucket 2: 00:00:00.05 -> 00:00:09.99... Bucket 3: 00:00:00.10 -> 00:00:14.99... ... --- pg_stat_monitor.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pg_stat_monitor.c b/pg_stat_monitor.c index 4e52ea12..1ee318bf 100644 --- a/pg_stat_monitor.c +++ b/pg_stat_monitor.c @@ -2170,7 +2170,7 @@ get_next_wbucket(pgssSharedState *pgss) * definitely make the while condition to fail, we can stop the loop as * another thread has already updated prev_bucket_sec. */ - while ((tv.tv_sec - (uint)current_bucket_sec) > ((uint)PGSM_BUCKET_TIME)) + while ((tv.tv_sec - (uint)current_bucket_sec) >= ((uint)PGSM_BUCKET_TIME)) { if (pg_atomic_compare_exchange_u64(&pgss->prev_bucket_sec, ¤t_bucket_sec, (uint64)tv.tv_sec)) {