Repost from bugs.
--
Fabien.
---------- Forwarded message ----------
Date: Wed, 25 Jan 2017 18:59:45 +0100 (CET)
From: Fabien COELHO <coe...@cri.ensmp.fr>
To: nuko yokohama <nuko.yokoh...@gmail.com>
Cc: PostgreSQL Bugs List <pgsql-b...@postgresql.org>
Subject: Re: [BUGS] Problem in using pgbench's --connect(-C) and --rate=rate(-R
rate) options together.
It operates normally when only the -C option or only the -R option is
specified.
In the PostgreSQL document, It is not described that "these two options can
not be specified at the same time ". Is this a problem of pgbench?
Yes, indeed there is. Thanks for the report. Option -C is seldom used and
tested.
The problem is already fixed in head. Looking at git log, it was unclear to
guess which change fixed that... After another reading, I got it in one, it has
been fixed by Heikki restructuring patch
12788ae49e1933f463bc59a6efe46c4a01701b76 which has no vocation to be
backpatched to prior versions...
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.
This is exactly the kind of unmanageable state combination that refactoring has
cleaned up.
Attached a small patch which fixes the issue, I think, in 9.6.
Fixing it raised another issue wrt to some stats under -C, that I fixed as
well.
--
Fabien.
diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c
index 531671a..1f1b7bf 100644
--- a/src/bin/pgbench/pgbench.c
+++ b/src/bin/pgbench/pgbench.c
@@ -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)
{
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers