internal void AcceptProposals(IConfirmation jobConfirmation) { Agent.DebugMessage($"Start Acknowledge Job {jobConfirmation.Key} {jobConfirmation.Job.Name} | scope : [{jobConfirmation.ScopeConfirmation.GetScopeStart()} to {jobConfirmation.ScopeConfirmation.GetScopeEnd()}]" + $" with Priority {jobConfirmation.Job.Priority(Agent.CurrentTime)}" + $" | scopeLimit: {_scopeQueue.Limit} | scope workload : {_scopeQueue.Workload} | Capacity left {_scopeQueue.Limit - _scopeQueue.Workload} " + $" {((FBucket)jobConfirmation.Job).MaxBucketSize} ", CustomLogger.PRIORITY, LogLevel.Warn); var setup = jobConfirmation.CapabilityProvider.ResourceSetups.Single(x => x.Resource.IResourceRef != null && ((IActorRef)x.Resource.IResourceRef).Path.Name == Agent.Context.Self.Path.Name); var isQueueAble = _scopeQueue.CheckScope(jobConfirmation, Agent.CurrentTime, _jobInProgress.ResourceIsBusyUntil, _capabilityProviderManager.GetCurrentUsedCapabilityId(), setup.UsedInSetup); if (isQueueAble && _jobInProgress.IsSet && _jobInProgress.ResourceIsBusyUntil > jobConfirmation.ScopeConfirmation.GetScopeStart()) { Agent.DebugMessage(msg: $"Seems to be wrong #3", CustomLogger.JOB, LogLevel.Warn); } // If is not queueable if (!isQueueAble) { Agent.DebugMessage(msg: $"Reject proposal for: {jobConfirmation.Job.Name} {jobConfirmation.Key} with jobPrio: { jobConfirmation.Job.Priority(Agent.CurrentTime) } and send reject job to job agent", CustomLogger.PRIORITY, LogLevel.Warn); Agent.Send(instruction: Job.Instruction.StartRequeue.Create(target: jobConfirmation.JobAgentRef)); return; } this.UpdateAndRequeuePlanedJobs(jobConfirmation); _scopeQueue.Enqueue(jobConfirmation); Agent.DebugMessage(msg: $"Accepted proposal on resource {Agent.Context.Self.Path.Name} and " + $"start enqueue {jobConfirmation.Job.Name} {jobConfirmation.Key} queueCount: {_scopeQueue.Count}" + $"", CustomLogger.PRIORITY, LogLevel.Warn); UpdateProcessingItem(); }