diff options
Diffstat (limited to 'src/bin/pgbench/pgbench.c')
-rw-r--r-- | src/bin/pgbench/pgbench.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c index d17f69333f4..0dfb625a888 100644 --- a/src/bin/pgbench/pgbench.c +++ b/src/bin/pgbench/pgbench.c @@ -3181,6 +3181,10 @@ advanceConnectionState(TState *thread, CState *st, StatsData *agg) if ((st->con = doConnect()) == NULL) { + /* + * as the bench is already running, we do not abort + * the process + */ pg_log_error("client %d aborted while establishing connection", st->id); st->state = CSTATE_ABORTED; break; @@ -4456,7 +4460,10 @@ runInitSteps(const char *initialize_steps) initPQExpBuffer(&stats); if ((con = doConnect()) == NULL) + { + pg_log_fatal("could not create connection for initialization"); exit(1); + } setup_cancel_handler(NULL); SetCancelConn(con); @@ -6399,7 +6406,10 @@ main(int argc, char **argv) /* opening connection... */ con = doConnect(); if (con == NULL) + { + pg_log_fatal("could not create connection for setup"); exit(1); + } /* report pgbench and server versions */ printVersion(con); @@ -6625,7 +6635,7 @@ threadRun(void *arg) if (thread->logfile == NULL) { pg_log_fatal("could not open logfile \"%s\": %m", logpath); - goto done; + exit(1); } } @@ -6650,16 +6660,10 @@ threadRun(void *arg) { if ((state[i].con = doConnect()) == NULL) { - /* - * On connection failure, we meet the barrier here in place of - * GO before proceeding to the "done" path which will cleanup, - * so as to avoid locking the process. - * - * It is unclear whether it is worth doing anything rather - * than coldly exiting with an error message. - */ - THREAD_BARRIER_WAIT(&barrier); - goto done; + /* coldly abort on initial connection failure */ + pg_log_fatal("could not create connection for client %d", + state[i].id); + exit(1); } } } |