From ab83138f848fcfd1f801bb4bbef6ec58171dd246 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Wed, 15 Jun 2022 09:21:11 +0200 Subject: [PATCH] EDMIService: Refactor a bit, set concurrency to 1 for now --- Service.EDMIService/EDMIService.vbproj | 1 + Service.EDMIService/Scheduler/DatatableJob.vb | 2 + Service.EDMIService/Scheduler/JobListener.vb | 2 +- Service.EDMIService/Scheduler/LogProvider.vb | 34 ++++++++++ Service.EDMIService/Scheduler/Scheduler.vb | 65 +++++-------------- 5 files changed, 54 insertions(+), 50 deletions(-) create mode 100644 Service.EDMIService/Scheduler/LogProvider.vb diff --git a/Service.EDMIService/EDMIService.vbproj b/Service.EDMIService/EDMIService.vbproj index 477ac40b..45200c8f 100644 --- a/Service.EDMIService/EDMIService.vbproj +++ b/Service.EDMIService/EDMIService.vbproj @@ -194,6 +194,7 @@ + diff --git a/Service.EDMIService/Scheduler/DatatableJob.vb b/Service.EDMIService/Scheduler/DatatableJob.vb index dc05a2fd..b1510bd0 100644 --- a/Service.EDMIService/Scheduler/DatatableJob.vb +++ b/Service.EDMIService/Scheduler/DatatableJob.vb @@ -9,6 +9,8 @@ Imports Quartz Public Class DatatableJob Implements IJob + + Private Const COMMAND_SQL_TIMEOUT = 240 Private _MSSQL As MSSQLServer diff --git a/Service.EDMIService/Scheduler/JobListener.vb b/Service.EDMIService/Scheduler/JobListener.vb index 84a664f0..dab2f9b7 100644 --- a/Service.EDMIService/Scheduler/JobListener.vb +++ b/Service.EDMIService/Scheduler/JobListener.vb @@ -202,7 +202,7 @@ Public Class JobListener _MSSQL.ExecuteNonQuery($"INSERT INTO TBAPPSERV_CRON_DETAIL_HISTORY (DETAIL_ID) VALUES ({oDetailId})") Catch ex As Exception - _Logger.Warn("Unexpected error in JobListener: {0}", ex.Message) + _Logger.Warn("Unexpected error in SaveDataTables: {0}", ex.Message) _Logger.Error(ex) End Try End Sub diff --git a/Service.EDMIService/Scheduler/LogProvider.vb b/Service.EDMIService/Scheduler/LogProvider.vb new file mode 100644 index 00000000..0c09f6dc --- /dev/null +++ b/Service.EDMIService/Scheduler/LogProvider.vb @@ -0,0 +1,34 @@ +Imports Quartz.Logging + +Public Class LogProvider + Implements ILogProvider + + Private ReadOnly Logger As DigitalData.Modules.Logging.Logger + + Public Sub New(Logger As DigitalData.Modules.Logging.Logger) + MyBase.New() + Me.Logger = Logger + End Sub + + Public Function OpenNestedContext(message As String) As IDisposable Implements ILogProvider.OpenNestedContext + Throw New NotImplementedException() + End Function + + Public Function OpenMappedContext(key As String, value As Object, Optional destructure As Boolean = False) As IDisposable Implements ILogProvider.OpenMappedContext + Throw New NotImplementedException() + End Function + + Private Function GetLogger(name As String) As Logger Implements ILogProvider.GetLogger + Return Function(level, func, exception, parameters) + If exception IsNot Nothing Then + Logger.Error(exception) + ElseIf level >= LogLevel.Debug AndAlso func IsNot Nothing Then + Logger.Debug(func(), parameters) + ElseIf level >= LogLevel.Info AndAlso func IsNot Nothing Then + Logger.Info(func(), parameters) + End If + + Return True + End Function + End Function +End Class diff --git a/Service.EDMIService/Scheduler/Scheduler.vb b/Service.EDMIService/Scheduler/Scheduler.vb index e968b224..f5b76388 100644 --- a/Service.EDMIService/Scheduler/Scheduler.vb +++ b/Service.EDMIService/Scheduler/Scheduler.vb @@ -7,28 +7,28 @@ Imports Quartz.Impl.Matchers Imports Quartz.Logging Public Class Scheduler - Private _Factory As StdSchedulerFactory - Private _MSSQL As MSSQLServer + Inherits BaseClass + + Private ReadOnly _Factory As StdSchedulerFactory + Private ReadOnly _MSSQL As MSSQLServer Private _Scheduler As IScheduler - Private _LogConfig As LogConfig - Private _Logger As DigitalData.Modules.Logging.Logger - Private _JobListener As JobListener + Private ReadOnly _JobListener As JobListener - Private _Props = New NameValueCollection From { - {"quartz.serializer.type", "binary"} + Private ReadOnly _Props = New NameValueCollection From { + {"quartz.serializer.type", "binary"}, + {"quartz.threadPool.maxConcurrency", 1} } Private Const JOB_GROUP As String = "DatatableJobs" Public Sub New(LogConfig As LogConfig, MSSQL_ECM As MSSQLServer, TableStore As DataSet) - _LogConfig = LogConfig - _Logger = LogConfig.GetLogger() + MyBase.New(LogConfig) _Factory = New StdSchedulerFactory(_Props) _MSSQL = MSSQL_ECM _JobListener = New JobListener(LogConfig, _MSSQL, TableStore) - Logging.LogProvider.SetCurrentLogProvider(New LogProvider(_Logger)) + Logging.LogProvider.SetCurrentLogProvider(New LogProvider(Logger)) End Sub Public Async Sub Start() @@ -46,7 +46,7 @@ Public Class Scheduler Try If oCronjobs IsNot Nothing Then - _Logger.Debug("Loaded {0} cron jobs", oCronjobs.Rows.Count) + Logger.Debug("Loaded {0} cron jobs", oCronjobs.Rows.Count) For Each oRow As DataRow In oCronjobs.Rows Dim oDefinition As String = oRow.Item("CRON_DEFINITION") @@ -60,7 +60,7 @@ Public Class Scheduler Dim oInitJob As IJobDetail Dim oJobData As New JobDataMap From { - {"LogConfig", _LogConfig}, + {"LogConfig", LogConfig}, {"MSSQL", _MSSQL}, {"CronJobId", oGuid}, {"CronJobTitle", oTitle} @@ -96,14 +96,14 @@ Public Class Scheduler Await _Scheduler.ScheduleJob(oInitJob, oInitTrigger) - _Logger.Debug("Scheduled a new job for Cron Job [{0}]", oTitle) + Logger.Debug("Scheduled a new job for Cron Job [{0}]", oTitle) Next Else - _Logger.Warn("CronJobs could not be fetched!") + Logger.Warn("CronJobs could not be fetched!") End If Catch ex As Exception - _Logger.Error(ex) - _Logger.Warn("Unexpected Error while setting up scheduler: " & ex.Message) + Logger.Error(ex) + Logger.Warn("Unexpected Error while setting up scheduler: " & ex.Message) End Try End Sub Public Async Function GetCronJobs() As Task(Of DataTable) @@ -131,37 +131,4 @@ Public Class Scheduler Public Async Sub [Stop]() Await _Scheduler.Shutdown() End Sub - - Private Class LogProvider - Implements ILogProvider - - Private _Logger As Modules.Logging.Logger - - Public Sub New(Logger As DigitalData.Modules.Logging.Logger) - MyBase.New() - _Logger = Logger - End Sub - - Public Function OpenNestedContext(message As String) As IDisposable Implements ILogProvider.OpenNestedContext - Throw New NotImplementedException() - End Function - - Public Function OpenMappedContext(key As String, value As Object, Optional destructure As Boolean = False) As IDisposable Implements ILogProvider.OpenMappedContext - Throw New NotImplementedException() - End Function - - Private Function GetLogger(name As String) As Logging.Logger Implements ILogProvider.GetLogger - Return Function(level, func, exception, parameters) - If exception IsNot Nothing Then - _Logger.Error(exception) - ElseIf level >= LogLevel.Debug AndAlso func IsNot Nothing Then - _Logger.Debug(func(), parameters) - ElseIf level >= LogLevel.Info AndAlso func IsNot Nothing Then - _Logger.Info(func(), parameters) - End If - - Return True - End Function - End Function - End Class End Class