Exemplo n.º 1
0
        private void UpdateCompletionList(IWorkContext context, IJobResult jobResult)
        {
            context.Verify(nameof(context)).IsNotNull();
            jobResult.Verify(nameof(jobResult)).IsNotNull();
            jobResult.JobId.Verify(nameof(jobResult.JobId)).IsNotNull();

            context.Telemetry.ActivityStop(context, $"{nameof(UpdateCompletionList)} for JobId={((Guid)jobResult.JobId).ToString()}, Status={jobResult.Status}", (long)(jobResult.Duration?.TotalMilliseconds ?? 0));

            if (_semaphore != null)
            {
                _semaphore.Release();
                context.Telemetry.TrackMetric(context, $"{nameof(RunJobGraph)}:Release-Semaphore-CurrentCount", (double)_semaphore.CurrentCount);
            }

            lock (_lock)
            {
                if (_processedDict.TryGetValue((Guid)jobResult.JobId, out TKey value))
                {
                    if (jobResult.Status == JobStatus.Completed)
                    {
                        _graphContext.AddProcessedNodeKey(value);
                    }
                    else
                    {
                        _graphContext.AddStopNodeKey(value);
                    }

                    _runningKeys.Remove(value);
                }
            }
        }