Timeout of all MySQL DB connections is 120 seconds, ver. 2.32.2050

This commit is contained in:
Milan Hanajik 2023-05-22 12:38:55 +02:00
parent 3bc8b55429
commit 1cbab1acd7
13 changed files with 96 additions and 32 deletions

View File

@ -42,6 +42,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="BackgroundBeep.cs" /> <Compile Include="BackgroundBeep.cs" />
<Compile Include="Const.cs" />
<Compile Include="DatabaseSettings.cs" /> <Compile Include="DatabaseSettings.cs" />
<Compile Include="DBSettings.cs" /> <Compile Include="DBSettings.cs" />
<Compile Include="Enums.cs" /> <Compile Include="Enums.cs" />

12
Common/Const.cs Normal file
View File

@ -0,0 +1,12 @@
///
/// Copyright (c) 2023 Sensus Slovensko a.s.
///
using System;
namespace Common
{
public static class Const
{
public const string MySqlConnectTimeoutSec = "120";
}
}

View File

@ -76,11 +76,17 @@ namespace EventViewer
if (createDB) if (createDB)
{ {
return cfg.ExposeConfiguration(BuildSchemaCreate).BuildSessionFactory(); return cfg.ExposeConfiguration(BuildSchemaCreate)
.BuildConfiguration()
.SetProperty("hibernate.connection.connect_timeout", Const.MySqlConnectTimeoutSec)
.BuildSessionFactory();
} }
else else
{ {
return cfg.ExposeConfiguration(BuildSchema).BuildSessionFactory(); return cfg.ExposeConfiguration(BuildSchema)
.BuildConfiguration()
.SetProperty("hibernate.connection.connect_timeout", Const.MySqlConnectTimeoutSec)
.BuildSessionFactory();
} }
} }

View File

@ -78,11 +78,17 @@ namespace Results
if (createDB) if (createDB)
{ {
return cfg.ExposeConfiguration(BuildSchemaCreate).BuildSessionFactory(); return cfg.ExposeConfiguration(BuildSchemaCreate)
.BuildConfiguration()
.SetProperty("hibernate.connection.connect_timeout", Common.Const.MySqlConnectTimeoutSec)
.BuildSessionFactory();
} }
else else
{ {
return cfg.ExposeConfiguration(BuildSchema).BuildSessionFactory(); return cfg.ExposeConfiguration(BuildSchema)
.BuildConfiguration()
.SetProperty("hibernate.connection.connect_timeout", Common.Const.MySqlConnectTimeoutSec)
.BuildSessionFactory();
} }
} }

View File

@ -40,6 +40,8 @@ namespace Results
.Database(MySQLConfiguration.Standard.ConnectionString(connectionString)) .Database(MySQLConfiguration.Standard.ConnectionString(connectionString))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Entities.WaterMeterData>()) .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Entities.WaterMeterData>())
.ExposeConfiguration(BuildSchema) .ExposeConfiguration(BuildSchema)
.BuildConfiguration()
.SetProperty("hibernate.connection.connect_timeout", Common.Const.MySqlConnectTimeoutSec)
.BuildSessionFactory(); .BuildSessionFactory();
} }

View File

@ -31,6 +31,8 @@ namespace ResultsParser
.Database(MySQLConfiguration.Standard.ConnectionString(connStr)) .Database(MySQLConfiguration.Standard.ConnectionString(connStr))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<WaterMeterData>()) .Mappings(m => m.FluentMappings.AddFromAssemblyOf<WaterMeterData>())
.ExposeConfiguration(BuildSchema) .ExposeConfiguration(BuildSchema)
.BuildConfiguration()
.SetProperty("hibernate.connection.connect_timeout", Common.Const.MySqlConnectTimeoutSec)
.BuildSessionFactory() .BuildSessionFactory()
.OpenSession(); .OpenSession();

View File

@ -133,6 +133,10 @@
</Compile> </Compile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Common\Common.csproj">
<Project>{c8939821-ba5c-4988-a3d0-bf53b74865c7}</Project>
<Name>Common</Name>
</ProjectReference>
<ProjectReference Include="..\Results\Results.csproj"> <ProjectReference Include="..\Results\Results.csproj">
<Project>{9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}</Project> <Project>{9D0DCC88-DC81-47EB-9FDD-4C3907871BFB}</Project>
<Name>Results</Name> <Name>Results</Name>

View File

@ -13,6 +13,7 @@ using NHibernate;
using FluentNHibernate; using FluentNHibernate;
using FluentNHibernate.Cfg; using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db; using FluentNHibernate.Cfg.Db;
using Common;
using Results; using Results;
using Results.Entities; using Results.Entities;
using Statistics.Resources; using Statistics.Resources;
@ -98,6 +99,8 @@ namespace Statistics
.Database(MySQLConfiguration.Standard.ConnectionString(connStr)) .Database(MySQLConfiguration.Standard.ConnectionString(connStr))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Results.Entities.Batch>()) .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Results.Entities.Batch>())
.ExposeConfiguration(BuildSchema) .ExposeConfiguration(BuildSchema)
.BuildConfiguration()
.SetProperty("hibernate.connection.connect_timeout", Const.MySqlConnectTimeoutSec)
.BuildSessionFactory(); .BuildSessionFactory();
} }
catch (Exception) catch (Exception)

View File

