RE: Fix 035_standby_logical_decoding.pl race conditions
Hayato Kuroda (Fujitsu) <kuroda.hayato@fujitsu.com>
From: "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>
To: 'Amit Kapila' <amit.kapila16@gmail.com>, Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Cc: "pgsql-hackers@lists.postgresql.org" <pgsql-hackers@lists.postgresql.org>
Date: 2025-04-02T12:13:52Z
Lists: pgsql-hackers
Attachments
- v5-PG17-1-0001-Stabilize-035_standby_logical_decoding.pl.patch (application/octet-stream) patch v5-0001
- v5-PG17-2-0001-Stabilize-035_standby_logical_decoding.pl.patch (application/octet-stream) patch v5-0001
Dear Amit, Bertrand,
> The other idea to simplify the changes for backbranches:
> sub reactive_slots_change_hfs_and_wait_for_xmins
> {
> ...
> + my ($slot_prefix, $hsf, $invalidated, $needs_active_slot) = @_;
>
> # create the logical slots
> - create_logical_slots($node_standby, $slot_prefix);
> + create_logical_slots($node_standby, $slot_prefix, $needs_active_slot);
>
> ...
> + if ($needs_active_slot)
> + {
> + $handle =
> + make_slot_active($node_standby, $slot_prefix, 1, \$stdout, \$stderr);
> + }
>
> What if this function doesn't take input parameter needs_active_slot
> and rather removes the call to make_slot_active? We will call
> make_slot_active only at the required places. This should make the
> changes much less because after that, we don't need to make changes
> related to drop and create. Sure, in some cases, we will test two
> inactive slots instead of one, but I guess that would be the price to
> keep the tests simple and more like HEAD.
Actually, I could not decide which one is better, so let me share both drafts.
V5-PG17-1 uses the previous approach, and v5-PG17-2 uses new proposed one.
Bertrand, which one do you like?
Best regards,
Hayato Kuroda
FUJITSU LIMITED
Commits
-
Stabilize 035_standby_logical_decoding.pl.
- 105b2cb33617 18.0 landed
- 17a165d60f73 17.5 landed
- 86392e8827d8 16.9 landed