From: | shveta malik <shveta(dot)malik(at)gmail(dot)com> |
---|---|
To: | Bharath Rupireddy <bharath(dot)rupireddyforpostgres(at)gmail(dot)com> |
Cc: | Bertrand Drouvot <bertranddrouvot(dot)pg(at)gmail(dot)com>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, Nathan Bossart <nathandbossart(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, shveta malik <shveta(dot)malik(at)gmail(dot)com> |
Subject: | Re: Introduce XID age and inactive timeout based replication slot invalidation |
Date: | 2024-03-27 03:31:50 |
Message-ID: | CAJpy0uBucqQaOSnodBdwCRfDsGTQ9YX9JvGG93igWDCtimp4SA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, Mar 26, 2024 at 9:59 PM Bharath Rupireddy
<bharath(dot)rupireddyforpostgres(at)gmail(dot)com> wrote:
>
> On Tue, Mar 26, 2024 at 4:35 PM Bharath Rupireddy
> <bharath(dot)rupireddyforpostgres(at)gmail(dot)com> wrote:
> >
> > If we just sync inactive_since value for synced slots while in
> > recovery from the primary, so be it. Why do we need to update it to
> > the current time when the slot is being created? We don't expose slot
> > creation time, no? Aren't we fine if we just sync the value from
> > primary and document that fact? After the promotion, we can reset it
> > to the current time so that it gets its own time.
>
> I'm attaching v24 patches. It implements the above idea proposed
> upthread for synced slots. I've now separated
> s/last_inactive_time/inactive_since and synced slots behaviour. Please
> have a look.
Thanks for the patches. Few trivial comments for v24-002:
1)
slot.c:
+ * data from the remote slot. We use InRecovery flag instead of
+ * RecoveryInProgress() as it always returns true even for normal
+ * server startup.
a) Not clear what 'it' refers to. Better to use 'the latter'
b) Is it better to mention the primary here:
'as the latter always returns true even on the primary server during startup'.
2)
update_local_synced_slot():
- strcmp(remote_slot->plugin, NameStr(slot->data.plugin)) == 0)
+ strcmp(remote_slot->plugin, NameStr(slot->data.plugin)) == 0 &&
+ remote_slot->inactive_since == slot->inactive_since)
When this code was written initially, the intent was to do strcmp at
the end (only if absolutely needed). It will be good if we maintain
the same and add new checks before strcmp.
3)
update_synced_slots_inactive_time():
This assert is removed, is it intentional?
Assert(s->active_pid == 0);
4)
040_standby_failover_slots_sync.pl:
+# Capture the inactive_since of the slot from the standby the logical failover
+# slots are synced/created on the standby.
The comment is unclear, something seems missing.
thanks
Shveta
From | Date | Subject | |
---|---|---|---|
Next Message | Tender Wang | 2024-03-27 03:33:29 | Re: Can't find not null constraint, but \d+ shows that |
Previous Message | Richard Guo | 2024-03-27 03:14:52 | Re: Properly pathify the union planner |