From a45acb59ff805d2be29266b2caa0030dc58cfc43 Mon Sep 17 00:00:00 2001 From: Johannes 'fish' Ziemke Date: Mon, 17 Feb 2020 14:21:16 +0100 Subject: [PATCH] apiserver: Close rows before reusing tx Reusing tx before closing rows (might) result in the following error: [mysql] 2020/02/17 11:55:38 packets.go:427: busy buffer This closes #3098 --- backend/src/apiserver/storage/db_status_store.go | 5 +++-- backend/src/apiserver/storage/default_experiment_store.go | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/backend/src/apiserver/storage/db_status_store.go b/backend/src/apiserver/storage/db_status_store.go index 07798a3c304..3acf9f88b91 100644 --- a/backend/src/apiserver/storage/db_status_store.go +++ b/backend/src/apiserver/storage/db_status_store.go @@ -46,10 +46,11 @@ func (s *DBStatusStore) InitializeDBStatusTable() error { tx.Rollback() return util.NewInternalServerError(err, "Failed to load database status.") } - defer rows.Close() + next := rows.Next() + rows.Close() // The table is not initialized - if !rows.Next() { + if !next { sql, args, queryErr := sq. Insert("db_statuses"). SetMap(defaultDBStatus). diff --git a/backend/src/apiserver/storage/default_experiment_store.go b/backend/src/apiserver/storage/default_experiment_store.go index 6eb5eb5087b..6fe898cff1d 100644 --- a/backend/src/apiserver/storage/default_experiment_store.go +++ b/backend/src/apiserver/storage/default_experiment_store.go @@ -48,10 +48,11 @@ func (s *DefaultExperimentStore) initializeDefaultExperimentTable() error { tx.Rollback() return util.NewInternalServerError(err, "Failed to get default experiment.") } - defer rows.Close() + next := rows.Next() + rows.Close() // If the table is not initialized, then set the default value. - if !rows.Next() { + if !next { sql, args, queryErr := sq. Insert("default_experiments"). SetMap(defaultExperimentDBValue).