Re: ReplicationSlotRelease() crashes when the instance is in the single user mode
Michael Paquier <michael@paquier.xyz>
From: Michael Paquier <michael@paquier.xyz>
To: "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>
Cc: 'Paul A Jungwirth' <pj@illuminatedcomputing.com>, Mutaamba Maasha <maasha@gmail.com>, Amit Kapila <amit.kapila16@gmail.com>, "David G. Johnston" <david.g.johnston@gmail.com>, "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>, Tom Lane <tgl@sss.pgh.pa.us>, Bertrand Drouvot <bertranddrouvot.pg@gmail.com>, "pgsql-hackers@lists.postgresql.org" <pgsql-hackers@lists.postgresql.org>
Date: 2025-08-20T06:05:17Z
Lists: pgsql-hackers
On Tue, Aug 19, 2025 at 12:52:24PM +0000, Hayato Kuroda (Fujitsu) wrote: > I have run the tests on my CI and found that windows cannot accept the test. > Per attached output, starting the postgres with the single-user mode was failed > because the user had admin permissions [1]. However, pg_ctl start command could be > done by the same user. > I'm not familiar with Windows, but according to your blogpost [2], Windows seems > to allows running some server command by generating the restricted context for > running postgres commands. In case of single-user mode, however, we directly run > the given command with the current user. So, there is a possibility that only > instance can boot only by pg_ctl. > Based on that, I want to skip the test on windows platform rather than modifying > the ci environment. > > IIUC, other tests which uses --single cannot work on windows as well. This has reminded me of 1a9d80282811, where I have used a trick with pg_ctl to allow single-user mode executions to bypass the privileged account permission failure, but I don't see what we could do here as we should pass down commands to postgres for execution via stdin for IPC::Run. We don't really have anything WIN32-specific, so skipping the tests on Windows sounds fine by me. One thing that you have forgotten is to update EXTRA_INSTALL to add test_decoding, or a make check in the module fails. I have expanded a bit more the tests, as for example we have paths based on active_pid for temporary slots, which could matter at some point. I have added a few more things with physical slots. With all that in mind, I don't really see the point of 0002. There was also a mention of replication origins upthread, but we don't really have anything specific to a shared state or a validation in this area AFAIK, so I don't think that test additions are worth it in this case. -- Michael
Commits
-
Fix assertion failure with replication slot release in single-user mode
- 8ed079cad824 13.23 landed
- 32d388d00f9f 14.20 landed
- 818be9b73c94 15.15 landed
- fea1cc3f75ff 16.11 landed
- 07a302387176 17.7 landed
- ea1c6b0b0aec 18.0 landed
- 1f2e51e3c7c2 19 (unreleased) landed