Re: Introduce XID age and inactive timeout based replication slot invalidation
Amit Kapila <amit.kapila16@gmail.com>
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Add a test for commit ac0e33136a using the injection point.
- 8a695d7998be 18.0 landed
-
Invalidate inactive replication slots.
- ac0e33136abc 18.0 landed
-
Fix incorrect slot type in BuildTupleHashTableExt
- d96d1d5152f3 18.0 cited
-
Allow synced slots to have their inactive_since.
- 6f132ed693b6 17.0 landed
-
Change last_inactive_time to inactive_since in pg_replication_slots.
- 6d49c8d4b4f4 17.0 landed
-
Track last_inactive_time in pg_replication_slots.
- a11f330b5584 17.0 landed
-
Track invalidation_reason in pg_replication_slots.
- 6ae701b4378d 17.0 landed
-
Add option force_initdb to PostgreSQL::Test::Cluster:init()
- ff9e1e764fcc 17.0 cited
-
Add a failover option to subscriptions.
- 776621a5e479 17.0 cited
-
Allow setting failover property in the replication command.
- 73292404370c 17.0 cited
-
Allow to enable failover property for replication slots via SQL API.
- c393308b69d2 17.0 cited
-
Track conflict_reason in pg_replication_slots.
- 007693f2a3ac 17.0 cited
-
Log messages for replication slot acquisition and release.
- 7c3fb505b14e 17.0 cited
-
Remove vacuum_defer_cleanup_age
- 1118cd37eb61 16.0 cited
-
Fix corruption due to vacuum_defer_cleanup_age underflowing 64bit xids
- be504a3e974d 16.0 cited
-
meson: Add initial version of meson based build system
- e6927270cd18 16.0 cited
On Tue, Feb 11, 2025 at 9:39 PM Nathan Bossart <nathandbossart@gmail.com> wrote: > > On Tue, Feb 11, 2025 at 03:22:49PM +0100, Álvaro Herrera wrote: > > I find this proposed patch a bit strange and I feel it needs more > > explanation. > > > > When this thread started, Bharath justified his patches saying that a > > slot that's inactive for a very long time could be problematic because > > of XID wraparound. Fine, that sounds a reasonable feature. If you > > wanted to invalidate slots whose xmins were too old, I would support > > that. He submitted that as his 0004 patch then. > > > > However, he also chose to submit 0003 with invalidation based on a > > timeout. This is far less convincing a feature to me. The > > justification for the time out seems to be that ... it's difficult to > > have a one-size-fits-all value because size of disks vary. (???) > > Or something like that. Really? I mean -- yes, this will prevent > > problems in toy databases when run in developer's laptops. It will not > > prevent any problems in production databases. Do we really want a > > setting that is only useful for toy situations rather than production? > > > > ... > > > > I'm baffled. > > I agree, and I am also baffled because I think this discussion has happened > at least once already on this thread. > Yes, we previously discussed this topic and Robert seems to prefer a time-based parameter for invalidating the slot (1)(2) as it is easier to reason in terms of time. The other points discussed previously were that there are tools that create a lot of slots and sometimes forget to clean up slots. Bharath has seen this in production and we now have the tool pg_createsubscriber that creates a slot-per-database, so if for some reason, such slots are not cleaned on the tool's exit, such a parameter could save the cluster. See (3)(4). Also, we previously didn't have a good experience with XID-based threshold parameters like vacuum_defer_cleanup_age as mentioned by Robert (1). AFAICU from the previous discussion we need a time-based parameter and we didn't rule out xid_age based parameter as another parameter. (1) - https://www.postgresql.org/message-id/CA%2BTgmoZTbaaEjSZUG1FL0mzxAdN3qmXksO3O9_PZhEuXTkVnRQ%40mail.gmail.com (2) - https://www.postgresql.org/message-id/CA%2BTgmoaRECcnyqxAxUhP5dk2S4HX%3DpGh-p-PkA3uc%2BjG_9hiMw%40mail.gmail.com (3) - https://www.postgresql.org/message-id/CALj2ACVFV%3DyUa3DXXfJLOtJxUM8qzC_mEECMJ2iekDGPeQLkTw%40mail.gmail.com (4) - https://www.postgresql.org/message-id/CAA4eK1L3awyzWMuymLJUm8SoFEQe%3DDa9KUwCcAfC31RNJ1xdJA%40mail.gmail.com -- With Regards, Amit Kapila.