Re: SnapBuildSerialize function forgot pfree variable ondisk_c

Amit Kapila <amit.kapila16@gmail.com>

From: Amit Kapila <amit.kapila16@gmail.com>
To: 范孝剑(康贤) <funnyxj.fxj@alibaba-inc.com>
Cc: pgsql-bugs <pgsql-bugs@lists.postgresql.org>
Date: 2021-01-12T13:42:34Z
Lists: pgsql-bugs

Attachments

On Fri, Nov 13, 2020 at 11:36 AM 范孝剑(康贤) <funnyxj.fxj@alibaba-inc.com> wrote:
>
> If we create logical slot frequently, every time when creating a logical slot, it will generate a LogStandbySnapshot wal record.
>
> Session A:
> do language plpgsql $$
> declare
>   v_text text := 'a';
> begin
>   for i in 1..290000 loop
>     execute $_$select pg_create_logical_replication_slot('logical_slot4', 'test_decoding')$_$;
>     execute $_$select pg_drop_replication_slot('logical_slot4')$_$;
>   end loop;
> exception when others then
>   raise notice 'execute  failed.';
> end;
> $$;
>
> Session B:
> pg_recvlogical -d postgres --start -S test -f test.log
>

Thanks for sharing the test. I am able to reproduce the issue and the
attached fixes it for me. This needs to be backpatched till 9.5 where
it was introduced. I am planning to push this tomorrow.

-- 
With Regards,
Amit Kapila.

Commits

  1. Fix memory leak in SnapBuildSerialize.