| From: | Alexander Lakhin <exclusion(at)gmail(dot)com> |
|---|---|
| To: | Michael Paquier <michael(at)paquier(dot)xyz>, Xuneng Zhou <xunengzhou(at)gmail(dot)com> |
| Cc: | pgsql-bugs(at)lists(dot)postgresql(dot)org |
| Subject: | Re: BUG #18158: Assert in pgstat_report_stat() fails when a backend shutting down with stats pending |
| Date: | 2026-06-05 05:00:00 |
| Message-ID: | 5edd4f4a-0d79-465d-a250-8b4735f780ca@gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-bugs |
Hello Michael,
05.06.2026 05:14, Michael Paquier wrote:
> On Thu, May 14, 2026 at 03:19:34PM +0800, Xuneng Zhou wrote:
>> I agree that applying the change wholesale could be too invasive. If
>> we decide not to address the ordering issue, removing this assertion
>> seems reasonable, since the non-assert path does not actually provide
>> the required guarantee.
> Attached is a patch for 15~17 that is able to achieve this goal:
> - Lift the assertion on shutdown for WAL senders, but keep it
> everywhere else.
> - Secondary trick in pgstat_shutdown_hook to cope with the fact that
> some stats make still be around at shutdown for a WAL sender.
>
> I cannot reproduce the failure re-using the trick sent by Alexander at
> the top of the thread.
Please try the following:
--- a/src/backend/utils/activity/pgstat.c
+++ b/src/backend/utils/activity/pgstat.c
@@ -107,2 +107,3 @@
+#include "common/pg_prng.h"
@@ -1212,3 +1213,8 @@ pgstat_flush_pending_entries(bool nowait)
/* flush the stats, if possible */
+if (nowait && (pg_prng_double(&pg_global_prng_state) < 0.1))
+ did_flush = false;
+else
+{
did_flush = kind_info->flush_pending_cb(entry_ref, nowait);
+}
As far as I can see, that rand() gives the same sequence on macOS each run,
while on Linux I see different sequences.
The patch works for me test-wise.
Thank you for the fix!
Best regards,
Alexander
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Michael Paquier | 2026-06-05 05:03:53 | Re: BUG #18158: Assert in pgstat_report_stat() fails when a backend shutting down with stats pending |
| Previous Message | Fujii Masao | 2026-06-05 04:45:06 | Re: BUG #19511: contrib/dblink: NULL dereference in dblink_get_notify() when called without a prior connection |