Contine on exception during scanning
This commit is contained in:
parent
ee72907744
commit
b5945036fd
|
@ -91,73 +91,81 @@ namespace DML.AppCore.Classes
|
||||||
Logger.Info("Started JobScheduler...");
|
Logger.Info("Started JobScheduler...");
|
||||||
while (Run)
|
while (Run)
|
||||||
{
|
{
|
||||||
Logger.Debug("Entering job list handler loop...");
|
try
|
||||||
//foreach (var job in JobList)
|
|
||||||
for (var i = JobList.Count - 1; i >= 0; i--)
|
|
||||||
{
|
{
|
||||||
var job = JobList[i];
|
Logger.Debug("Entering job list handler loop...");
|
||||||
Logger.Debug($"Checking job {job}");
|
//foreach (var job in JobList)
|
||||||
var hasJob = false;
|
for (var i = JobList.Count - 1; i >= 0; i--)
|
||||||
|
|
||||||
Logger.Trace("Locking scheduler...");
|
|
||||||
lock (this)
|
|
||||||
{
|
{
|
||||||
Logger.Trace("Checking if job is already performed...");
|
var job = JobList[i];
|
||||||
hasJob = RunningJobs.ContainsKey(job.Id);
|
Logger.Debug($"Checking job {job}");
|
||||||
}
|
var hasJob = false;
|
||||||
Logger.Trace("Unlocked scheduler.");
|
|
||||||
|
|
||||||
if (!hasJob)
|
|
||||||
{
|
|
||||||
Logger.Debug("Job is not performed yet...Performing job...");
|
|
||||||
var queue = new Queue<IMessage>();
|
|
||||||
|
|
||||||
Logger.Trace("Locking scheduler...");
|
Logger.Trace("Locking scheduler...");
|
||||||
lock (this)
|
lock (this)
|
||||||
{
|
{
|
||||||
Logger.Trace("Adding job to running jobs.");
|
Logger.Trace("Checking if job is already performed...");
|
||||||
RunningJobs.Add(job.Id, queue);
|
hasJob = RunningJobs.ContainsKey(job.Id);
|
||||||
}
|
}
|
||||||
Logger.Trace("Unlocked scheduler.");
|
Logger.Trace("Unlocked scheduler.");
|
||||||
|
|
||||||
Logger.Trace("Issuing job message scan...");
|
if (!hasJob)
|
||||||
var messages = await job.Scan();
|
|
||||||
|
|
||||||
if (messages == null)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
Logger.Trace($"Adding {messages.Count} messages to queue...");
|
|
||||||
foreach (var msg in messages)
|
|
||||||
{
|
{
|
||||||
queue.Enqueue(msg);
|
Logger.Debug("Job is not performed yet...Performing job...");
|
||||||
}
|
var queue = new Queue<IMessage>();
|
||||||
Logger.Trace($"Added {queue.Count} messages to queue.");
|
|
||||||
|
|
||||||
if (messages.Count != queue.Count)
|
|
||||||
Logger.Warn("Not all messages have been added into the queue.");
|
|
||||||
|
|
||||||
var startedDownload = false;
|
|
||||||
|
|
||||||
while (!startedDownload)
|
|
||||||
{
|
|
||||||
Logger.Debug("Entering loop to check thread availability");
|
|
||||||
Logger.Trace("Locking scheduler...");
|
Logger.Trace("Locking scheduler...");
|
||||||
lock (this)
|
lock (this)
|
||||||
{
|
{
|
||||||
Logger.Trace($"Checking thread limit. Running: {RunningThreads}, Max: {Core.Settings.ThreadLimit}");
|
Logger.Trace("Adding job to running jobs.");
|
||||||
if (RunningThreads >= Core.Settings.ThreadLimit)
|
RunningJobs.Add(job.Id, queue);
|
||||||
continue;
|
|
||||||
|
|
||||||
RunningThreads++;
|
|
||||||
startedDownload = true;
|
|
||||||
}
|
}
|
||||||
Logger.Trace("Unlocked scheduler.");
|
Logger.Trace("Unlocked scheduler.");
|
||||||
}
|
|
||||||
|
|
||||||
Logger.Trace("Start downloading job async.");
|
Logger.Trace("Issuing job message scan...");
|
||||||
Task.Run(() => WorkQueue(job.Id)); // do not await to work parallel
|
var messages = await job.Scan();
|
||||||
|
|
||||||
|
if (messages == null)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
Logger.Trace($"Adding {messages.Count} messages to queue...");
|
||||||
|
foreach (var msg in messages)
|
||||||
|
{
|
||||||
|
queue.Enqueue(msg);
|
||||||
|
}
|
||||||
|
Logger.Trace($"Added {queue.Count} messages to queue.");
|
||||||
|
|
||||||
|
if (messages.Count != queue.Count)
|
||||||
|
Logger.Warn("Not all messages have been added into the queue.");
|
||||||
|
|
||||||
|
var startedDownload = false;
|
||||||
|
|
||||||
|
while (!startedDownload)
|
||||||
|
{
|
||||||
|
Logger.Debug("Entering loop to check thread availability");
|
||||||
|
Logger.Trace("Locking scheduler...");
|
||||||
|
lock (this)
|
||||||
|
{
|
||||||
|
Logger.Trace(
|
||||||
|
$"Checking thread limit. Running: {RunningThreads}, Max: {Core.Settings.ThreadLimit}");
|
||||||
|
if (RunningThreads >= Core.Settings.ThreadLimit)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
RunningThreads++;
|
||||||
|
startedDownload = true;
|
||||||
|
}
|
||||||
|
Logger.Trace("Unlocked scheduler.");
|
||||||
|
}
|
||||||
|
|
||||||
|
Logger.Trace("Start downloading job async.");
|
||||||
|
Task.Run(() => WorkQueue(job.Id)); // do not await to work parallel
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Logger.Error(ex.Message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue