From ac8c85d04b133509071b1de60a027ebe00654696 Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Fri, 24 May 2024 11:21:21 +0900 Subject: [PATCH] Improve stability of subscription/029_on_error.pl This test was failing when using wal_debug=on and -DWAL_DEBUG because of additional log entries that made the test grab an LSN not mapping with the error expected in the test. Previously the test would look for the first matching line to get the LSN to skip up to. This is improved by having the test scan the logs with a regexp that checks for the expected ERROR string, ensuring that the wanted LSN comes from the correct context. Backpatch down to 15 where this test has been introduced. Author: Ian Ilyasov Discussion: https://postgr.es/m/GV1P251MB100415F17E6B2FDD7188777ECDE32@GV1P251MB1004.EURP251.PROD.OUTLOOK.COM Backpatch-through: 15 --- src/test/subscription/t/029_on_error.pl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/test/subscription/t/029_on_error.pl b/src/test/subscription/t/029_on_error.pl index 5c29e5cc32..0ab57a4b5b 100644 --- a/src/test/subscription/t/029_on_error.pl +++ b/src/test/subscription/t/029_on_error.pl @@ -26,10 +26,11 @@ sub test_skip_lsn "SELECT subenabled = FALSE FROM pg_subscription WHERE subname = 'sub'" ); - # Get the finish LSN of the error transaction. + # Get the finish LSN of the error transaction, mapping the expected + # ERROR with its CONTEXT when retrieving this information. my $contents = slurp_file($node_subscriber->logfile, $offset); $contents =~ - qr/processing remote data for replication origin \"pg_\d+\" during message type "INSERT" for replication target relation "public.tbl" in transaction \d+, finished at ([[:xdigit:]]+\/[[:xdigit:]]+)/ + qr/duplicate key value violates unique constraint "tbl_pkey".*\n.*DETAIL:.*\n.*CONTEXT:.* for replication target relation "public.tbl" in transaction \d+, finished at ([[:xdigit:]]+\/[[:xdigit:]]+)/m or die "could not get error-LSN"; my $lsn = $1;