=== Applying patches on top of PostgreSQL commit ID 417ac9c1eeebc5dd8186a9089055b8af43b2450e === /etc/rc.d/jail: WARNING: Per-jail configuration via jail_* variables is obsolete. Please consider migrating to /etc/jail.conf. Wed Nov 26 04:54:24 UTC 2025 On branch cf/6095 nothing to commit, working tree clean === using 'git am' to apply patch ./v3-0001-Escalate-ERRORs-during-async-notify-processing-to.patch === Applying: Escalate ERRORs during async notify processing to FATAL Using index info to reconstruct a base tree... M src/backend/commands/async.c Falling back to patching base and 3-way merge... Auto-merging src/backend/commands/async.c CONFLICT (content): Merge conflict in src/backend/commands/async.c error: Failed to merge in the changes. hint: Use 'git am --show-current-patch=diff' to see the failed patch Patch failed at 0001 Escalate ERRORs during async notify processing to FATAL When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". Unstaged changes after reset: M src/backend/commands/async.c === using patch(1) to apply patch ./v3-0001-Escalate-ERRORs-during-async-notify-processing-to.patch === patching file src/backend/commands/async.c Hunk #1 FAILED at 446. Hunk #2 FAILED at 1850. Hunk #3 FAILED at 1920. Hunk #4 FAILED at 1982. Hunk #5 FAILED at 2013. 5 out of 5 hunks FAILED -- saving rejects to file src/backend/commands/async.c.rej Removing src/backend/commands/async.c.rej === using 'git apply' to apply patch ./v3-0001-Escalate-ERRORs-during-async-notify-processing-to.patch === Applied patch to 'src/backend/commands/async.c' with conflicts. U src/backend/commands/async.c diff --cc src/backend/commands/async.c index eb86402cae4,6b844808ef3..00000000000 --- a/src/backend/commands/async.c +++ b/src/backend/commands/async.c @@@ -1916,15 -1923,15 +1916,27 @@@ asyncQueueReadAllNotifications(void * over and over again. Therefore, we set ExitOnAnyError to upgrade any * ERRORs to FATAL, causing the client connection to be closed on error. * ++<<<<<<< ours + * We used to only skip over the offending message and try to soldier on, + * but it was somewhat questionable to lose a notification and give the + * client an ERROR instead. A client application is not be prepared for + * that and can't tell that a notification was missed. It was also not + * very useful in practice because notifications are often processed while + * a connection is idle and reading a message from the client, and in that + * state, any error is upgraded to FATAL anyway. Closing the connection + * is a clear signal to the application that it might have missed + * notifications. ++======= + * We used to only skip over only the offending message and try to soldier + * on, but it was a little questionable to lose a notification and give + * the client ERRORs instead. A client application would not be prepared + * for that and can't tell that a notification was missed. It was also + * not very useful in practice because notifications are often processed + * while a connection is idle and reading a message from the client, and + * in that state, any error is upgraded to FATAL anyway. Closing the + * connection is a clear signal to the application that it might have + * missed notifications. ++>>>>>>> theirs */ { bool save_ExitOnAnyError = ExitOnAnyError;