Re: Proposal: Out-of-Order NOTIFY via GUC to Improve LISTEN/NOTIFY Throughput

From: "Matheus Alcantara" <matheusssilv97(at)gmail(dot)com>
To: "Rishu Bagga" <rishu(dot)postgres(at)gmail(dot)com>
Cc: "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "Joel Jacobson" <joel(at)compiler(dot)org>, "pgsql-hackers" <pgsql-hackers(at)postgresql(dot)org>, "nik(at)postgres(dot)ai" <nik(at)postgres(dot)ai>
Subject: Re: Proposal: Out-of-Order NOTIFY via GUC to Improve LISTEN/NOTIFY Throughput
Date: 2025-09-10 13:05:21
Message-ID: DCP54NVNAPVS.3EQE94XPLR2PK@gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue Sep 9, 2025 at 8:14 PM -03, Rishu Bagga wrote:
> Oops again - I didn't "git add" the new files, so they weren't showing
> up in the patch. I added async_xlog.h as well now,
> and tested to make sure the patch applies and compiles. Sorry about
> that, it should work now.
>
Thanks, it's compiling now.

You wrote:
> I wasn’t able to run the TAP tests; however, in the updated patch, we
> can be confident that entries in the queue are from committed
> transactions. If there is a crash before committing and after writing to
> the queue, this would be within the critical section, so a notification
> from an uncommitted transaction would never be read in the queue.
> That allows us to remove the XidInMVCCSnapshot and
> TransactionIdDidCommit check.
>
I've executed the TAP test that I've attached on [1] and the test is
failing due to an assert failure:
TRAP: failed Assert("CritSectionCount == 0 || (context)->allowInCritSection"), File: "../src/backend/utils/mmgr/mcxt.c", Line: 1372, PID: 79968
0 postgres 0x0000000105661860 ExceptionalCondition + 236
1 postgres 0x00000001056b7a0c palloc + 248
2 postgres 0x0000000104f96850 SignalBackends + 36
3 postgres 0x0000000104edd50c XactLogCommitRecord + 1632
4 postgres 0x0000000104ee0188 RecordTransactionCommit + 860
5 postgres 0x0000000104edcb8c CommitTransaction + 896
6 postgres 0x0000000104ed7b38 CommitTransactionCommandInternal + 256
7 postgres 0x0000000104ed7a24 CommitTransactionCommand + 16
8 postgres 0x0000000105402220 finish_xact_command + 32
9 postgres 0x00000001053ffb60 exec_simple_query + 1556
10 postgres 0x00000001053feb78 PostgresMain + 3424
11 postgres 0x00000001053f5504 BackendInitialize + 0
12 postgres 0x00000001052c11f4 postmaster_child_launch + 492
13 postgres 0x00000001052c9660 BackendStartup + 336
14 postgres 0x00000001052c70e0 ServerLoop + 432
15 postgres 0x00000001052c5a38 PostmasterMain + 7096
16 postgres 0x0000000105166488 main + 952
17 dyld 0x000000019145ab98 start + 6076

There is also some other tests failing, like isolation, regress and
others.

[1] https://www.postgresql.org/message-id/DCLSWKOKDAX4.3HS2NBE53P0M2%40gmail.com

--
Matheus Alcantara

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Kirill Reshke 2025-09-10 13:28:10 Display is_prev_bucket_same_wrt of xl_hash_squeeze_page
Previous Message Melanie Plageman 2025-09-10 12:41:25 Re: Incorrect logic in XLogNeedsFlush()