postgres.git / summary / log / commit / refs

commit    46c193213adb4cbcdd0f8198b361de27d0ca13fe
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Fri Jul 26 19:17:03 2019 +0000
First released in: 10.10, 11.5

    Fix possible lockup in pgbench with -R.
    
    pgbench would sometimes get stuck waiting forever after its last
    client thread terminated, due to failing to check for there being
    nothing more to wait for.
    
    Bug introduced during refactoring in v10 (I didn't bother to try to
    assign blame to a specific commit).  It's already repaired in
    HEAD/v12 thanks to commit 3bac77c48, but v10 and v11 need this fix.
    
    Fabien Coelho, per report from Tomas Vondra; reviewed by
    Yoshikazu Imai
    
    Discussion: https://postgr.es/m/cc5d76c1-6144-bbed-ad1b-961d13d88f3b@2ndquadrant.com


src/bin/pgbench/pgbench.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c index 2bdfc89d2a5..0c1b01ecdae 100644 --- a/src/bin/pgbench/pgbench.c +++ b/src/bin/pgbench/pgbench.c @@ -4515,6 +4515,10 @@ threadRun(void *arg) } } + /* under throttling we may have finished the last client above */ + if (remains == 0) + break; + /* also wake up to print the next progress report on time */ if (progress && min_usec > 0 && thread->tid == 0) { [parent: 55862b2e9303]