Re: pg_recvlogical prints bogus error when interrupted - Mailing list pgsql-hackers

From Andres Freund
Subject Re: pg_recvlogical prints bogus error when interrupted
Date
Msg-id 20221027231139.lqsjrtwpqhemepwo@awork3.anarazel.de
Whole thread Raw
In response to Re: pg_recvlogical prints bogus error when interrupted  (Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>)
Responses Re: pg_recvlogical prints bogus error when interrupted  (Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>)
List pgsql-hackers
Hi,

On 2022-10-24 08:15:11 +0530, Bharath Rupireddy wrote:
> I came up with the attached v2 patch, please have a look.

Thanks for working on this!


> +        /* When we get SIGINT/SIGTERM, we exit */
> +        if (ready_to_exit)
> +        {
> +            /*
> +             * Try informing the server about our exit, but don't wait around
> +             * or retry on failure.
> +             */
> +            (void) PQputCopyEnd(conn, NULL);
> +            (void) PQflush(conn);
> +            time_to_abort = ready_to_exit;

This doesn't strike me as great - because the ready_to_exit isn't checked in
the loop around StreamLogicalLog(), we'll reconnect if something else causes
StreamLogicalLog() to return.

Why do we need both time_to_abort and ready_to_exit? Perhaps worth noting that
time_to_abort is still an sig_atomic_t, but isn't modified in a signal
handler, which seems a bit unnecessarily confusing.

Greetings,

Andres Freund



pgsql-hackers by date:

Previous
From: Andres Freund
Date:
Subject: Re: Documentation for building with meson
Next
From: Peter Smith
Date:
Subject: Re: Support logical replication of DDLs