diff --git a/.vscode/launch.json b/.vscode/launch.json index 69b973c3..9efe9077 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -51,7 +51,7 @@ "AYANOVA_USE_URLS": "http://*:7575;", "AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles", "AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles", - "AYANOVA_SERVER_TEST_MODE":"true", + "AYANOVA_SERVER_TEST_MODE":"false", "AYANOVA_SERVER_TEST_MODE_SEEDLEVEL":"small", "AYANOVA_SERVER_TEST_MODE_TZ_OFFSET":"-7", "AYANOVA_BACKUP_PG_DUMP_PATH":"C:\\data\\code\\PostgreSQLPortable_12.0\\App\\PgSQL\\bin\\" diff --git a/server/AyaNova/ControllerHelpers/ApiServerState.cs b/server/AyaNova/ControllerHelpers/ApiServerState.cs index cc71122c..baf90612 100644 --- a/server/AyaNova/ControllerHelpers/ApiServerState.cs +++ b/server/AyaNova/ControllerHelpers/ApiServerState.cs @@ -101,7 +101,7 @@ namespace AyaNova.Api.ControllerHelpers } else { - return _reason; + return $"\"{_reason}\""; // if (_currentState == ServerState.Closed) // return $"{ AyaNova.Biz.TranslationBiz.GetDefaultTranslationAsync("ErrorAPI2000").Result}\r\n{_reason}"; // else //opsonly diff --git a/server/AyaNova/Controllers/BackupController.cs b/server/AyaNova/Controllers/BackupController.cs index 657b6e2b..53f51f96 100644 --- a/server/AyaNova/Controllers/BackupController.cs +++ b/server/AyaNova/Controllers/BackupController.cs @@ -57,7 +57,7 @@ namespace AyaNova.Api.Controllers /// Job Id [HttpPost("backup-now")] [Authorize] - public async Task PostServerState() + public async Task PostBackupNow() { if (serverState.IsClosed) return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason)); diff --git a/server/AyaNova/biz/JobsBiz.cs b/server/AyaNova/biz/JobsBiz.cs index 6be91b27..dd75984e 100644 --- a/server/AyaNova/biz/JobsBiz.cs +++ b/server/AyaNova/biz/JobsBiz.cs @@ -66,6 +66,8 @@ namespace AyaNova.Biz { using (AyContext ct = ServiceProviderProvider.DBContext) { + log.LogDebug($"Adding new job:{newJob.ToString()}"); + await LogJobAsync(newJob.GId, $"Adding new job \"{newJob.Name}\" to queue"); await ct.OpsJob.AddAsync(newJob); await ct.SaveChangesAsync(); } @@ -83,6 +85,7 @@ namespace AyaNova.Biz { try { + log.LogDebug($"RemoveJobAndLogs for job id:{jobIdToBeDeleted}"); //delete logs await ct.Database.ExecuteSqlInterpolatedAsync($"delete from aopsjoblog where jobid = {jobIdToBeDeleted}"); //delete the job @@ -169,6 +172,7 @@ namespace AyaNova.Biz ActivelyProcessing = true; try { + log.LogDebug("Processing critical internal jobs"); //### Critical internal jobs, these run even if there is a license related serverlock //LICENSE FETCH await CoreJobLicense.DoWorkAsync(); @@ -193,6 +197,7 @@ namespace AyaNova.Biz // return; // } + log.LogDebug("Processing semi-critical internal jobs"); //BACKUP await CoreJobBackup.DoWorkAsync(); @@ -204,8 +209,9 @@ namespace AyaNova.Biz //JOB SWEEPER / AND USER COUNT CHECK await CoreJobSweeper.DoWorkAsync(); - //### API Open only jobs - if (!serverState.IsOpen) return; + + + log.LogDebug("Processing exclusive dynamic jobs"); //BIZOBJECT DYNAMIC JOBS //get a list of exclusive jobs that are due to happen @@ -226,10 +232,17 @@ namespace AyaNova.Biz } } + //### API Open only jobs + if (!serverState.IsOpen) + { + log.LogDebug("Server state is NOT open, skipping processing non-exclusive dynamic jobs"); + return; + } /////////////////////////////////////// //NON-EXCLUSIVE JOBS // + log.LogDebug("Processing non-exclusive dynamic jobs"); //These fire and forget but use a technique to bubble up exceptions anyway List sharedJobs = await GetReadyJobsNotExlusiveOnlyAsync(); diff --git a/server/AyaNova/models/OpsJob.cs b/server/AyaNova/models/OpsJob.cs index ace1f11e..638f46af 100644 --- a/server/AyaNova/models/OpsJob.cs +++ b/server/AyaNova/models/OpsJob.cs @@ -1,6 +1,7 @@ using System; using AyaNova.Biz; using System.ComponentModel.DataAnnotations; +using Newtonsoft.Json; namespace AyaNova.Models { @@ -55,6 +56,12 @@ namespace AyaNova.Models } + public override string ToString() + { + return JsonConvert.SerializeObject(this, Newtonsoft.Json.Formatting.None); + } + + } }