Re: BUG #16161: pg_ctl stop fails sometimes (on Windows)

Поиск
Список
Период
Сортировка
От Alexander Lakhin
Тема Re: BUG #16161: pg_ctl stop fails sometimes (on Windows)
Дата
Msg-id 4d28c7e1-fe91-b9fd-3227-478e549b05d5@gmail.com
обсуждение исходный текст
Ответ на BUG #16161: pg_ctl stop fails sometimes (on Windows)  (PG Bug reporting form <noreply@postgresql.org>)
Ответы Re: BUG #16161: pg_ctl stop fails sometimes (on Windows)  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
11.12.2019 23:00, PG Bug reporting form wrote:
The following bug has been logged on the website:

Bug reference:      16161
Logged by:          Alexander Lakhin
Email address:      exclusion@gmail.com
PostgreSQL version: 12.1
Operating system:   Windows
Description:        

The regression tests on Windows sometimes fail with 'Permission denied'
errors. For example:
https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=dory&dt=2019-12-11%2007%3A45%3A33

============== shutting down postmaster               ==============
pg_ctl: could not open PID file
"c:/pgbuildfarm/pgbuildroot/HEAD/pgsql.build/src/test/regress/./tmp_check/data/postmaster.pid":
Permission denied

This error occurs when pg_ctl is trying to open postmaster.pid while this
file is in "delete pending" state
(https://stackoverflow.com/questions/3764072/).
To reproduce the issue reliably I propose a simple modification to synchronize unlink() with open() and a simple test (sync_pid_ops+test.patch).
With the patch applied, `vcregress taptest src/test/restart` fails for me on iteration 47, 6, 7, 42, 51, 26, ...

I see two ways to fix the issue:
1) Unlink postmaster.pid using rename operation (adopt the solution from https://stackoverflow.com/questions/3764072/).
2) Ignore such 'Permission denied' error and just try to open the file once again (attached fix_open_for_unlink.patch implements this).


I'm inclined to the second approach as pgwin32_open() already handles two transient states (Windows-only), and it could be useful not only for postmaster.pid, but for some other files.


Best regards,
Alexander

Вложения

В списке pgsql-bugs по дате отправления:

Предыдущее
От: PG Bug reporting form
Дата:
Сообщение: BUG #16161: pg_ctl stop fails sometimes (on Windows)
Следующее
От: Kyotaro Horiguchi
Дата:
Сообщение: Re: BUG #16159: recovery requests WALs for the next timelinesbefore timeline switch LSN has been reached