Hi Higuchi-san,
(1)
What made you think this problem rarely occurs in PG 10 or later? Looking at
the following code, this seems to happen in PG 10+ too.
if (do_wait)
{
write_eventlog(EVENTLOG_INFORMATION_TYPE, _("Waiting for server
startup...\n"));
if (wait_for_postmaster(postmasterPID, true) != POSTMASTER_READY)
{
write_eventlog(EVENTLOG_ERROR_TYPE, _("Timed out waiting for server
startup\n"));
pgwin32_SetServiceStatus(SERVICE_STOPPED);
return;
}
write_eventlog(EVENTLOG_INFORMATION_TYPE, _("Server started and
accepting connections\n"));
}
(2)
What state should we consider SERVICE_RUNNING as? Isn't it the state where the
server has completed startup processing and accepts connections? If no, how is
it different from SERVICE_STARTING?
(I know that when -w (wait) is not specified, the status becomes
SERVICE_RUNNING whether or not the server completes startup processing...)
(3)
+ write_eventlog(EVENTLOG_INFORMATION_TYPE,
_("Server startup timed out but might continue in the background\n"));
This message is new, isn't it? I think the existing message "Time out..." is
enough.
(4)
+ write_eventlog(EVENTLOG_ERROR_TYPE, _("Server
startup failed. Examine the log output.\n"));
The first sentence (phenomenon) and the second line (detail or action) should
be separated with a newline. Below are some examples in pg_ctl.c. Note that
write_stderr() writes to the eventlog when running under a Windows service.
write_stderr(_("%s: could not start server\n"
"Examine the log output.\n"),
write_stderr(_("The program \"%s\" was found by \"%s\"\n"
"but was not the same version as %s.\n"
"Check your installation.\n"),
Regards
Takayuki Tsunakawa