Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit20e5ef3

Browse files
nmischmichaelpq
authored andcommitted
In XLogFileInit(), fix *use_existent postcondition to suit callers.
Infrequently, the mismatch caused log_checkpoints messages andTRACE_POSTGRESQL_CHECKPOINT_DONE() to witness an "added" count too highby one. Since that consequence is so minor, no back-patch.This commit has been applied as of85656bc in v15 and newerversions. This is required on stable branches of v13 and v14 to fix aregression reported by Noah Misch, introduced by1f95181, causingspurious failures in archive recovery (neither streaming nor archiverecovery) with concurrent restartpoints. The backpatched versions ofthe patches have been aligned on these branches by me, Noah Misch is theauthor. Tests have been conducted by the both of us.Reported-by: Arun ThirupathiAuthor: Noah Misch <noah@leadboat.com>Discussion:https://postgr.es/m/20210202151416.GB3304930@rfd.leadboat.comDiscussion:https://postgr.es/m/20250306193013.36.nmisch@google.comBackpatch-through: 13
1 parentdf8ec96 commit20e5ef3

File tree

1 file changed

+6
-7
lines changed
  • src/backend/access/transam

1 file changed

+6
-7
lines changed

‎src/backend/access/transam/xlog.c

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3259,8 +3259,8 @@ XLogNeedsFlush(XLogRecPtr record)
32593259
* logsegno: identify segment to be created/opened.
32603260
*
32613261
* *use_existent: if true, OK to use a pre-existing file (else, any
3262-
* pre-existing file will be deleted). On return,true if a pre-existing
3263-
*file was used.
3262+
* pre-existing file will be deleted). On return,false iff this call added
3263+
*some segment on disk.
32643264
*
32653265
* Returns FD of opened file.
32663266
*
@@ -3414,8 +3414,10 @@ XLogFileInit(XLogSegNo logsegno, bool *use_existent)
34143414
* CheckPointSegments.
34153415
*/
34163416
max_segno=logsegno+CheckPointSegments;
3417-
if (!InstallXLogFileSegment(&installed_segno,tmppath,
3418-
*use_existent,max_segno))
3417+
if (InstallXLogFileSegment(&installed_segno,tmppath,
3418+
*use_existent,max_segno))
3419+
*use_existent= false;
3420+
else
34193421
{
34203422
/*
34213423
* No need for any more future segments, or InstallXLogFileSegment()
@@ -3425,9 +3427,6 @@ XLogFileInit(XLogSegNo logsegno, bool *use_existent)
34253427
unlink(tmppath);
34263428
}
34273429

3428-
/* Set flag to tell caller there was no existent file */
3429-
*use_existent= false;
3430-
34313430
/* Now open original target segment (might not be file I just made) */
34323431
fd=BasicOpenFile(path,O_RDWR |PG_BINARY |get_sync_bit(sync_method));
34333432
if (fd<0)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp