Remove unnecessary segment number calculation after wal_removed invalidation of replication slots

From: Bharath Rupireddy <bharath(dot)rupireddyforpostgres(at)gmail(dot)com>
To: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Remove unnecessary segment number calculation after wal_removed invalidation of replication slots
Date: 2024-04-13 09:10:00
Message-ID: CALj2ACU_m+QWH4nCdin0Z4aytG50CJPP-bcpqjj3tP63wiYtiQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

It looks like there's an unnecessary segment number calculation after
InvalidateObsoleteReplicationSlots in CreateCheckPoint and
CreateRestartPoint. Since none of RedoRecPtr, _logSegNo and
wal_segment_size are changed by the slot invalidation code [1], the
recalculation of
_logSegNo with XLByteToSeg seems unnecessary.

I've attached a patch to fix this.

[1] Assertions like the following won't fail with make check-world
proving InvalidateObsoleteReplicationSlots doesn't change them at all.

XLByteToSeg(RedoRecPtr, _logSegNo, wal_segment_size);
KeepLogSeg(recptr, &_logSegNo);
+ _logSegNo_saved = _logSegNo;
+ RedoRecPtr_saved = RedoRecPtr;
if (InvalidateObsoleteReplicationSlots(RS_INVAL_WAL_REMOVED,

_logSegNo, InvalidOid,

InvalidTransactionId))
{
+ Assert(_logSegNo_saved == _logSegNo);
+ Assert(RedoRecPtr_saved == RedoRecPtr);

--
Bharath Rupireddy
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com

Attachment Content-Type Size
v1-0001-Remove-unnecessary-seg-no-calculation-after-check.patch application/octet-stream 1.1 KB

Browse pgsql-hackers by date

  From Date Subject
Next Message Tomas Vondra 2024-04-13 09:19:21 Re: Parallel CREATE INDEX for BRIN indexes
Previous Message Bharath Rupireddy 2024-04-13 09:04:00 Add missing ConditionVariableCancelSleep() in slot.c