On Wed, Dec 26, 2018 at 08:35:22PM -0500, Tom Lane wrote: > Oh, I see. Yeah, if we're ignoring errors anyway, the stat calls > seem redundant.
For this one, I think that we could simplify as attached (this causes open() to fail additionally because of the sync flags, but that's not really worth worrying). Thoughts? -- Michael
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index 5729867879..34ebf6716e 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -5307,6 +5307,7 @@ static void
readRecoverySignalFile(void)
{
struct stat stat_buf;
+ int fd;
if (IsBootstrapProcessingMode())
return;
@@ -5333,30 +5334,20 @@ readRecoverySignalFile(void)
* If present, standby signal file takes precedence. If neither is present
* then we won't enter archive recovery.
*/
- if (stat(STANDBY_SIGNAL_FILE, &stat_buf) == 0)
+ if ((fd = BasicOpenFilePerm(STANDBY_SIGNAL_FILE,
+ O_RDWR | PG_BINARY | get_sync_bit(sync_method),
+ S_IRUSR | S_IWUSR)) >= 0)
{
- int fd;
-
- fd = BasicOpenFilePerm(STANDBY_SIGNAL_FILE, O_RDWR | PG_BINARY | get_sync_bit(sync_method),
- S_IRUSR | S_IWUSR);
- if (fd >= 0)
- {
- (void) pg_fsync(fd);
- close(fd);
- }
+ (void) pg_fsync(fd);
+ close(fd);
standby_signal_file_found = true;
}
- else if (stat(RECOVERY_SIGNAL_FILE, &stat_buf) == 0)
+ else if ((fd = BasicOpenFilePerm(RECOVERY_SIGNAL_FILE,
+ O_RDWR | PG_BINARY | get_sync_bit(sync_method),
+ S_IRUSR | S_IWUSR)) >= 0)
{
- int fd;
-
- fd = BasicOpenFilePerm(RECOVERY_SIGNAL_FILE, O_RDWR | PG_BINARY | get_sync_bit(sync_method),
- S_IRUSR | S_IWUSR);
- if (fd >= 0)
- {
- (void) pg_fsync(fd);
- close(fd);
- }
+ (void) pg_fsync(fd);
+ close(fd);
recovery_signal_file_found = true;
}
signature.asc
Description: PGP signature
