| From: | Mircea Cadariu <cadariu(dot)mircea(at)gmail(dot)com> |
|---|---|
| To: | Fujii Masao <masao(dot)fujii(at)gmail(dot)com> |
| Cc: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
| Subject: | Re: pg_recvlogical: Prevent flushed data from being re-sent after restarting replication |
| Date: | 2025-11-19 19:57:11 |
| Message-ID: | 4870ee30-6e2a-4786-b45e-4a6581ad736e@gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On 19/11/2025 14:54, Fujii Masao wrote:
> With the patch applied, these duplicate records no longer appear in
> the pg_recvlogical output.
Thanks! Works like a charm. I confirm duplicates no longer appear with
the patch applied.
You can consider adding a test about this in "030_pg_recvlogical.pl",
proposal below:
use IPC::Run qw(start);
my $outfile = $node->basedir . '/reconnect.out';
$node->command_ok(
[
'pg_recvlogical',
'--slot' => 'reconnect_test',
'--dbname' => $node->connstr('postgres'),
'--create-slot',
],
'slot created for reconnection test');
$node->safe_psql('postgres', 'CREATE TABLE t(x int);');
$node->safe_psql('postgres', 'INSERT INTO t VALUES (1);');
my $recv = start [
'pg_recvlogical',
'--slot', 'reconnect_test',
'--dbname', $node->connstr('postgres'),
'--start',
'--file', $outfile,
'--fsync-interval', '1',
'--status-interval', '60',
'--verbose'
], '>', \my $out, '2>', \my $err;
sleep(3);
my $backend_pid = $node->safe_psql('postgres',
"SELECT active_pid FROM pg_replication_slots WHERE slot_name =
'reconnect_test'");
if ($backend_pid ne '')
{
$node->safe_psql('postgres', "SELECT
pg_terminate_backend($backend_pid)");
}
sleep(6);
$node->safe_psql('postgres', 'INSERT INTO t VALUES (2);');
sleep(3);
$recv->signal('TERM');
$recv->finish();
open(my $file, '<', $outfile);
my $count = 0;
while (<$file>) {
if (/INSERT/) {
$count = $count + 1;
}
}
close($file);
cmp_ok($count, '==', 2, 'two INSERTs');
$node->command_ok(
[
'pg_recvlogical',
'--slot' => 'reconnect_test',
'--dbname' => $node->connstr('postgres'),
'--drop-slot'
],
'reconnect_test slot dropped');
--
Regards,
Mircea Cadariu
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Bruce Momjian | 2025-11-19 19:59:28 | 10% drop in code line count in PG 17 |
| Previous Message | Viktor Holmberg | 2025-11-19 19:54:58 | Re: ON CONFLICT DO SELECT (take 3) |