From 203346e808c785333e146f042f444df21c4b79f3 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Sat, 10 Sep 2022 22:41:40 +0000 Subject: [PATCH] --- server/AyaNova/util/DbUtil.cs | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/server/AyaNova/util/DbUtil.cs b/server/AyaNova/util/DbUtil.cs index 66370bb5..559db08d 100644 --- a/server/AyaNova/util/DbUtil.cs +++ b/server/AyaNova/util/DbUtil.cs @@ -210,26 +210,33 @@ namespace AyaNova.Util internal static void CheckDatabaseServerAvailable() { //Called by generator when db is down to check if it can connect - //should not run too quickly or too often so a delay is built in here - if (DateTime.UtcNow - LAST_CHECK_IF_DB_SERVER_AVAILABLE < CHECK_IF_DB_SERVER_AVAILABLE_DELAY)//no more often than every 10 seconds + if (CHECKING_DB_AVAILABLE) return; + //don't check too often just fills log files for no reason + if (DateTime.UtcNow - CHECKED_DB_AVAILABLE_LAST < CHECK_DB_AVAILABLE_EVERY_INTERVAL) return; + CHECKING_DB_AVAILABLE = true; try { - using (var conn = new Npgsql.NpgsqlConnection(AdminConnectionString)) + using (AyContext ct = ServiceProviderProvider.DBContext) { - conn.Open(); - conn.Close(); + var dummy = ct.GlobalBizSettings.FirstOrDefault(z => z.Id == 1); } } catch { return; } + finally + { + CHECKED_DB_AVAILABLE_LAST = DateTime.UtcNow; + CHECKING_DB_AVAILABLE = false; + } //We have db available ServerGlobalOpsSettingsCache.DBAVAILABLE = true; } - private static DateTime LAST_CHECK_IF_DB_SERVER_AVAILABLE = DateTime.MinValue; - private static TimeSpan CHECK_IF_DB_SERVER_AVAILABLE_DELAY = new TimeSpan(0, 0, 10); + private static bool CHECKING_DB_AVAILABLE = false; + private static DateTime CHECKED_DB_AVAILABLE_LAST = DateTime.MinValue; + private static TimeSpan CHECK_DB_AVAILABLE_EVERY_INTERVAL = new TimeSpan(0, 0, 60); /////////////////////////////////////////////////////////// @@ -242,7 +249,7 @@ namespace AyaNova.Util if (ex.Message.Contains("transient failure") && ex.Source.Contains("PostgreSQL")) ServerGlobalOpsSettingsCache.DBAVAILABLE = false; } - + /////////////////////////////////////////// //Verify that database exists, if not, then create it