From aafa5e55963122fb99fdd4362a5b111cfc0b4b2b Mon Sep 17 00:00:00 2001 From: STK0Cervanthes Date: Sat, 15 Aug 2026 02:34:38 +0200 Subject: [PATCH] fix: actually apply db_min_poolsize/db_max_poolsize/db_use_pooling/db_conn_reset to MySQL connection pool --- GenOnlineService/Program.cs | 16 +++++++++++----- GenOnlineService/appsettings.json | 6 +++++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/GenOnlineService/Program.cs b/GenOnlineService/Program.cs index 508b202..0b8ae68 100644 --- a/GenOnlineService/Program.cs +++ b/GenOnlineService/Program.cs @@ -400,10 +400,12 @@ private static async Task InitializeDatabase(WebApplicationBuilder builder) string? password = dbSettings.GetValue("db_password"); UInt16? port = dbSettings.GetValue("db_port"); - int? db_min_poolsize = dbSettings.GetValue("db_min_poolsize"); - int? db_max_poolsize = dbSettings.GetValue("db_max_poolsize"); - bool? db_use_pooling = dbSettings.GetValue("db_use_pooling"); - bool? db_conn_reset = dbSettings.GetValue("db_conn_reset"); + // Fall back to MySql.Data's own defaults when a key is absent, rather than silently + // disabling pooling / zeroing the pool size for deployments predating these settings. + int db_min_poolsize = dbSettings.GetValue("db_min_poolsize") ?? 0; + int db_max_poolsize = dbSettings.GetValue("db_max_poolsize") ?? 100; + bool db_use_pooling = dbSettings.GetValue("db_use_pooling") ?? true; + bool db_conn_reset = dbSettings.GetValue("db_conn_reset") ?? true; int? db_connect_timeout = dbSettings.GetValue("db_connect_timeout"); int? db_command_timeout = dbSettings.GetValue("db_command_timeout"); @@ -451,7 +453,11 @@ private static async Task InitializeDatabase(WebApplicationBuilder builder) Password = password, ConnectionTimeout = (uint)db_connect_timeout, DefaultCommandTimeout = (uint)db_command_timeout, - SslMode = MySql.Data.MySqlClient.MySqlSslMode.Preferred + SslMode = MySql.Data.MySqlClient.MySqlSslMode.Preferred, + Pooling = db_use_pooling, + MinimumPoolSize = (uint)db_min_poolsize, + MaximumPoolSize = (uint)db_max_poolsize, + ConnectionReset = db_conn_reset }; // TODO_EFCORE: Consider use of ExecuteDeleteAsync and options.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking); diff --git a/GenOnlineService/appsettings.json b/GenOnlineService/appsettings.json index 92079ed..2243044 100644 --- a/GenOnlineService/appsettings.json +++ b/GenOnlineService/appsettings.json @@ -57,7 +57,11 @@ "db_password": "dbpassword", "db_port": 3306, "db_connect_timeout": 10, - "db_command_timeout": 10 + "db_command_timeout": 10, + "db_min_poolsize": 10, + "db_max_poolsize": 500, + "db_use_pooling": true, + "db_conn_reset": true }, "MatchData": { "upload_match_data": false,