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 4/6/23 11:55 AM, Amit Kapila wrote: > On Thu, Apr 6, 2023 at 12:10 PM Amit Kapila <amit.kapila16@gmail.com> wrote: >> >> On Wed, Apr 5, 2023 at 9:27 PM Drouvot, Bertrand >> <bertranddrouvot.pg@gmail.com> wrote: >>> >> >> Another comment on 0001. >> extern void CheckSlotRequirements(void); >> extern void CheckSlotPermissions(void); >> +extern void ResolveRecoveryConflictWithLogicalSlots(Oid dboid, >> TransactionId xid, char *reason); >> >> This doesn't seem to be called from anywhere. >> > > Few other comments: > ================== > 0004 > 1. > + * - physical walsenders in case of new time line and cascade > + * replication is allowed. > + * - logical walsenders in case of new time line or recovery is in progress > + * (logical decoding on standby). > + */ > + WalSndWakeup(switchedTLI && AllowCascadeReplication(), > + switchedTLI || RecoveryInProgress()); > > Do we need AllowCascadeReplication() check specifically for physical > walsenders? I think this should be true for both physical and logical > walsenders. > I don't think it could be possible to create logical walsenders on a standby if AllowCascadeReplication() is not true, or am I missing something? If so, I think it has to be set to true for the logical walsenders in all the case (like done in V62 posted up-thread). Andres, made the point up-thread that RecoveryInProgress() is always true, and as we don't want to be woken up only when there is a time line change then I think it has to be always true for logical walsenders. > 0005 > 2. > --- a/src/backend/access/transam/xlogfuncs.c > +++ b/src/backend/access/transam/xlogfuncs.c > @@ -38,6 +38,7 @@ > #include "utils/pg_lsn.h" > #include "utils/timestamp.h" > #include "utils/tuplestore.h" > +#include "storage/standby.h" > > The header includes should be in alphabetical order. > Good catch, thanks! Done in V62. Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com