Fix pgbench options -C and -R together
authorTeodor Sigaev
Fri, 24 Mar 2017 16:23:13 +0000 (19:23 +0300)
committerTeodor Sigaev
Fri, 24 Mar 2017 16:23:13 +0000 (19:23 +0300)
The bug is that prior to --rate doCustom was always disconnect/reconnect
without exiting, but with rate it returns if it has to wait. However threadRun
test whether there is a connection before recalling doCustom, so it was never
called.

Bug is not existed in head branch because of refactoring at
12788ae49e1933f463bc59a6efe46c4a01701b76, patch only 9.6

Author: Fabien Coelho
Reviewed-by: me
https://commitfest.postgresql.org/13/970/

src/bin/pgbench/pgbench.c

index 412f153230c681d3115a3fc670d24479bf358781..163dcad137f6477d9396fd0e33cda6df1920779e 100644 (file)
@@ -1967,7 +1967,6 @@ top:
        st->listen = false;
        st->sleeping = false;
        st->throttling = false;
-       st->is_throttled = false;
        memset(st->prepared, 0, sizeof(st->prepared));
    }
 
@@ -4345,6 +4344,12 @@ threadRun(void *arg)
                        remains--;      /* I've aborted */
                }
            }
+           else if (is_connect && st->sleeping)
+           {
+               /* it is sleeping for throttling, maybe it is done, let us try */
+               if (!doCustom(thread, st, &aggs))
+                   remains--;
+           }
 
            if (st->ecnt > prev_ecnt && commands[st->state]->type == META_COMMAND)
            {