From: Tom Lane Date: Tue, 22 May 2012 02:50:30 +0000 (-0400) Subject: Move postmaster's RemovePgTempFiles call to a less randomly chosen place. X-Git-Tag: REL9_2_BETA2~53 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b94ce6e807ce5685bda1dcd36027091ceec6b5a0;p=postgresql Move postmaster's RemovePgTempFiles call to a less randomly chosen place. There is no reason to do this as early as possible in postmaster startup, and good reason not to do it until we have completely created the postmaster's lock file, namely that it might contribute to pg_ctl thinking that postmaster startup has timed out. (This would require a rather unusual amount of time to be spent scanning temp file directories, but we have at least one field report of it happening reproducibly.) Back-patch to 9.1. Before that, pg_ctl didn't wait for additional info to be added to the lock file, so it wasn't a problem. Note that this is not a complete fix to the slow-start issue in 9.1, because we still had identify_system_timezone being run during postmaster start in 9.1. But that's at least a reasonably well-defined delay, with an easy workaround if needed, whereas the temp-files scan is not so predictable and cannot be avoided. --- diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index dd7dd5560f..e400f0a8e1 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -826,12 +826,6 @@ PostmasterMain(int argc, char *argv[]) */ process_shared_preload_libraries(); - /* - * Remove old temporary files. At this point there can be no other - * Postgres processes running in this directory, so this should be safe. - */ - RemovePgTempFiles(); - /* * Establish input sockets. */ @@ -1099,6 +1093,12 @@ PostmasterMain(int argc, char *argv[]) } load_ident(); + /* + * Remove old temporary files. At this point there can be no other + * Postgres processes running in this directory, so this should be safe. + */ + RemovePgTempFiles(); + /* * Remember postmaster startup time */