diff --git a/Common/Common.csproj b/Common/Common.csproj index d760f782b..102aae1ed 100644 --- a/Common/Common.csproj +++ b/Common/Common.csproj @@ -42,6 +42,7 @@ + diff --git a/Common/Const.cs b/Common/Const.cs new file mode 100644 index 000000000..a67d74546 --- /dev/null +++ b/Common/Const.cs @@ -0,0 +1,12 @@ +/// +/// Copyright (c) 2023 Sensus Slovensko a.s. +/// +using System; + +namespace Common +{ + public static class Const + { + public const string MySqlConnectTimeoutSec = "120"; + } +} diff --git a/EventViewer/EViewerDB.cs b/EventViewer/EViewerDB.cs index cc38ab846..c24819127 100644 --- a/EventViewer/EViewerDB.cs +++ b/EventViewer/EViewerDB.cs @@ -76,11 +76,17 @@ namespace EventViewer if (createDB) { - return cfg.ExposeConfiguration(BuildSchemaCreate).BuildSessionFactory(); + return cfg.ExposeConfiguration(BuildSchemaCreate) + .BuildConfiguration() + .SetProperty("hibernate.connection.connect_timeout", Const.MySqlConnectTimeoutSec) + .BuildSessionFactory(); } else { - return cfg.ExposeConfiguration(BuildSchema).BuildSessionFactory(); + return cfg.ExposeConfiguration(BuildSchema) + .BuildConfiguration() + .SetProperty("hibernate.connection.connect_timeout", Const.MySqlConnectTimeoutSec) + .BuildSessionFactory(); } } diff --git a/Results/DB.cs b/Results/DB.cs index 0066f18ce..4507d12ba 100644 --- a/Results/DB.cs +++ b/Results/DB.cs @@ -78,11 +78,17 @@ namespace Results if (createDB) { - return cfg.ExposeConfiguration(BuildSchemaCreate).BuildSessionFactory(); + return cfg.ExposeConfiguration(BuildSchemaCreate) + .BuildConfiguration() + .SetProperty("hibernate.connection.connect_timeout", Common.Const.MySqlConnectTimeoutSec) + .BuildSessionFactory(); } else { - return cfg.ExposeConfiguration(BuildSchema).BuildSessionFactory(); + return cfg.ExposeConfiguration(BuildSchema) + .BuildConfiguration() + .SetProperty("hibernate.connection.connect_timeout", Common.Const.MySqlConnectTimeoutSec) + .BuildSessionFactory(); } } diff --git a/Results/DBase.cs b/Results/DBase.cs index db9ffb07c..513e47cf2 100644 --- a/Results/DBase.cs +++ b/Results/DBase.cs @@ -40,6 +40,8 @@ namespace Results .Database(MySQLConfiguration.Standard.ConnectionString(connectionString)) .Mappings(m => m.FluentMappings.AddFromAssemblyOf()) .ExposeConfiguration(BuildSchema) + .BuildConfiguration() + .SetProperty("hibernate.connection.connect_timeout", Common.Const.MySqlConnectTimeoutSec) .BuildSessionFactory(); } diff --git a/ResultsParser/Program.cs b/ResultsParser/Program.cs index 8ef444333..a01ea2f5e 100644 --- a/ResultsParser/Program.cs +++ b/ResultsParser/Program.cs @@ -31,6 +31,8 @@ namespace ResultsParser .Database(MySQLConfiguration.Standard.ConnectionString(connStr)) .Mappings(m => m.FluentMappings.AddFromAssemblyOf()) .ExposeConfiguration(BuildSchema) + .BuildConfiguration() + .SetProperty("hibernate.connection.connect_timeout", Common.Const.MySqlConnectTimeoutSec) .BuildSessionFactory() .OpenSession(); diff --git a/Statistics/Statistics.csproj b/Statistics/Statistics.csproj index 5ae871b2a..a10775265 100644 --- a/Statistics/Statistics.csproj +++ b/Statistics/Statistics.csproj @@ -133,6 +133,10 @@ + + {c8939821-ba5c-4988-a3d0-bf53b74865c7} + Common + {9D0DCC88-DC81-47EB-9FDD-4C3907871BFB} Results diff --git a/Statistics/StatisticsDlg.cs b/Statistics/StatisticsDlg.cs index 90bcd501b..83e12f29d 100644 --- a/Statistics/StatisticsDlg.cs +++ b/Statistics/StatisticsDlg.cs @@ -13,6 +13,7 @@ using NHibernate; using FluentNHibernate; using FluentNHibernate.Cfg; using FluentNHibernate.Cfg.Db; +using Common; using Results; using Results.Entities; using Statistics.Resources; @@ -98,6 +99,8 @@ namespace Statistics .Database(MySQLConfiguration.Standard.ConnectionString(connStr)) .Mappings(m => m.FluentMappings.AddFromAssemblyOf()) .ExposeConfiguration(BuildSchema) + .BuildConfiguration() + .SetProperty("hibernate.connection.connect_timeout", Const.MySqlConnectTimeoutSec) .BuildSessionFactory(); } catch (Exception) diff --git a/TBF/DB.cs b/TBF/DB.cs index bd92e1095..d7eb1aaab 100644 --- a/TBF/DB.cs +++ b/TBF/DB.cs @@ -11,6 +11,7 @@ using FluentNHibernate.Cfg.Db; using Common; using Events; using TBF.Resources; +using System.Collections.Generic; namespace TBF { @@ -95,27 +96,35 @@ namespace TBF /// NHibernate session factory (to create the database session 'SessionFactory') /// /// A database session - public static ISessionFactory CreateSessionFactory(Action mappings, Common.DBType dbType, + public static ISessionFactory CreateSessionFactory(Action mappings, DBType dbType, string connectionString, bool createDB = false) { try { - FluentConfiguration cfg; + var buildSchema = createDB ? (Action)BuildSchemaCreate : (Action)BuildSchema; switch (dbType) { default: - case Common.DBType.MySql: - cfg = Fluently.Configure().Database(MySQLConfiguration.Standard.ConnectionString(connectionString)); - break; - case Common.DBType.SQLite: - cfg = Fluently.Configure().Database(SQLiteConfiguration.Standard.UsingFile(connectionString)); - break; + case DBType.MySql: + + return Fluently.Configure() + .Database(MySQLConfiguration.Standard.ConnectionString(connectionString)) + .Mappings(mappings) + .ExposeConfiguration(buildSchema) + .BuildConfiguration() + .SetProperty("hibernate.connection.connect_timeout", Const.MySqlConnectTimeoutSec) + .BuildSessionFactory(); + + case DBType.SQLite: + + return Fluently.Configure() + .Database(SQLiteConfiguration.Standard.UsingFile(connectionString)) + .Mappings(mappings) + .ExposeConfiguration(buildSchema) + .BuildSessionFactory(); + } - - var action = createDB ? (System.Action)BuildSchemaCreate : (System.Action)BuildSchema; - - return cfg.Mappings(mappings).ExposeConfiguration(action).BuildSessionFactory(); } catch (Exception exc) { diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs index 0638d485a..896234f5a 100644 --- a/TBF/Properties/AssemblyInfo.cs +++ b/TBF/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("2.32.2039.0")] -[assembly: AssemblyFileVersion("2.32.2039.0")] +[assembly: AssemblyVersion("2.32.2050.0")] +[assembly: AssemblyFileVersion("2.32.2050.0")] diff --git a/TBF/Rig/Output/DB/ProductionTracing/Tracing.cs b/TBF/Rig/Output/DB/ProductionTracing/Tracing.cs index 6728a1c8b..0d6c96120 100644 --- a/TBF/Rig/Output/DB/ProductionTracing/Tracing.cs +++ b/TBF/Rig/Output/DB/ProductionTracing/Tracing.cs @@ -6,6 +6,8 @@ using System.Collections.Generic; using System.Linq; using System.Net; using log4net; +using FluentNHibernate.Cfg; +using FluentNHibernate.Cfg.Db; using NHibernate; using NHibernate.Criterion; using Common; @@ -117,20 +119,24 @@ namespace TBF.Rig.Output.DB.ProductionTracing if (tracingCfg.DebugLevel == DebugMode.Normal) { /// Session factory is used to create database sessions - sessionFactory = FluentNHibernate.Cfg.Fluently.Configure() - .Database(FluentNHibernate.Cfg.Db.MySQLConfiguration.Standard.ConnectionString(tracingCfg.ConnStr)) - .Mappings(m => m.FluentMappings.AddFromAssemblyOf()) - .ExposeConfiguration(TracingDB.DB.BuildSchema) - .BuildSessionFactory(); + sessionFactory = Fluently.Configure() + .Database(MySQLConfiguration.Standard.ConnectionString(tracingCfg.ConnStr)) + .Mappings(m => m.FluentMappings.AddFromAssemblyOf()) + .ExposeConfiguration(TracingDB.DB.BuildSchema) + .BuildConfiguration() + .SetProperty("hibernate.connection.connect_timeout", Const.MySqlConnectTimeoutSec) + .BuildSessionFactory(); /// Session factory 2 is used to create the 2nd database sessions if (!string.IsNullOrEmpty(tracingCfg.ConnStr2)) { - sessionFactory2 = FluentNHibernate.Cfg.Fluently.Configure() - .Database(FluentNHibernate.Cfg.Db.MySQLConfiguration.Standard.ConnectionString(tracingCfg.ConnStr2)) - .Mappings(m => m.FluentMappings.AddFromAssemblyOf()) - .ExposeConfiguration(TracingDB.DB.BuildSchema) - .BuildSessionFactory(); + sessionFactory2 = Fluently.Configure() + .Database(FluentNHibernate.Cfg.Db.MySQLConfiguration.Standard.ConnectionString(tracingCfg.ConnStr2)) + .Mappings(m => m.FluentMappings.AddFromAssemblyOf()) + .ExposeConfiguration(TracingDB.DB.BuildSchema) + .BuildConfiguration() + .SetProperty("hibernate.connection.connect_timeout", Const.MySqlConnectTimeoutSec) + .BuildSessionFactory(); } /// Register this test bench in the tracing DB for approx. 2 weeks diff --git a/TracingDB/DB.cs b/TracingDB/DB.cs index 77c78edfb..5e36094bc 100644 --- a/TracingDB/DB.cs +++ b/TracingDB/DB.cs @@ -6,6 +6,7 @@ using NHibernate; using NHibernate.Cfg; using NHibernate.Tool.hbm2ddl; using log4net; +using Common; using TracingDB.Entities; namespace TracingDB @@ -49,11 +50,17 @@ namespace TracingDB if (createDB) { - return cfg.ExposeConfiguration(BuildSchemaCreate).BuildSessionFactory(); + return cfg.ExposeConfiguration(BuildSchemaCreate) + .BuildConfiguration() + .SetProperty("hibernate.connection.connect_timeout", Const.MySqlConnectTimeoutSec) + .BuildSessionFactory(); } else { - return cfg.ExposeConfiguration(BuildSchema).BuildSessionFactory(); + return cfg.ExposeConfiguration(BuildSchema) + .BuildConfiguration() + .SetProperty("hibernate.connection.connect_timeout", Const.MySqlConnectTimeoutSec) + .BuildSessionFactory(); } } diff --git a/Users/DB.cs b/Users/DB.cs index c217977f0..4e2b29ecf 100644 --- a/Users/DB.cs +++ b/Users/DB.cs @@ -72,11 +72,17 @@ namespace Users if (createDB) { - return cfg.ExposeConfiguration(BuildSchemaCreate).BuildSessionFactory(); + return cfg.ExposeConfiguration(BuildSchemaCreate) + .BuildConfiguration() + .SetProperty("hibernate.connection.connect_timeout", Const.MySqlConnectTimeoutSec) + .BuildSessionFactory(); } else { - return cfg.ExposeConfiguration(BuildSchema).BuildSessionFactory(); + return cfg.ExposeConfiguration(BuildSchema) + .BuildConfiguration() + .SetProperty("hibernate.connection.connect_timeout", Const.MySqlConnectTimeoutSec) + .BuildSessionFactory(); } }