@ -992,6 +992,66 @@ PostmasterMain(int argc, char *argv[])
*/
InitializeMaxBackends ( ) ;
/*
* Initialize pipe ( or process handle on Windows ) that allows children to
* wake up from sleep on postmaster death .
*/
InitPostmasterDeathWatchHandle ( ) ;
/*
* Forcibly remove the files signaling a standby promotion request .
* Otherwise , the existence of those files triggers a promotion too early ,
* whether a user wants that or not .
*
* This removal of files is usually unnecessary because they can exist
* only during a few moments during a standby promotion . However there is
* a race condition : if pg_ctl promote is executed and creates the files
* during a promotion , the files can stay around even after the server is
* brought up to new master . Then , if new standby starts by using the
* backup taken from that master , the files can exist at the server
* startup and should be removed in order to avoid an unexpected
* promotion .
*
* Note that promotion signal files need to be removed before the startup
* process is invoked . Because , after that , they can be used by
* postmaster ' s SIGUSR1 signal handler .
*/
RemovePromoteSignalFiles ( ) ;
/* Do the same for logrotate signal file */
RemoveLogrotateSignalFiles ( ) ;
/* Remove any outdated file holding the current log filenames. */
if ( unlink ( LOG_METAINFO_DATAFILE ) < 0 & & errno ! = ENOENT )
ereport ( LOG ,
( errcode_for_file_access ( ) ,
errmsg ( " could not remove file \" %s \" : %m " ,
LOG_METAINFO_DATAFILE ) ) ) ;
/*
* If enabled , start up syslogger collection subprocess
*/
SysLoggerPID = SysLogger_Start ( ) ;
/*
* Reset whereToSendOutput from DestDebug ( its starting state ) to
* DestNone . This stops ereport from sending log messages to stderr unless
* Log_destination permits . We don ' t do this until the postmaster is
* fully launched , since startup failures may as well be reported to
* stderr .
*
* If we are in fact disabling logging to stderr , first emit a log message
* saying so , to provide a breadcrumb trail for users who may not remember
* that their logging is configured to go somewhere else .
*/
if ( ! ( Log_destination & LOG_DESTINATION_STDERR ) )
ereport ( LOG ,
( errmsg ( " ending log output to stderr " ) ,
errhint ( " Future log output will go to log destination \" %s \" . " ,
Log_destination_string ) ) ) ;
whereToSendOutput = DestNone ;
/*
* Establish input sockets .
*
@ -1183,12 +1243,6 @@ PostmasterMain(int argc, char *argv[])
*/
set_stack_base ( ) ;
/*
* Initialize pipe ( or process handle on Windows ) that allows children to
* wake up from sleep on postmaster death .
*/
InitPostmasterDeathWatchHandle ( ) ;
# ifdef WIN32
/*
@ -1242,60 +1296,6 @@ PostmasterMain(int argc, char *argv[])
*/
RemovePgTempFiles ( ) ;
/*
* Forcibly remove the files signaling a standby promotion request .
* Otherwise , the existence of those files triggers a promotion too early ,
* whether a user wants that or not .
*
* This removal of files is usually unnecessary because they can exist
* only during a few moments during a standby promotion . However there is
* a race condition : if pg_ctl promote is executed and creates the files
* during a promotion , the files can stay around even after the server is
* brought up to new master . Then , if new standby starts by using the
* backup taken from that master , the files can exist at the server
* startup and should be removed in order to avoid an unexpected
* promotion .
*
* Note that promotion signal files need to be removed before the startup
* process is invoked . Because , after that , they can be used by
* postmaster ' s SIGUSR1 signal handler .
*/
RemovePromoteSignalFiles ( ) ;
/* Do the same for logrotate signal file */
RemoveLogrotateSignalFiles ( ) ;
/* Remove any outdated file holding the current log filenames. */
if ( unlink ( LOG_METAINFO_DATAFILE ) < 0 & & errno ! = ENOENT )
ereport ( LOG ,
( errcode_for_file_access ( ) ,
errmsg ( " could not remove file \" %s \" : %m " ,
LOG_METAINFO_DATAFILE ) ) ) ;
/*
* If enabled , start up syslogger collection subprocess
*/
SysLoggerPID = SysLogger_Start ( ) ;
/*
* Reset whereToSendOutput from DestDebug ( its starting state ) to
* DestNone . This stops ereport from sending log messages to stderr unless
* Log_destination permits . We don ' t do this until the postmaster is
* fully launched , since startup failures may as well be reported to
* stderr .
*
* If we are in fact disabling logging to stderr , first emit a log message
* saying so , to provide a breadcrumb trail for users who may not remember
* that their logging is configured to go somewhere else .
*/
if ( ! ( Log_destination & LOG_DESTINATION_STDERR ) )
ereport ( LOG ,
( errmsg ( " ending log output to stderr " ) ,
errhint ( " Future log output will go to log destination \" %s \" . " ,
Log_destination_string ) ) ) ;
whereToSendOutput = DestNone ;
/*
* Initialize stats collection subsystem ( this does NOT start the
* collector process ! )