RE: Conflict detection for update_deleted in logical replication - Mailing list pgsql-hackers

From Zhijie Hou (Fujitsu)
Subject RE: Conflict detection for update_deleted in logical replication
Date
Msg-id TY4PR01MB169077B0F851D7A5F6BD9FDB3940FA@TY4PR01MB16907.jpnprd01.prod.outlook.com
Whole thread Raw
In response to Re: Conflict detection for update_deleted in logical replication  (shveta malik <shveta.malik@gmail.com>)
List pgsql-hackers
On Wednesday, September 3, 2025 12:19 PM shveta malik <shveta.malik@gmail.com> wrote:
> On Tue, Sep 2, 2025 at 3:30 PM shveta malik <shveta.malik@gmail.com>
> wrote:
> >
> > >
> > > >
> > > > Here is V70 patch set.
> > > >
> > >
> 
> Please find a few comments on v70-003:
> 
> 1)
> Doc of dead_tuple_retention_active says:
> True if retain_dead_tuples is enabled and the retention duration for information
> used in conflict detection is within max_retention_duration
> 
> Doc of subretentionactive says:
> The retention status of information (e.g., dead tuples, commit timestamps, and
> origins) useful for conflict detection. True if retain_dead_tuples is enabled, and
> the retention duration has not exceeded max_retention_duration, when
> defined.
> 
> There is hardly any difference between the two. Do we really need to have
> 'dead_tuple_retention_active' when we already have 'subretentionactive'?

I felt the retentionactive in pg_subscription can be considered as a internal
flag and users might prefer to access public views over catalogs when possible,
so I'm keeping this new column in the view for now. However, if we find it's not
worthwhile, we can discuss removing this patch.

> 
> 2)
> Doc wise, there is no difference between the two, but there is a small window
> when sub's subretentionactive will show true while stat's
> dead_tuple_retention_active will show false. This will be when worker is
> waiting for the launcher to assign its oldest-xid after it has marked itself as
> 'resuming'.
> If we decide to retain 'dead_tuple_retention_active', then do we need to
> indicate the small difference between the 2 fields in the doc?

Yes, this is also the difference.

I tried to explain the difference in a user visible way, that is, if
dead_tuple_retention_active is true, then update_deleted detection is enabled
(pg_subscription.retentionactive does not ensure this).

> 
> 3)
> We can add a test when we stop-retention to see if this is showing false.
> Currently there are 2 places in the test where we check this field to see if it is
> true. I think we can shift both in the same test. One check before stop-retention,
> one check after stop-retention.

Changed.

Best Regards,
Hou zj

pgsql-hackers by date:

Previous
From: "Zhijie Hou (Fujitsu)"
Date:
Subject: RE: Conflict detection for update_deleted in logical replication
Next
From: shveta malik
Date:
Subject: Clear logical slot's 'synced' flag on promotion of standby