@ -11,6 +11,7 @@ using FluentNHibernate.Cfg.Db;
using Common; using Common;
using Events; using Events;
using TBF.Resources; using TBF.Resources;
using System.Collections.Generic;
namespace TBF namespace TBF
{ {
@ -95,27 +96,35 @@ namespace TBF
/// NHibernate session factory (to create the database session 'SessionFactory') /// NHibernate session factory (to create the database session 'SessionFactory')
/// </summary> /// </summary>
/// <returns>A database session</returns> /// <returns>A database session</returns>
public static ISessionFactory CreateSessionFactory(Action<MappingConfiguration> mappings, Common.DBType dbType, public static ISessionFactory CreateSessionFactory(Action<MappingConfiguration> mappings, DBType dbType,
string connectionString, bool createDB = false) string connectionString, bool createDB = false)
{ {
try try
{ {
FluentConfiguration cfg; var buildSchema = createDB ? (Action<Configuration>)BuildSchemaCreate : (Action<Configuration>)BuildSchema;
switch (dbType) switch (dbType)
{ {
default: default:
case Common.DBType.MySql: case DBType.MySql:
cfg = Fluently.Configure().Database(MySQLConfiguration.Standard.ConnectionString(connectionString));
break; return Fluently.Configure()
case Common.DBType.SQLite: .Database(MySQLConfiguration.Standard.ConnectionString(connectionString))
cfg = Fluently.Configure().Database(SQLiteConfiguration.Standard.UsingFile(connectionString)); .Mappings(mappings)
break; .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<Configuration>)BuildSchemaCreate : (System.Action<Configuration>)BuildSchema;
return cfg.Mappings(mappings).ExposeConfiguration(action).BuildSessionFactory();
} }
catch (Exception exc) catch (Exception exc)
{ {

View File

@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number // Build Number
// Revision // Revision
// //
[assembly: AssemblyVersion("2.32.2039.0")] [assembly: AssemblyVersion("2.32.2050.0")]
[assembly: AssemblyFileVersion("2.32.2039.0")] [assembly: AssemblyFileVersion("2.32.2050.0")]

View File

@ -6,6 +6,8 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using log4net; using log4net;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using NHibernate; using NHibernate;
using NHibernate.Criterion; using NHibernate.Criterion;
using Common; using Common;
@ -117,20 +119,24 @@ namespace TBF.Rig.Output.DB.ProductionTracing
if (tracingCfg.DebugLevel == DebugMode.Normal) if (tracingCfg.DebugLevel == DebugMode.Normal)
{ {
/// Session factory is used to create database sessions /// Session factory is used to create database sessions
sessionFactory = FluentNHibernate.Cfg.Fluently.Configure() sessionFactory = Fluently.Configure()
.Database(FluentNHibernate.Cfg.Db.MySQLConfiguration.Standard.ConnectionString(tracingCfg.ConnStr)) .Database(MySQLConfiguration.Standard.ConnectionString(tracingCfg.ConnStr))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<TracingDB.Entities.Process>()) .Mappings(m => m.FluentMappings.AddFromAssemblyOf<TracingDB.Entities.Process>())
.ExposeConfiguration(TracingDB.DB.BuildSchema) .ExposeConfiguration(TracingDB.DB.BuildSchema)
.BuildSessionFactory(); .BuildConfiguration()
.SetProperty("hibernate.connection.connect_timeout", Const.MySqlConnectTimeoutSec)
.BuildSessionFactory();
/// Session factory 2 is used to create the 2nd database sessions /// Session factory 2 is used to create the 2nd database sessions
if (!string.IsNullOrEmpty(tracingCfg.ConnStr2)) if (!string.IsNullOrEmpty(tracingCfg.ConnStr2))
{ {
sessionFactory2 = FluentNHibernate.Cfg.Fluently.Configure() sessionFactory2 = Fluently.Configure()
.Database(FluentNHibernate.Cfg.Db.MySQLConfiguration.Standard.ConnectionString(tracingCfg.ConnStr2)) .Database(FluentNHibernate.Cfg.Db.MySQLConfiguration.Standard.ConnectionString(tracingCfg.ConnStr2))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<TracingDB.Entities.Process>()) .Mappings(m => m.FluentMappings.AddFromAssemblyOf<TracingDB.Entities.Process>())
.ExposeConfiguration(TracingDB.DB.BuildSchema) .ExposeConfiguration(TracingDB.DB.BuildSchema)
.BuildSessionFactory(); .BuildConfiguration()
.SetProperty("hibernate.connection.connect_timeout", Const.MySqlConnectTimeoutSec)
.BuildSessionFactory();
} }
/// Register this test bench in the tracing DB for approx. 2 weeks /// Register this test bench in the tracing DB for approx. 2 weeks

View File

@ -6,6 +6,7 @@ using NHibernate;
using NHibernate.Cfg; using NHibernate.Cfg;
using NHibernate.Tool.hbm2ddl; using NHibernate.Tool.hbm2ddl;
using log4net; using log4net;
using Common;
using TracingDB.Entities; using TracingDB.Entities;
namespace TracingDB namespace TracingDB
@ -49,11 +50,17 @@ namespace TracingDB
if (createDB) if (createDB)
{ {
return cfg.ExposeConfiguration(BuildSchemaCreate).BuildSessionFactory(); return cfg.ExposeConfiguration(BuildSchemaCreate)
.BuildConfiguration()
.SetProperty("hibernate.connection.connect_timeout", Const.MySqlConnectTimeoutSec)
.BuildSessionFactory();
} }
else else
{ {
return cfg.ExposeConfiguration(BuildSchema).BuildSessionFactory(); return cfg.ExposeConfiguration(BuildSchema)
.BuildConfiguration()
.SetProperty("hibernate.connection.connect_timeout", Const.MySqlConnectTimeoutSec)
.BuildSessionFactory();
} }
} }

View File

@ -72,11 +72,17 @@ namespace Users
if (createDB) if (createDB)
{ {
return cfg.ExposeConfiguration(BuildSchemaCreate).BuildSessionFactory(); return cfg.ExposeConfiguration(BuildSchemaCreate)
.BuildConfiguration()
.SetProperty("hibernate.connection.connect_timeout", Const.MySqlConnectTimeoutSec)
.BuildSessionFactory();
} }
else else
{ {
return cfg.ExposeConfiguration(BuildSchema).BuildSessionFactory(); return cfg.ExposeConfiguration(BuildSchema)
.BuildConfiguration()
.SetProperty("hibernate.connection.connect_timeout", Const.MySqlConnectTimeoutSec)
.BuildSessionFactory();
} }
} }