diff --git a/src/ApiService/ApiService/Program.cs b/src/ApiService/ApiService/Program.cs index f1b79d02e..8ffaf3bb2 100644 --- a/src/ApiService/ApiService/Program.cs +++ b/src/ApiService/ApiService/Program.cs @@ -78,6 +78,8 @@ public class Program { .AddScoped() .AddScoped() .AddScoped() + .AddScoped() + .AddScoped() //Move out expensive resources into separate class, and add those as Singleton // ArmClient, Table Client(s), Queue Client(s), HttpClient, etc. diff --git a/src/ApiService/ApiService/TimerTasks.cs b/src/ApiService/ApiService/TimerTasks.cs index 4b21a38af..8bda35394 100644 --- a/src/ApiService/ApiService/TimerTasks.cs +++ b/src/ApiService/ApiService/TimerTasks.cs @@ -34,7 +34,7 @@ public class TimerTasks { await foreach (var job in expiredJobs) { _logger.Info($"stopping expired job. job_id:{job.JobId }"); - await _jobOperations.Stopping(job); + await _jobOperations.Stopping(job, _taskOperations); } var jobs = _jobOperations.SearchState(states: JobStateHelper.NeedsWork); diff --git a/src/ApiService/ApiService/onefuzzlib/JobOperations.cs b/src/ApiService/ApiService/onefuzzlib/JobOperations.cs index 402e0913c..68a6a47ab 100644 --- a/src/ApiService/ApiService/onefuzzlib/JobOperations.cs +++ b/src/ApiService/ApiService/onefuzzlib/JobOperations.cs @@ -6,17 +6,15 @@ public interface IJobOperations : IStatefulOrm { System.Threading.Tasks.Task Get(Guid jobId); System.Threading.Tasks.Task OnStart(Job job); IAsyncEnumerable SearchExpired(); - System.Threading.Tasks.Task Stopping(Job job); + System.Threading.Tasks.Task Stopping(Job job, ITaskOperations taskOperations); IAsyncEnumerable SearchState(IEnumerable states); System.Threading.Tasks.Task StopNeverStartedJobs(); } public class JobOperations : StatefulOrm, IJobOperations { - private readonly ITaskOperations _taskOperations; private readonly IEvents _events; - public JobOperations(IStorage storage, ILogTracer logTracer, IServiceConfig config, ITaskOperations taskOperations, IEvents events) : base(storage, logTracer, config) { - _taskOperations = taskOperations; + public JobOperations(IStorage storage, ILogTracer logTracer, IServiceConfig config, IEvents events) : base(storage, logTracer, config) { _events = events; } @@ -31,7 +29,7 @@ public class JobOperations : StatefulOrm, IJobOperations { } public IAsyncEnumerable SearchExpired() { - return QueryAsync(filter: $"end_time lt datetime'{DateTimeOffset.UtcNow}'"); + return QueryAsync(filter: $"end_time lt datetime'{DateTimeOffset.UtcNow.ToString("o")}'"); } public IAsyncEnumerable SearchState(IEnumerable states) { @@ -46,9 +44,9 @@ public class JobOperations : StatefulOrm, IJobOperations { throw new NotImplementedException(); } - public async System.Threading.Tasks.Task Stopping(Job job) { + public async System.Threading.Tasks.Task Stopping(Job job, ITaskOperations taskOperations) { job = job with { State = JobState.Stopping }; - var tasks = await _taskOperations.QueryAsync(filter: $"job_id eq '{job.JobId}'").ToListAsync(); + var tasks = await taskOperations.QueryAsync(filter: $"job_id eq '{job.JobId}'").ToListAsync(); var taskNotStopped = tasks.ToLookup(task => task.State != TaskState.Stopped); var notStopped = taskNotStopped[true]; @@ -56,7 +54,7 @@ public class JobOperations : StatefulOrm, IJobOperations { if (notStopped.Any()) { foreach (var task in notStopped) { - await _taskOperations.MarkStopping(task); + await taskOperations.MarkStopping(task); } } else { job = job with { State = JobState.Stopped }; diff --git a/src/ApiService/ApiService/onefuzzlib/PoolOperations.cs b/src/ApiService/ApiService/onefuzzlib/PoolOperations.cs index fea248cc6..4898ab8fd 100644 --- a/src/ApiService/ApiService/onefuzzlib/PoolOperations.cs +++ b/src/ApiService/ApiService/onefuzzlib/PoolOperations.cs @@ -9,12 +9,10 @@ public interface IPoolOperations { public class PoolOperations : StatefulOrm, IPoolOperations { private IConfigOperations _configOperations; - private ITaskOperations _taskOperations; - public PoolOperations(IStorage storage, ILogTracer log, IServiceConfig config, IConfigOperations configOperations, ITaskOperations taskOperations) + public PoolOperations(IStorage storage, ILogTracer log, IServiceConfig config, IConfigOperations configOperations) : base(storage, log, config) { _configOperations = configOperations; - _taskOperations = taskOperations; } public async Async.Task> GetByName(string poolName) { diff --git a/src/ApiService/ApiService/onefuzzlib/TaskOperations.cs b/src/ApiService/ApiService/onefuzzlib/TaskOperations.cs index 07edcb118..e45bd93eb 100644 --- a/src/ApiService/ApiService/onefuzzlib/TaskOperations.cs +++ b/src/ApiService/ApiService/onefuzzlib/TaskOperations.cs @@ -67,7 +67,7 @@ public class TaskOperations : StatefulOrm, ITaskOperations { public IAsyncEnumerable SearchExpired() { - var timeFilter = $"end_time lt datetime'{DateTimeOffset.UtcNow.ToString("o") }'"; + var timeFilter = $"end_time lt Datetime'{DateTimeOffset.UtcNow.ToString("o") }'"; return QueryAsync(filter: timeFilter); }