Re: [BUG] Logical replica crash if there was an error in a function. - Mailing list pgsql-hackers

From vignesh C
Subject Re: [BUG] Logical replica crash if there was an error in a function.
Date
Msg-id CALDaNm2CgMnHddFoyMM_sT60zZR0YL-6yzT+Eu7r-sAyuQXVvw@mail.gmail.com
Whole thread Raw
In response to Re: [BUG] Logical replica crash if there was an error in a function.  ("Anton A. Melnikov" <aamelnikov@inbox.ru>)
Responses Re: [BUG] Logical replica crash if there was an error in a function.  ("Anton A. Melnikov" <aamelnikov@inbox.ru>)
List pgsql-hackers
On Sun, 11 Dec 2022 at 09:21, Anton A. Melnikov <aamelnikov@inbox.ru> wrote:
>
>
> On 07.12.2022 21:03, Andres Freund wrote:
>
> >
> > This CF entry causes tests to fail on all platforms:
> > https://cirrus-ci.com/build/5755408111894528
> >
> > E.g.
> >
https://api.cirrus-ci.com/v1/artifact/task/5298457144459264/testrun/build/testrun/subscription/100_bugs/log/regress_log_100_bugs
> >
> > #### Begin standard error
> > psql:<stdin>:1: NOTICE:  dropped replication slot "sub1" on publisher
> > #### End standard error
> > timed out waiting for match: ERROR:  relation "error_name" does not exist at character at
/tmp/cirrus-ci-build/src/test/subscription/t/100_bugs.plline 115.
 
> >
> > Greetings,
> >
> > Andres Freund
>
> Thank you for reminding!
>
> There was a conflict when applying v2 on current master.
> Rebased v3 is attached.

Few suggestions:
1) There is a warning:
+# This would crash on the subscriber if not fixed
+$node_publisher->safe_psql('postgres', "INSERT INTO tab1 VALUES (3, 4)");
+
+my $result = $node_subscriber->wait_for_log(
+       "ERROR:  relation \"error_name\" does not exist at character"
+);

 "my" variable $result masks earlier declaration in same scope at
t/100_bugs.pl line 400.

You can change:
my $result = $node_subscriber->safe_psql('postgres', "SELECT * FROM sch1.t1");
to
$result = $node_subscriber->safe_psql('postgres', "SELECT * FROM sch1.t1");

2) Now that the crash is fixed, you could change it to a better message:
+# This would crash on the subscriber if not fixed
+$node_publisher->safe_psql('postgres', "INSERT INTO tab1 VALUES (3, 4)");
+
+my $result = $node_subscriber->wait_for_log(
+       "ERROR:  relation \"error_name\" does not exist at character"
+);

Regards,
Vignesh



pgsql-hackers by date:

Previous
From: vignesh C
Date:
Subject: Re: Improve tab completion for ALTER FUNCTION/PROCEDURE/ROUTINE
Next
From: Ankit Kumar Pandey
Date:
Subject: Re: Todo: Teach planner to evaluate multiple windows in the optimal order