Re: Suggestion to add --continue-client-on-abort option to pgbench - Mailing list pgsql-hackers

From Yugo Nagata
Subject Re: Suggestion to add --continue-client-on-abort option to pgbench
Date
Msg-id 20250617163528.aeecfb38d31a31b94585517e@sraoss.co.jp
Whole thread Raw
In response to Re: Suggestion to add --continue-client-on-abort option to pgbench  (Yugo Nagata <nagata@sraoss.co.jp>)
List pgsql-hackers
On Tue, 17 Jun 2025 16:28:28 +0900
Yugo Nagata <nagata@sraoss.co.jp> wrote:

> On Tue, 17 Jun 2025 03:47:00 +0000
> "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com> wrote:
> 
> > Dear Nagata-san,
> > 
> > > > > 2. The exit-on-abort option and continue-on-error option are mutually
> > > exclusive.
> > > > > Therefore, I've updated the patch to throw a FATAL error when two options
> > > are
> > > > > set simultaneously. Corresponding explanation was also added.
> > > 
> > > I don't think that's right since "abort" and "error" are different concept in pgbench.
> > > (Here, "abort" refers to the termination of a client, not a transaction abort.)
> > > 
> > > The --exit-on-abort option forces to exit pgbench immediately when any client is
> > > aborted
> > > due to some error. When the --continue-on-error option is not set, SQL errors
> > > other than
> > > deadlock or serialization error cause a client to be aborted. On the other hand,
> > > when the option
> > > is set, clients are not aborted due to any SQL errors; instead they continue to run
> > > after them.
> > > However, clients can still be aborted for other reasons, such as connection
> > > failures or
> > > meta-command errors (e.g., \set x 1/0). In these cases, the --exit-on-abort option
> > > remains
> > > useful even when --continue-on-error is enabled.
> > 
> > To clarify: another approach is that allow --continue-on-error option to continue
> > running even when clients meet such errors. Which one is better?
> 
> It might be worth discussing which types of errors this option should allow pgbench
> to continue after. On my understand the current patch's goal is to allow only SQL
> level errors like comstraint violations. It seems good because this could simulate
> behaviour of applications that ignore or retry such errors (although they are not
> retried in the current patch). Perhaps, it makes sense to allow to continue after
> some network errors because it would enable benchmarks usign a cluster system as a
> cloud service that could report a temporary error during a failover.

I apologize for accidentally leaving the draft paragraph just above in my previous post.
Please ignore it.

> It might be worth discussing which types of errors this option should allow pgbench to
> continue after.
> 
> As I understand it, the current patch aims to allow continuation only after SQL-level
> errors, such as constraint violations. That seems reasonable, as it can simulate the
> behavior of applications that ignore or retry such errors (even though retries are not
> implemented in the current patch).
> 
> Perhaps it also makes sense to allow continuation after certain network errors, as this
> would enable benchmarking with cluster systems or cloud services, which might report
> temporary errors during a failover. We would need additional work to properly detect
> and handle network errors, though.
> 
> However, I'm not sure it's reasonable to allow continuation after other types of errors,
> such as misuse of meta-commands or unexpected errors during their execution, since these
> wouldn't simulate any real application behavior and would more likely indicate a failure
> in the benchmarking process itself.
> 
> Best regards,
> Yugo Nagata
> 
> -- 
> Yugo Nagata <nagata@sraoss.co.jp>
> 
> 


-- 
Yugo Nagata <nagata@sraoss.co.jp>



pgsql-hackers by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: pg_dump/pg_dumpall help synopses and terminology
Next
From: Peter Eisentraut
Date:
Subject: Re: pg_recvlogical cannot create slots with failover=true