Re: BUG #16154: pg_ctl restart with a logfile fails sometimes (on Windows)

Alexander Law <exclusion@gmail.com>

From: Alexander Law <exclusion@gmail.com>
To: Amit Kapila <amit.kapila16@gmail.com>
Cc: PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2019-12-07T16:00:01Z
Lists: pgsql-bugs
07.12.2019 15:36 Amit Kapila <amit.kapila16@gmail.com>:

On Fri, Dec 6, 2019 at 1:30 PM Alexander Lakhin <exclusion@gmail.com> wrote:
>

> If this file is still opened by the previous server shell (it can happen
when the previous server instance has unlinked it's pid file, but it's CMD
shell is still running), the next CMD start fails with the aforementioned
error message.
>

What is the reason for the previous shell still accessing logfile?
Is the reason that we don't close it before unlinking the pid file?

We can't close the logfile, as it is opened by CMD, not by the postgres
process. (Postmaster is started by the command "CMD.EXE /C postgres ...
>logfile".) So it is closed by the CMD shell after the postgres process
exits and the postgres can't control this (as a child process).

Best regards,
Alexander

Commits

  1. In pg_ctl, work around ERROR_SHARING_VIOLATION on the postmaster log file.