Re: Minimal logical decoding on standbys
Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Reduce the log level in 035_standby_logical_decoding.pl.
- 3034dc56ef4b 16.0 landed
-
035_standby_logical_decoding: Add missing waits for replication
- 57411c82ce86 16.0 landed
-
For cascading replication, wake physical and logical walsenders separately
- e101dfac3a53 16.0 landed
-
Handle logical slot conflicts on standby
- 26669757b6a7 16.0 landed
-
Support invalidating replication slots due to horizon and wal_level
- be87200efd93 16.0 landed
-
Prevent use of invalidated logical slot in CreateDecodingContext()
- 4397abd0a2af 16.0 landed
-
Replace replication slot's invalidated_at LSN with an enum
- 15f8203a5975 16.0 landed
-
Pass down table relation into more index relation functions
- 61b313e47eb9 16.0 landed
-
Assert only valid flag bits are passed to visibilitymap_set()
- a88a18b1250b 16.0 landed
-
Remove unused _bt_delitems_delete() argument.
- dc43492e46c7 14.0 cited
-
Add xl_btree_delete optimization.
- d2e5e20e5711 13.0 cited
Hi, On 1/11/23 9:27 PM, Andres Freund wrote: > Hi, > > On 2023-01-06 10:52:06 +0100, Drouvot, Bertrand wrote: > > The problem I have with that is that I saw a lot of flakiness in the tests due > to the race condition. So introducing them in that order just doesn't make a > whole lot of sense to me. You are right it does not make sense to introduce fixing the race condition after the TAP tests and after introducing the decoding logic. I'll reorder the sub-patches. > It's also something that can be committed > independently, I think. Right but could this race condition occur outside of the context of this new feature? >> That's right it's started retrieving this information from the relation. >> >> Then, Robert made a comment in [1] saying it's not safe to call >> table_open() while holding a buffer lock. > > The suggested path in earlier versions to avoid doing so was to make sure that > we pass down the Relation for the table into the necessary functions. Did you > explore that any further? So, for gistXLogPageReuse() and _bt_delitems_delete() this is "easy" to pass the Heap Relation. This is what was done in earlier versions of this patch series. But we would need to define a way to propagate the Heap Relation for those 2 functions: _bt_log_reuse_page() vacuumRedirectAndPlaceholder() When I first looked at it and saw the number of places where _bt_getbuf() is called then I preferred to have a look to the current proposal. I will give it another look, also because I just realized that it could be beneficial for vacuumRedirectAndPlaceholder() too, as per this comment: " /* XXX: providing heap relation would allow more pruning */ vistest = GlobalVisTestFor(NULL); " Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com