RE: Suggestion to add --continue-client-on-abort option to pgbench

Hayato Kuroda (Fujitsu) <kuroda.hayato@fujitsu.com>

From: "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>
To: 'Yugo Nagata' <nagata@sraoss.co.jp>, ikedarintarof <ikedarintarof@oss.nttdata.com>
Cc: "slpmcf@gmail.com" <slpmcf@gmail.com>, "boekewurm+postgres@gmail.com" <boekewurm+postgres@gmail.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>, Srinath Reddy Sadipiralla <srinath2133@gmail.com>, Dilip Kumar <dilipbalaut@gmail.com>
Date: 2025-06-27T10:59:09Z
Lists: pgsql-hackers
Dear Nagata-san, Ikeda-san,

> > In my opinion, when the --continue-on-error option is enabled, pgbench
> > clients does not need to start new transactions after network errors and
> > other errors except for SQL-level errors.
> 
> +1
> 
> I agree that --continue-on-error prevents pgbench from terminating only when
> SQL-level errors occur, and does not change the behavior in the case of other
> types of errors, including network errors.

OK, so let's do like that.

BTW, initially we were discussing the combination of --continue-on-error and
--exit-on-abort. What it the conclusion?
I feel the Nagata-san's point [1] is valid in this approach.

> > > As I understand it, the proposed --continue-on-error option does not
> > > retry the transaction
> > > in any case; it simply gives up on the transaction. That is, when an
> > > SQL-level error occurs,
> > > the transaction is reported as "failed" rather than "retried", and the
> > > random state is discarded.
> >
> > Retrying the failed transaction is not necessary when the transaction
> > failed due to SQL-level errors. Unlike real-world applications, pgbench
> > does not need to complete specific transaction successfully. In the case
> > of unique constraint violations, retrying the same transaction will
> > likely to result in the same error again.

I intended here that clients could throw away the failed transaction and start
new one again in the case. I hope we are on the same page...

[1]: https://www.postgresql.org/message-id/20250614002453.5c72f2ec80864d840150a642%40sraoss.co.jp

Best regards,
Hayato Kuroda
FUJITSU LIMITED




Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. pgbench: Fix assertion failure with multiple \syncpipeline in pipeline mode.

  2. pgbench: Add --continue-on-error option.

  3. Fix "inconsistent DLL linkage" warning on Windows MSVC

  4. pgbench: Fix error reporting in readCommandResponse().

  5. pgbench: Fix assertion failure with retriable errors in pipeline mode.

  6. Allow pgbench to retry in some cases.