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/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
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