Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 3825963

Browse files
committed
Report postmaster.pid file as empty if it is empty, rather than
reporting in contains invalid data.
1 parent c82dedb commit 3825963

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

src/backend/utils/init/miscinit.c

+8
Original file line numberDiff line numberDiff line change
@@ -766,6 +766,14 @@ CreateLockFile(const char *filename, bool amPostmaster,
766766
filename)));
767767
close(fd);
768768

769+
if (len == 0)
770+
{
771+
ereport(FATAL,
772+
(errcode(ERRCODE_LOCK_FILE_EXISTS),
773+
errmsg("lock file \"%s\" is empty", filename),
774+
errhint("Either another server is starting, or the lock file is the remnant of a previous server startup crash.")));
775+
}
776+
769777
buffer[len] = '\0';
770778
encoded_pid = atoi(buffer);
771779

src/bin/pg_ctl/pg_ctl.c

+7-2
Original file line numberDiff line numberDiff line change
@@ -292,8 +292,13 @@ get_pgpid(void)
292292
}
293293
if (fscanf(pidf, "%ld", &pid) != 1)
294294
{
295-
write_stderr(_("%s: invalid data in PID file \"%s\"\n"),
296-
progname, pid_file);
295+
/* Is the file empty? */
296+
if (ftell(pidf) == 0 && feof(pidf))
297+
write_stderr(_("%s: the PID file \"%s\" is empty\n"),
298+
progname, pid_file);
299+
else
300+
write_stderr(_("%s: invalid data in PID file \"%s\"\n"),
301+
progname, pid_file);
297302
exit(1);
298303
}
299304
fclose(pidf);

0 commit comments

Comments
 (0)