mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-28 02:31:49 +02:00
Add some missing exit() calls in error paths for various binaries
The following changes are done: - In pg_archivecleanup, the cleanup of older WAL segments would never fail immediately. - In pgbench, the initialization of a thread barrier would not fail hard. - In pg_recvlogical, a stat() failure never got the call. - In pg_basebackup, two chmod() reported a failure without exit()'ing when unpacking some tar data freshly received. It may be possible to continue writing some data even after this failure, but that could be confusing to the user at the end. These are arguably bugs, but they would happen for code paths where a failure is unlikely going to happen, so no backpatch is done. Reviewed-by: Robert Haas, Fabien Coelho Discussion: https://postgr.es/m/YQDMdB+B68yePFeT@paquier.xyz
This commit is contained in:
parent
2ad98fdf53
commit
856de3b39c
@ -151,21 +151,30 @@ CleanupPriorWALFiles(void)
|
||||
{
|
||||
pg_log_error("could not remove file \"%s\": %m",
|
||||
WALFilePath);
|
||||
break;
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (errno)
|
||||
{
|
||||
pg_log_error("could not read archive location \"%s\": %m",
|
||||
archiveLocation);
|
||||
exit(1);
|
||||
}
|
||||
if (closedir(xldir))
|
||||
{
|
||||
pg_log_error("could not close archive location \"%s\": %m",
|
||||
archiveLocation);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
pg_log_error("could not open archive location \"%s\": %m",
|
||||
archiveLocation);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1626,8 +1626,11 @@ ReceiveTarAndUnpackCopyChunk(size_t r, char *copybuf, void *callback_data)
|
||||
}
|
||||
#ifndef WIN32
|
||||
if (chmod(state->filename, (mode_t) filemode))
|
||||
{
|
||||
pg_log_error("could not set permissions on directory \"%s\": %m",
|
||||
state->filename);
|
||||
exit(1);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else if (copybuf[156] == '2')
|
||||
@ -1676,8 +1679,11 @@ ReceiveTarAndUnpackCopyChunk(size_t r, char *copybuf, void *callback_data)
|
||||
|
||||
#ifndef WIN32
|
||||
if (chmod(state->filename, (mode_t) filemode))
|
||||
{
|
||||
pg_log_error("could not set permissions on file \"%s\": %m",
|
||||
state->filename);
|
||||
exit(1);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (state->current_len_left == 0)
|
||||
|
@ -341,7 +341,10 @@ StreamLogicalLog(void)
|
||||
}
|
||||
|
||||
if (fstat(outfd, &statbuf) != 0)
|
||||
{
|
||||
pg_log_error("could not stat file \"%s\": %m", outfile);
|
||||
goto error;
|
||||
}
|
||||
|
||||
output_isfile = S_ISREG(statbuf.st_mode) && !isatty(outfd);
|
||||
}
|
||||
|
@ -6469,7 +6469,10 @@ main(int argc, char **argv)
|
||||
|
||||
errno = THREAD_BARRIER_INIT(&barrier, nthreads);
|
||||
if (errno != 0)
|
||||
{
|
||||
pg_log_fatal("could not initialize barrier: %m");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
#ifdef ENABLE_THREAD_SAFETY
|
||||
/* start all threads but thread 0 which is executed directly later */
|
||||
|
Loading…
Reference in New Issue
Block a user