From: | Fujii Masao <masao(dot)fujii(at)gmail(dot)com> |
---|---|
To: | Rintaro Ikeda <ikedarintarof(at)oss(dot)nttdata(dot)com> |
Cc: | Yugo Nagata <nagata(at)sraoss(dot)co(dot)jp>, Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com>, Jakub Wartak <jakub(dot)wartak(at)enterprisedb(dot)com>, "Hayato Kuroda (Fujitsu)" <kuroda(dot)hayato(at)fujitsu(dot)com>, "slpmcf(at)gmail(dot)com" <slpmcf(at)gmail(dot)com>, "boekewurm+postgres(at)gmail(dot)com" <boekewurm+postgres(at)gmail(dot)com>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>, Srinath Reddy Sadipiralla <srinath2133(at)gmail(dot)com>, Dilip Kumar <dilipbalaut(at)gmail(dot)com> |
Subject: | Re: Suggestion to add --continue-client-on-abort option to pgbench |
Date: | 2025-10-21 00:58:12 |
Message-ID: | CAHGQGwHSUuMr0ieKv++EreK_k=VGK9_aMLVqWMNbVosdd6vsxQ@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Sun, Oct 19, 2025 at 10:12 PM Rintaro Ikeda
<ikedarintarof(at)oss(dot)nttdata(dot)com> wrote:
>
> Hi,
>
> On 2025/10/02 1:22, Fujii Masao wrote:
> > Regarding 0002:
> >
> > - if (canRetryError(st->estatus))
> > + if (continue_on_error || canRetryError(st->estatus))
> > {
> > if (verbose_errors)
> > commandError(st, PQresultErrorMessage(res));
> > goto error;
> >
> > With this change, even non-SQL errors (e.g., connection failures) would
> > satisfy the condition when --continue-on-error is set. Isn't that a problem?
> > Shouldn't we also check that the error status is one that
> > --continue-on-error is meant to handle?
>
> I agree that connection failures should not be ignored even when
> --continue-on-error is specified.
> For now, I’m not sure if other cases would cause issues, so the updated patch
> explicitly checks the connection status and emits an error message when the
> connection is lost.
I agree that connection failures should prevent further processing even with
--continue-on-error, and pgbench should focus on handling that first.
However, the patch doesn't seem to handle cases where the connection is
terminated by an admin (e.g., via pg_terminate_backend()) correctly.
Please see the following test case, which is the same one I shared earlier:
-----------------------------------------
$ cat pipeline.sql
\startpipeline
DO $$
BEGIN
PERFORM pg_sleep(3);
PERFORM pg_terminate_backend(pg_backend_pid());
END $$;
\endpipeline
$ pgbench -n -f pipeline.sql -c 2 -t 4 -M extended --continue-on-error
-----------------------------------------
In this case, PQstatus() (added in readCommandResponse() by the patch)
still returns CONNECTION_OK (BTW, the SQLSTATE is 57P01 in this case).
As a result, the expected error message like “client ... script ... aborted
in command ...” isn't reported. So the PQstatus() check alone that
the patch added doesn't fully fix the issue.
Regards,
--
Fujii Masao
From | Date | Subject | |
---|---|---|---|
Next Message | Sami Imseih | 2025-10-21 01:16:51 | Re: Skip unregistered custom kinds on stats load |
Previous Message | Mihail Nikalayeu | 2025-10-21 00:55:00 | Re: Fix race condition in SSI when reading PredXact->SxactGlobalXmin |