Commit 3825963e authored by Bruce Momjian's avatar Bruce Momjian

Report postmaster.pid file as empty if it is empty, rather than

reporting in contains invalid data.
parent c82dedb7
...@@ -766,6 +766,14 @@ CreateLockFile(const char *filename, bool amPostmaster, ...@@ -766,6 +766,14 @@ CreateLockFile(const char *filename, bool amPostmaster,
filename))); filename)));
close(fd); close(fd);
if (len == 0)
{
ereport(FATAL,
(errcode(ERRCODE_LOCK_FILE_EXISTS),
errmsg("lock file \"%s\" is empty", filename),
errhint("Either another server is starting, or the lock file is the remnant of a previous server startup crash.")));
}
buffer[len] = '\0'; buffer[len] = '\0';
encoded_pid = atoi(buffer); encoded_pid = atoi(buffer);
......
...@@ -292,6 +292,11 @@ get_pgpid(void) ...@@ -292,6 +292,11 @@ get_pgpid(void)
} }
if (fscanf(pidf, "%ld", &pid) != 1) if (fscanf(pidf, "%ld", &pid) != 1)
{ {
/* Is the file empty? */
if (ftell(pidf) == 0 && feof(pidf))
write_stderr(_("%s: the PID file \"%s\" is empty\n"),
progname, pid_file);
else
write_stderr(_("%s: invalid data in PID file \"%s\"\n"), write_stderr(_("%s: invalid data in PID file \"%s\"\n"),
progname, pid_file); progname, pid_file);
exit(1); exit(1);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment