From 2455f7463e00b0f046e1d8a8d8feccff600acc8b Mon Sep 17 00:00:00 2001 From: zyguan Date: Sun, 9 Oct 2022 05:22:55 +0000 Subject: [PATCH] tpch: check connection before each run iteration Signed-off-by: zyguan --- pkg/workload/base.go | 3 +++ tpch/workload.go | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/pkg/workload/base.go b/pkg/workload/base.go index 1cadf01..9f9eabf 100644 --- a/pkg/workload/base.go +++ b/pkg/workload/base.go @@ -20,6 +20,9 @@ type TpcState struct { } func (t *TpcState) RefreshConn(ctx context.Context) error { + if t.Conn != nil { + t.Conn.Close() + } conn, err := t.DB.Conn(ctx) if err != nil { return err diff --git a/tpch/workload.go b/tpch/workload.go index de16874..69cfcbf 100644 --- a/tpch/workload.go +++ b/tpch/workload.go @@ -201,6 +201,11 @@ func (w *Workloader) CheckPrepare(ctx context.Context, threadID int) error { func (w *Workloader) Run(ctx context.Context, threadID int) error { s := w.getState(ctx) defer w.updateState(ctx) + if err := s.Conn.PingContext(ctx); err != nil { + if err := s.RefreshConn(ctx); err != nil { + return err + } + } queryName := w.cfg.QueryNames[s.queryIdx%len(w.cfg.QueryNames)] query := query(w.cfg.Driver, queryName)