Merge branch 'release/NextSchedCalcUpdate_01'
This commit is contained in:
@@ -20,10 +20,12 @@ namespace Maat.Data.Controllers
|
||||
/// </summary>
|
||||
/// <param name="threadName">nome del thread di esecuzione</param>
|
||||
/// <param name="cString">stringa di connessione da impiegare</param>
|
||||
public MsSqlController(string threadName, string cString)
|
||||
/// <param name="cmdExecTOut">timeout esecuzione comandi (minuti)</param>
|
||||
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
|
||||
}
|
||||
|
||||
@@ -64,8 +64,9 @@ namespace Maat.Data.DbModels
|
||||
/// DataOra ultima esecuzione
|
||||
/// </summary>
|
||||
public DateTime DtLastExec { get; set; } = DateTime.Today.AddYears(-10);
|
||||
|
||||
/// <summary>
|
||||
/// DataOra ultima esecuzione
|
||||
/// DataOra prossima esecuzione (prevista)
|
||||
/// </summary>
|
||||
public DateTime DtNextExec { get; set; } = DateTime.Today.AddYears(-9);
|
||||
|
||||
|
||||
@@ -18,11 +18,12 @@ namespace Maat.Data.Services
|
||||
/// <summary>
|
||||
/// Servizio gestione Task su DB
|
||||
/// </summary>
|
||||
/// <param name="threadName"></param>
|
||||
/// <param name="dbConnString"></param>
|
||||
/// <param name="redisConnString"></param>
|
||||
/// <param name="apiUrl"></param>
|
||||
public MsSqlTaskService(string threadName, string dbConnString, string redisConnString, string apiUrl)
|
||||
/// <param name="threadName">nome del thread</param>
|
||||
/// <param name="dbConnString">stringa completa di connessione</param>
|
||||
/// <param name="redisConnString">stringa completa REDIS</param>
|
||||
/// <param name="apiUrl">url x chiamate api REST</param>
|
||||
/// <param name="execTimeOut">timeout esecuzione comandi sql (in minuti)</param>
|
||||
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");
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<Version>1.2.2410.3011</Version>
|
||||
<Version>1.2.2506.0509</Version>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -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<int>("SrvConf:StepSec");
|
||||
MinSaveIntSec = config.GetValue<int>("SrvConf:MinSaveIntSec");
|
||||
var rawJCF = config.GetValue<string>("SrvConf:JobConfigFile");
|
||||
SqlCmdTimeoutMinutes = config.GetValue<int>("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
|
||||
{
|
||||
|
||||
+16
-1
@@ -2,4 +2,19 @@
|
||||
|
||||
IN particolare installare con
|
||||
|
||||
nssm.exe install MP-MONO-SIM
|
||||
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
|
||||
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
|
||||
<OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
|
||||
<IntermediateOutputPath>obj\$(Platform)\$(Configuration)\</IntermediateOutputPath>
|
||||
<SuppressPdbOutput>true</SuppressPdbOutput>
|
||||
</PropertyGroup>
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
"CallMode": "TaskList",
|
||||
"DbList": [
|
||||
"MoonPro",
|
||||
"MoonPro_PROG",
|
||||
"MoonPro_STATS"
|
||||
],
|
||||
"DbPasswd": "db_password_here",
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"MsSqlJobs": {
|
||||
"ServerList": [
|
||||
{
|
||||
"CallMode": "TaskList",
|
||||
"DbList": [
|
||||
"MoonPro_PROG",
|
||||
"MoonPro_STATS"
|
||||
],
|
||||
"DbPasswd": "viadante16",
|
||||
"DbUser": "steamware",
|
||||
"ServerName": "SQL2016DEV"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
<body>
|
||||
<i>Maat.Installer - Manager for Application & Applicative Task</i>
|
||||
<h4>Versione: 1.2.2410.3011</h4>
|
||||
<h4>Versione: 1.2.2506.0509</h4>
|
||||
<br /> Note di rilascio:
|
||||
<ul>
|
||||
<li>
|
||||
@@ -27,7 +27,7 @@
|
||||
<img src="LogoEgw.png" />
|
||||
</div>
|
||||
<div style="float: right;">
|
||||
<a href="https://www.egalware.net/support" target="_blank">© EgalWare 2021-2024</a>
|
||||
<a href="https://www.egalware.net/support" target="_blank">© EgalWare 2021-2025</a>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -1 +1 @@
|
||||
1.2.2410.3011
|
||||
1.2.2506.0509
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<item>
|
||||
<version>1.2.2410.3011</version>
|
||||
<version>1.2.2506.0509</version>
|
||||
<url>http://nexus.steamware.net/repository/SWS/Maat.Installer/stable/LAST/Maat.Installer.msi</url>
|
||||
<changelog>http://nexus.steamware.net/repository/SWS/Maat.Installer/stable/LAST/ChangeLog.html</changelog>
|
||||
<mandatory>false</mandatory>
|
||||
|
||||
Reference in New Issue
Block a user