diff --git a/acronis-db-bench/engine/main.go b/acronis-db-bench/engine/main.go index b91e3fea..418c82d4 100644 --- a/acronis-db-bench/engine/main.go +++ b/acronis-db-bench/engine/main.go @@ -201,13 +201,18 @@ func Main() { if testOpts.DBOpts.Reconnect { b.WorkerPreRunFunc = func(worker *benchmark.BenchmarkWorker) { - var workerData = worker.Data.(*DBWorkerData) - - if workerData.workingConn != nil { + if workerData, ok := worker.Data.(*DBWorkerData); ok && workerData.workingConn != nil { workerData.workingConn.Close() } - worker.Data = nil + + // Reinitialize the worker + var workerData DBWorkerData + var err error + if workerData.workingConn, err = NewDBConnector(&b.TestOpts.(*TestOpts).DBOpts, worker.WorkerID, false, worker.Logger, 1); err != nil { + b.Exit(fmt.Sprintf("Failed to reinitialize database connection for worker %d: %v", worker.WorkerID, err)) + } + worker.Data = &workerData } } diff --git a/acronis-db-bench/engine/workers.go b/acronis-db-bench/engine/workers.go index 810a3d92..6c8ba77a 100644 --- a/acronis-db-bench/engine/workers.go +++ b/acronis-db-bench/engine/workers.go @@ -30,7 +30,7 @@ func initWorker(worker *benchmark.BenchmarkWorker, testDesc *TestDesc, rowsRequi var err error if workerData.workingConn, err = NewDBConnector(&b.TestOpts.(*TestOpts).DBOpts, workerID, false, worker.Logger, 1); err != nil { - return + b.Exit(fmt.Sprintf("Failed to initialize database connection for worker %d: %v", workerID, err)) } worker.Data = &workerData