From 7003690cb33bfa7f57589b74c4aaf2a243fca1ba Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 30 Oct 2024 14:53:20 +0100 Subject: [PATCH 1/2] note in readme x piattaforma x64 --- Maat.Runner/README.txt | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/Maat.Runner/README.txt b/Maat.Runner/README.txt index 78c8bf7..3d9ddb0 100644 --- a/Maat.Runner/README.txt +++ b/Maat.Runner/README.txt @@ -2,4 +2,19 @@ IN particolare installare con -nssm.exe install MP-MONO-SIM \ No newline at end of file +nssm.exe install MP-MONO-SIM + + +nota compilazione: aggiunta forzatura progetto a 64bit: +- vedere yaml + + # creazione installer WIX + - dotnet build $env:INST_NAME/$env:INST_NAME.wixproj -p:Configuration=$env:APP_CONF -p:Platform=x64 + +- vedere wixproject + + + bin\$(Platform)\$(Configuration)\ + obj\$(Platform)\$(Configuration)\ + true + \ No newline at end of file From 3dd5f03091fdf757f26491c1d35a61fe232734e5 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 5 Jun 2025 09:08:57 +0200 Subject: [PATCH 2/2] Update x nuovo calcolo scadenza NEXT task + timeout cmq sql esplicito --- Maat.Data/Controllers/MsSqlController.cs | 77 +++++++++++++--------- Maat.Data/DbModels/TaskListModel.cs | 3 +- Maat.Data/Services/MsSqlTaskService.cs | 13 ++-- Maat.Runner/Maat.Runner.csproj | 2 +- Maat.Runner/Program.cs | 8 ++- Maat.Runner/appsettings.json | 14 ++-- Maat.Runner/conf/JobConfig-demo.json | 1 + Maat.Runner/conf/JobConfig.PROG-STATS.json | 16 +++++ Resources/ChangeLog.html | 4 +- Resources/VersNum.txt | 2 +- Resources/manifest.xml | 2 +- 11 files changed, 89 insertions(+), 53 deletions(-) create mode 100644 Maat.Runner/conf/JobConfig.PROG-STATS.json diff --git a/Maat.Data/Controllers/MsSqlController.cs b/Maat.Data/Controllers/MsSqlController.cs index 907cede..620892b 100644 --- a/Maat.Data/Controllers/MsSqlController.cs +++ b/Maat.Data/Controllers/MsSqlController.cs @@ -20,10 +20,12 @@ namespace Maat.Data.Controllers /// /// nome del thread di esecuzione /// stringa di connessione da impiegare - public MsSqlController(string threadName, string cString) + /// timeout esecuzione comandi (minuti) + public MsSqlController(string threadName, string cString, int cmdExecTOut) { tName = threadName; connString = cString; + cmdTimeout = cmdExecTOut; Log.Info($"{tName} | Avviata classe MsSqlController"); } @@ -34,51 +36,61 @@ namespace Maat.Data.Controllers public DateTime CalcNextExe(TaskListModel taskRec) { DateTime dtNext = DateTime.Today; + DateTime adesso = DateTime.Now; + int maxIter = 1000; try { - // calcolo next exec da tipo... - switch (taskRec.Freq) + // prendo come partenza la DATA di fine a cui aggiungo l'ora/minuti schedulata precedentemente + TimeSpan oraSched = taskRec.DtNextExec.Subtract(taskRec.DtNextExec.Date); + DateTime baseDT = taskRec.DtLastExec.Date.Add(oraSched); + // calcolo next exec da tipo... con ciclo fino a quando supero dataora attuale... + while (dtNext < adesso && maxIter > 0) { - case TaskFreqType.ND: - dtNext = taskRec.DtLastExec.AddDays(taskRec.Cad); - break; + switch (taskRec.Freq) + { + case TaskFreqType.ND: + dtNext = baseDT.AddDays(taskRec.Cad); + break; - case TaskFreqType.Sec: - dtNext = taskRec.DtLastExec.AddSeconds(taskRec.Cad); - break; + case TaskFreqType.Sec: + dtNext = baseDT.AddSeconds(taskRec.Cad); + break; - case TaskFreqType.Min: - dtNext = taskRec.DtLastExec.AddMinutes(taskRec.Cad); - break; + case TaskFreqType.Min: + dtNext = baseDT.AddMinutes(taskRec.Cad); + break; - case TaskFreqType.Hour: - dtNext = taskRec.DtLastExec.AddHours(taskRec.Cad); - break; + case TaskFreqType.Hour: + dtNext = baseDT.AddHours(taskRec.Cad); + break; - case TaskFreqType.Day: - dtNext = taskRec.DtLastExec.AddDays(taskRec.Cad); - break; + case TaskFreqType.Day: + dtNext = baseDT.AddDays(taskRec.Cad); + break; - case TaskFreqType.Week: - dtNext = taskRec.DtLastExec.AddDays(7 * taskRec.Cad); - break; + case TaskFreqType.Week: + dtNext = baseDT.AddDays(7 * taskRec.Cad); + break; - case TaskFreqType.Month: - dtNext = taskRec.DtLastExec.AddMonths(taskRec.Cad); - break; + case TaskFreqType.Month: + dtNext = baseDT.AddMonths(taskRec.Cad); + break; - case TaskFreqType.Year: - dtNext = taskRec.DtLastExec.AddYears(taskRec.Cad); - break; + case TaskFreqType.Year: + dtNext = baseDT.AddYears(taskRec.Cad); + break; - default: - dtNext = taskRec.DtLastExec.AddDays(taskRec.Cad); - break; + default: + dtNext = baseDT.AddDays(taskRec.Cad); + break; + } + baseDT = dtNext; + maxIter--; } } catch (Exception exc) { - Log.Error($"{tName} | Eccezione in CalcNextExe{Environment.NewLine}{exc}"); + Log.Error($"Eccezione in CalcNextExe{Environment.NewLine}{exc}"); } return dtNext; } @@ -99,7 +111,7 @@ namespace Maat.Data.Controllers using (var dbCtx = new TaskRunContext(connString)) { // imposto timeout a 5 min - dbCtx.Database.SetCommandTimeout(TimeSpan.FromMinutes(5)); + dbCtx.Database.SetCommandTimeout(TimeSpan.FromMinutes(cmdTimeout)); string sqlCall = ""; try { @@ -243,6 +255,7 @@ namespace Maat.Data.Controllers private static Logger Log = LogManager.GetCurrentClassLogger(); private string connString = ""; private string tName = ""; + private int cmdTimeout = 0; #endregion Private Fields } diff --git a/Maat.Data/DbModels/TaskListModel.cs b/Maat.Data/DbModels/TaskListModel.cs index f873cec..037b0a7 100644 --- a/Maat.Data/DbModels/TaskListModel.cs +++ b/Maat.Data/DbModels/TaskListModel.cs @@ -64,8 +64,9 @@ namespace Maat.Data.DbModels /// DataOra ultima esecuzione /// public DateTime DtLastExec { get; set; } = DateTime.Today.AddYears(-10); + /// - /// DataOra ultima esecuzione + /// DataOra prossima esecuzione (prevista) /// public DateTime DtNextExec { get; set; } = DateTime.Today.AddYears(-9); diff --git a/Maat.Data/Services/MsSqlTaskService.cs b/Maat.Data/Services/MsSqlTaskService.cs index ce0b010..c29f86e 100644 --- a/Maat.Data/Services/MsSqlTaskService.cs +++ b/Maat.Data/Services/MsSqlTaskService.cs @@ -18,11 +18,12 @@ namespace Maat.Data.Services /// /// Servizio gestione Task su DB /// - /// - /// - /// - /// - public MsSqlTaskService(string threadName, string dbConnString, string redisConnString, string apiUrl) + /// nome del thread + /// stringa completa di connessione + /// stringa completa REDIS + /// url x chiamate api REST + /// timeout esecuzione comandi sql (in minuti) + public MsSqlTaskService(string threadName, string dbConnString, string redisConnString, string apiUrl, int execTimeOut) { tName = threadName; Log.Info($"{tName} | Starting MsSqlTaskService"); @@ -39,7 +40,7 @@ namespace Maat.Data.Services } else { - dbController = new MsSqlController(tName, dbConnString); + dbController = new MsSqlController(tName, dbConnString, execTimeOut); Log.Info($"{tName} | DbController OK"); } diff --git a/Maat.Runner/Maat.Runner.csproj b/Maat.Runner/Maat.Runner.csproj index 7e305e4..34f1cce 100644 --- a/Maat.Runner/Maat.Runner.csproj +++ b/Maat.Runner/Maat.Runner.csproj @@ -5,7 +5,7 @@ net6.0 enable enable - 1.2.2410.3011 + 1.2.2506.0509 diff --git a/Maat.Runner/Program.cs b/Maat.Runner/Program.cs index 0ee9635..1a05a2d 100644 --- a/Maat.Runner/Program.cs +++ b/Maat.Runner/Program.cs @@ -52,6 +52,7 @@ bool verboseLog = false; bool logWriting = false; string appName = "Maat"; int MinSaveIntSec = 60; +int SqlCmdTimeoutMinutes = 10; int StepSec = 60; string JobConfigFile = ""; @@ -114,7 +115,7 @@ if (currConf != null) // compongo connstring string dbConnStr = $"Server={currSrv.ServerName}; Database={dbName}; User ID={currSrv.DbUser}; Password={currSrv.DbPasswd}; integrated security=False; MultipleActiveResultSets=True; App={appName}"; string threadName = $"ThdMsSql_{currSrv.ServerName}_{dbName}"; - Thread newThread = new Thread(() => doCronDB(threadName, dbConnStr)); + Thread newThread = new Thread(() => doCronDB(threadName, dbConnStr, SqlCmdTimeoutMinutes)); newThread.Name = threadName; jobsThreadList.Add(newThread); Log.Info($"Added {newThread.Name} to jobsThreadList"); @@ -192,6 +193,7 @@ void setupConf() StepSec = config.GetValue("SrvConf:StepSec"); MinSaveIntSec = config.GetValue("SrvConf:MinSaveIntSec"); var rawJCF = config.GetValue("SrvConf:JobConfigFile"); + SqlCmdTimeoutMinutes = config.GetValue("SrvConf:SqlCmdTimeoutMinutes"); if (string.IsNullOrEmpty(rawJCF)) { Log.Error($"Cannot start: missing JobConfigFile configuration"); @@ -260,13 +262,13 @@ void saveAndSendMessage(string memKey, string channelName, string message) } -void doCronDB(string threadName, string dbConnStr) +void doCronDB(string threadName, string dbConnStr, int cmdTimeOut) { string tName = threadName; Log.Info($"{tName} | Starting dbCronDb task"); // periodo standard 1 minuto int stepPeriod = 60000; - MsSqlTaskService tRun = new MsSqlTaskService(tName, dbConnStr, redisConf, apiUrlStd); + MsSqlTaskService tRun = new MsSqlTaskService(tName, dbConnStr, redisConf, apiUrlStd, cmdTimeOut); // ciclo infinito esegue task poi attende quanto manca a prox scadenza... do { diff --git a/Maat.Runner/appsettings.json b/Maat.Runner/appsettings.json index 207faf8..fe03f1b 100644 --- a/Maat.Runner/appsettings.json +++ b/Maat.Runner/appsettings.json @@ -7,7 +7,8 @@ }, "AllowedHosts": "*", "ConnectionStrings": { - "Redis": "localhost:26379, serviceName=devel, DefaultDatabase=15, connectTimeout=5000, syncTimeout=5000, asyncTimeout=5000, abortConnect=false, ssl=false, allowAdmin=true" + "Redis": "localhost:6379, DefaultDatabase=14, connectTimeout=5000, syncTimeout=5000, asyncTimeout=5000, abortConnect=false, ssl=false, allowAdmin=true" + //"Redis": "redis.ufficio:26379, serviceName=devel, DefaultDatabase=14, connectTimeout=5000, syncTimeout=5000, asyncTimeout=5000, abortConnect=false, ssl=false, allowAdmin=true" }, "DbConfig": { "Server": "localhost", @@ -18,10 +19,10 @@ "MailKit": { "SMTP": { "Address": "smtp.gmail.com", - "Port": "465", - "Account": "steamwarebot@gmail.com", - "Password": "drmfsls16", - "SenderEmail": "steamwarebot@gmail.com", + "Port": "587", + "Account": "services@steamware.net", + "Password": "rzdwvdhvyxtbrzoq", + "SenderEmail": "services@steamware.net", "SenderName": "Steamware Email BOT" } } @@ -31,6 +32,7 @@ "StepSec": 60, "MinSaveIntSec": 15, "JobConfigFile": "JobConfig.json", - "Prog.ApiUrl": "https://office.egalware.com/MP/PROG" + "Prog.ApiUrl": "https://office.egalware.com/MP/PROG", + "SqlCmdTimeoutMinutes": 5 } } diff --git a/Maat.Runner/conf/JobConfig-demo.json b/Maat.Runner/conf/JobConfig-demo.json index da3820c..292892b 100644 --- a/Maat.Runner/conf/JobConfig-demo.json +++ b/Maat.Runner/conf/JobConfig-demo.json @@ -5,6 +5,7 @@ "CallMode": "TaskList", "DbList": [ "MoonPro", + "MoonPro_PROG", "MoonPro_STATS" ], "DbPasswd": "db_password_here", diff --git a/Maat.Runner/conf/JobConfig.PROG-STATS.json b/Maat.Runner/conf/JobConfig.PROG-STATS.json new file mode 100644 index 0000000..5e69e84 --- /dev/null +++ b/Maat.Runner/conf/JobConfig.PROG-STATS.json @@ -0,0 +1,16 @@ +{ + "MsSqlJobs": { + "ServerList": [ + { + "CallMode": "TaskList", + "DbList": [ + "MoonPro_PROG", + "MoonPro_STATS" + ], + "DbPasswd": "viadante16", + "DbUser": "steamware", + "ServerName": "SQL2016DEV" + } + ] + } +} diff --git a/Resources/ChangeLog.html b/Resources/ChangeLog.html index 1eee4b6..f3f1c5e 100644 --- a/Resources/ChangeLog.html +++ b/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Maat.Installer - Manager for Application & Applicative Task -

Versione: 1.2.2410.3011

+

Versione: 1.2.2506.0509


Note di rilascio:
  • @@ -27,7 +27,7 @@ diff --git a/Resources/VersNum.txt b/Resources/VersNum.txt index 25b41c9..11a1e26 100644 --- a/Resources/VersNum.txt +++ b/Resources/VersNum.txt @@ -1 +1 @@ -1.2.2410.3011 +1.2.2506.0509 diff --git a/Resources/manifest.xml b/Resources/manifest.xml index ed811fb..3652a46 100644 --- a/Resources/manifest.xml +++ b/Resources/manifest.xml @@ -1,6 +1,6 @@ - 1.2.2410.3011 + 1.2.2506.0509 http://nexus.steamware.net/repository/SWS/Maat.Installer/stable/LAST/Maat.Installer.msi http://nexus.steamware.net/repository/SWS/Maat.Installer/stable/LAST/ChangeLog.html false