Re: pgsql: Prevent invalidation of newly synced replication slots.
Amit Kapila <amit.kapila16@gmail.com>
From: Amit Kapila <amit.kapila16@gmail.com>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Andres Freund <andres@anarazel.de>, Thomas Munro <thomas.munro@gmail.com>, Amit Kapila <akapila@postgresql.org>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-01-28T12:35:10Z
Lists: pgsql-hackers
Attachments
- quit_checkpoint_bg_session_1.patch (application/octet-stream) patch
On Wed, Jan 28, 2026 at 4:16 PM Amit Kapila <amit.kapila16@gmail.com> wrote: > > On Wed, Jan 28, 2026 at 11:17 AM Amit Kapila <amit.kapila16@gmail.com> wrote: > > > > It is not clear to me either why the similar test like > > 040_standby_failover_slots_sync is successful and > > 046_checkpoint_logical_slot is failing. I am still thinking about it > > but thought of sharing the information I could gather by debugging. > > > > It seems there is some interaction with previous test in same file > which is causing this failure as we are using the primary node from > previous test. When I tried to comment out get_changes and its > corresponding injection_point in the previous test as attached, the > entire test passed. I think if we use a freshly created primary node, > this test will pass but I wanted to spend some more time to see > how/why previous test is causing this issue? > I noticed that the previous test didn't quitted the background psql session used for concurrent checkpoint. By quitting that background session, the test passed for me consistently. See attached. It is written in comments atop background_psql: "Be sure to "quit" the returned object when done with it.". Now, this background session doesn't directly access the backup_label file but it could be accessing one of the parent directories where backup_label is present. One of gen-AI says as follows: "In Windows, MoveFileEx (Error 32: ERROR_SHARING_VIOLATION) can fail if a process is accessing the file's parent directory in a way that creates a lock. While the error message usually points to the file itself, the parent folder is a critical part of the operation.". I admit that I don't know the internals of MoveFileEx, so can't say with complete conviction but the attached sounds like a reasonable fix. Can anyone else who can reproduce the issue once test the attached patch and share the results? Does this fix/theory sound plausible? -- With Regards, Amit Kapila.
Commits
-
Fix CI failure introduced in commit 851f6649cc.
- 1c60f7236368 18.2 landed
- 3a98f989e8e5 19 (unreleased) landed
- 9649f1adfdee 17.8 landed
-
Prevent invalidation of newly synced replication slots.
- 851f6649cc18 19 (unreleased) cited
-
Prevent invalidation of newly created replication slots.
- 006dd4b2e5b3 19 (unreleased) cited