From e8a464626c84b71ee1a3f44325cadf0612319b52 Mon Sep 17 00:00:00 2001 From: meiji163 Date: Wed, 19 Mar 2025 14:25:39 -0700 Subject: [PATCH 1/6] update mysql backend timeout --- pkg/group/mysql.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/group/mysql.go b/pkg/group/mysql.go index ef4fa8c..74d9dad 100644 --- a/pkg/group/mysql.go +++ b/pkg/group/mysql.go @@ -113,7 +113,7 @@ func getBackendDBUri() string { // Set collation instead of charset, if BackendMySQLCollation is specified dsnCharsetCollation = fmt.Sprintf("collation=%s", config.Settings().BackendMySQLCollation) } - return fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?interpolateParams=true&%s&timeout=500ms", + return fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?interpolateParams=true&%s&timeout=1s", config.Settings().BackendMySQLUser, config.Settings().BackendMySQLPassword, config.Settings().BackendMySQLHost, From 8b7ffe5809f4a9d81a077aefd3931c2a3b4e853c Mon Sep 17 00:00:00 2001 From: meiji163 Date: Wed, 19 Mar 2025 14:34:31 -0700 Subject: [PATCH 2/6] fix test --- pkg/group/mysql_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/group/mysql_test.go b/pkg/group/mysql_test.go index 1049b38..3898f5d 100644 --- a/pkg/group/mysql_test.go +++ b/pkg/group/mysql_test.go @@ -26,10 +26,10 @@ func TestGetBackendDBUri(t *testing.T) { // test default (charset) dbUri := getBackendDBUri() - test.S(t).ExpectEquals(dbUri, "gromit:penguin@tcp(myhost:3306)/test_database?interpolateParams=true&charset=utf8mb4,utf8,latin1&timeout=500ms") + test.S(t).ExpectEquals(dbUri, "gromit:penguin@tcp(myhost:3306)/test_database?interpolateParams=true&charset=utf8mb4,utf8,latin1&timeout=1s") // test setting collation config.Settings().BackendMySQLCollation = "utf8mb4_unicode_ci" dbUri = getBackendDBUri() - test.S(t).ExpectEquals(dbUri, "gromit:penguin@tcp(myhost:3306)/test_database?interpolateParams=true&collation=utf8mb4_unicode_ci&timeout=500ms") + test.S(t).ExpectEquals(dbUri, "gromit:penguin@tcp(myhost:3306)/test_database?interpolateParams=true&collation=utf8mb4_unicode_ci&timeout=1s") } From d20f1a15b2c97bba6bcfa1a11935906cf4dbc368 Mon Sep 17 00:00:00 2001 From: meiji163 Date: Fri, 21 Mar 2025 18:28:03 -0700 Subject: [PATCH 3/6] increase election timeout to 2s --- pkg/group/mysql.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/group/mysql.go b/pkg/group/mysql.go index 74d9dad..fa92e3e 100644 --- a/pkg/group/mysql.go +++ b/pkg/group/mysql.go @@ -69,7 +69,7 @@ type MySQLBackend struct { const maxConnections = 3 const electionExpireSeconds = 5 -const electionInterval = time.Second +const electionInterval = 2 * time.Second const healthInterval = 2 * electionInterval const stateInterval = 10 * time.Second From d9dfc35353a09733b573d0549441cfe96327e5ea Mon Sep 17 00:00:00 2001 From: meiji163 Date: Fri, 21 Mar 2025 18:46:50 -0700 Subject: [PATCH 4/6] client timeout 2s Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- pkg/group/mysql.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/group/mysql.go b/pkg/group/mysql.go index fa92e3e..8e51338 100644 --- a/pkg/group/mysql.go +++ b/pkg/group/mysql.go @@ -113,7 +113,7 @@ func getBackendDBUri() string { // Set collation instead of charset, if BackendMySQLCollation is specified dsnCharsetCollation = fmt.Sprintf("collation=%s", config.Settings().BackendMySQLCollation) } - return fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?interpolateParams=true&%s&timeout=1s", + return fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?interpolateParams=true&%s&timeout=2s", config.Settings().BackendMySQLUser, config.Settings().BackendMySQLPassword, config.Settings().BackendMySQLHost, From caa7bbb0a1f1a4cd01f0acaaa63d7897949125a7 Mon Sep 17 00:00:00 2001 From: meiji163 Date: Fri, 21 Mar 2025 18:48:37 -0700 Subject: [PATCH 5/6] fix test again --- pkg/group/mysql_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/group/mysql_test.go b/pkg/group/mysql_test.go index 3898f5d..6640a24 100644 --- a/pkg/group/mysql_test.go +++ b/pkg/group/mysql_test.go @@ -26,10 +26,10 @@ func TestGetBackendDBUri(t *testing.T) { // test default (charset) dbUri := getBackendDBUri() - test.S(t).ExpectEquals(dbUri, "gromit:penguin@tcp(myhost:3306)/test_database?interpolateParams=true&charset=utf8mb4,utf8,latin1&timeout=1s") + test.S(t).ExpectEquals(dbUri, "gromit:penguin@tcp(myhost:3306)/test_database?interpolateParams=true&charset=utf8mb4,utf8,latin1&timeout=2s") // test setting collation config.Settings().BackendMySQLCollation = "utf8mb4_unicode_ci" dbUri = getBackendDBUri() - test.S(t).ExpectEquals(dbUri, "gromit:penguin@tcp(myhost:3306)/test_database?interpolateParams=true&collation=utf8mb4_unicode_ci&timeout=1s") + test.S(t).ExpectEquals(dbUri, "gromit:penguin@tcp(myhost:3306)/test_database?interpolateParams=true&collation=utf8mb4_unicode_ci&timeout=2s") } From d54c858507ddc635c57b683638ac001a6e6f28c5 Mon Sep 17 00:00:00 2001 From: meiji163 Date: Wed, 26 Mar 2025 20:25:53 -0700 Subject: [PATCH 6/6] increase timeout and election expiration --- pkg/group/mysql.go | 4 ++-- pkg/group/mysql_test.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/group/mysql.go b/pkg/group/mysql.go index 8e51338..97fd3cb 100644 --- a/pkg/group/mysql.go +++ b/pkg/group/mysql.go @@ -67,7 +67,7 @@ type MySQLBackend struct { } const maxConnections = 3 -const electionExpireSeconds = 5 +const electionExpireSeconds = 10 const electionInterval = 2 * time.Second const healthInterval = 2 * electionInterval @@ -113,7 +113,7 @@ func getBackendDBUri() string { // Set collation instead of charset, if BackendMySQLCollation is specified dsnCharsetCollation = fmt.Sprintf("collation=%s", config.Settings().BackendMySQLCollation) } - return fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?interpolateParams=true&%s&timeout=2s", + return fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?interpolateParams=true&%s&timeout=8s", config.Settings().BackendMySQLUser, config.Settings().BackendMySQLPassword, config.Settings().BackendMySQLHost, diff --git a/pkg/group/mysql_test.go b/pkg/group/mysql_test.go index 6640a24..3991db0 100644 --- a/pkg/group/mysql_test.go +++ b/pkg/group/mysql_test.go @@ -26,10 +26,10 @@ func TestGetBackendDBUri(t *testing.T) { // test default (charset) dbUri := getBackendDBUri() - test.S(t).ExpectEquals(dbUri, "gromit:penguin@tcp(myhost:3306)/test_database?interpolateParams=true&charset=utf8mb4,utf8,latin1&timeout=2s") + test.S(t).ExpectEquals(dbUri, "gromit:penguin@tcp(myhost:3306)/test_database?interpolateParams=true&charset=utf8mb4,utf8,latin1&timeout=8s") // test setting collation config.Settings().BackendMySQLCollation = "utf8mb4_unicode_ci" dbUri = getBackendDBUri() - test.S(t).ExpectEquals(dbUri, "gromit:penguin@tcp(myhost:3306)/test_database?interpolateParams=true&collation=utf8mb4_unicode_ci&timeout=2s") + test.S(t).ExpectEquals(dbUri, "gromit:penguin@tcp(myhost:3306)/test_database?interpolateParams=true&collation=utf8mb4_unicode_ci&timeout=8s") }