Hi Amit,

On Fri, May 15, 2026 at 5:23 PM Amit Kapila <[email protected]> wrote:
>
> On Fri, May 15, 2026 at 11:02 AM Xuneng Zhou <[email protected]> wrote:
> >
> > pg_sync_replication_slots() now retries inside a single SQL function
> > call.  Unlike the slotsync worker, it does not get a transaction boundary
> > between retry cycles, so allocations made while fetching and synchronizing
> > remote slots can accumulate until the function returns.
> >
> > The existing list_free_deep(remote_slots) is not enough to bound this.
> > It frees the List cells and the RemoteSlot structs stored as list
> > elements, but it does not recursively free allocations owned by those
> > structs, such as the copied slot name, plugin name, and database name.
> >
>
> Right.
>
> > It also does not release unrelated per-cycle allocations made while
> > fetching and processing the remote slots.
> >
>
> BTW, did you notice via test or otherwise, what and how much other
> unrelated memory is being allocated during each sync cycle if we
> manually free the allocations you observed? This is mainly to learn
> the impact of not doing all these allocations in some short-duration
> memory context.

I noticed this by reading the feature code while walking through the
PG 19 release notes, not by observing actual memory growth in a
running system. Besides the RemoteSlot field strings, there seems to
be a few smaller per-cycle allocations that also accumulate:
quote_literal_cstr() strings used to build the filtered query, a
temporary TextDatumGetCString() result for invalidation_reason, the
standalone TupleTableSlot in fetch_remote_slots(), and the list
container built by get_local_synced_slots(). I chose a per-cycle
memory context over manual pfrees to make the retry-cycle lifetime
explicit and avoid maintaining a destructor for every current and
future allocation in this path. It may be worth measuring how much
extra memory actually accumulates during an extended wait to confirm
the practical impact.

-- 
Regards,
Xuneng Zhou
HighGo Software Co., Ltd.


Reply via email to