resolve-recovery-conflict-tweak.patch
application/octet-stream
Filename: resolve-recovery-conflict-tweak.patch
Type: application/octet-stream
Part: 0
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: unified
| File | + | − |
|---|---|---|
| src/backend/storage/ipc/standby.c | 8 | 2 |
diff --git a/src/backend/storage/ipc/standby.c b/src/backend/storage/ipc/standby.c
index 4f209ea..5bcde05 100644
--- a/src/backend/storage/ipc/standby.c
+++ b/src/backend/storage/ipc/standby.c
@@ -193,10 +193,16 @@ ResolveRecoveryConflictWithVirtualXIDs(VirtualTransactionId *waitlist,
TimestampTz waitStart;
char *new_status;
+ /* Return immediately if list is empty, to avoid extra work. */
+ if (!VirtualTransactionIdIsValid(*waitlist))
+ return;
+
+ /* At least one conflict, so do initialization. */
waitStart = GetCurrentTimestamp();
new_status = NULL; /* we haven't changed the ps display */
- while (VirtualTransactionIdIsValid(*waitlist))
+ /* Loop test at bottom, since we already checked it the first time. */
+ do
{
/* reset standbyWait_us for each xact we wait for */
standbyWait_us = STANDBY_INITIAL_WAIT_US;
@@ -245,7 +251,7 @@ ResolveRecoveryConflictWithVirtualXIDs(VirtualTransactionId *waitlist,
/* The virtual transaction is gone now, wait for the next one */
waitlist++;
- }
+ } while (VirtualTransactionIdIsValid(*waitlist));
/* Reset ps display if we changed it */
if (new_status)