1 instantiation of SchedulableRequest
Microsoft.Build (1)
BackEnd\Components\Scheduler\SchedulingData.cs (1)
256SchedulableRequest request = new SchedulableRequest(this, buildRequest, parent);
215 references to SchedulableRequest
Microsoft.Build (215)
BackEnd\Components\Scheduler\SchedulableRequest.cs (36)
85private SchedulableRequest _parent; 96private Dictionary<BlockingRequestKey, SchedulableRequest> _requestsWeAreBlockedBy; 101private HashSet<SchedulableRequest> _requestsWeAreBlocking; 126public SchedulableRequest(SchedulingData collection, BuildRequest request, SchedulableRequest parent) 136_requestsWeAreBlockedBy = new Dictionary<BlockingRequestKey, SchedulableRequest>(); 137_requestsWeAreBlocking = new HashSet<SchedulableRequest>(); 169public SchedulableRequest Parent 213public IEnumerable<SchedulableRequest> RequestsWeAreBlockedBy 235public IEnumerable<SchedulableRequest> RequestsWeAreBlocking 334public void BlockByRequest(SchedulableRequest blockingRequest, string[] activeTargets, string blockingTarget = null) 423List<SchedulableRequest> requestsToUnblock = new List<SchedulableRequest>(_requestsWeAreBlocking); 424foreach (SchedulableRequest requestWeAreBlocking in requestsToUnblock) 497private void DetectCircularDependency(SchedulableRequest blockingRequest) 514private void DetectIndirectCircularDependency(SchedulableRequest blockingRequest) 518SchedulableRequest alternateRequest = _schedulingData.GetBlockedRequestIfAny(blockingRequest.BuildRequest.GlobalRequestId); 524Stack<SchedulableRequest> requestsToEvaluate = new Stack<SchedulableRequest>(16); 525HashSet<SchedulableRequest> evaluatedRequests = new HashSet<SchedulableRequest>(); 530SchedulableRequest requestToEvaluate = requestsToEvaluate.Pop(); 554foreach (SchedulableRequest childRequest in requestToEvaluate.RequestsWeAreBlockedBy) 567private void ThrowIndirectCircularDependency(SchedulableRequest blockingRequest, SchedulableRequest requestToEvaluate) 571List<SchedulableRequest> ancestors = new List<SchedulableRequest>(16); 585private void DetectDirectCircularDependency(SchedulableRequest blockingRequest) 589List<SchedulableRequest> ancestors = new List<SchedulableRequest>(16); 590SchedulableRequest currentRequest = this; 608private void CleanupForCircularDependencyAndThrow(SchedulableRequest requestCausingFailure, List<SchedulableRequest> ancestors) 612List<SchedulableRequest> tempRequests = new List<SchedulableRequest>(_requestsWeAreBlockedBy.Values); 613foreach (SchedulableRequest requestWeAreBlockedBy in tempRequests) 640Assumed.True(_requestsWeAreBlockedBy.TryGetValue(blockingRequestKey, out SchedulableRequest unblockingRequest), "We are not blocked by the specified request.");
BackEnd\Components\Scheduler\Scheduler.cs (86)
70private ArrayPool<SchedulableRequest> _requestBufferPool = ArrayPool<SchedulableRequest>.Create(); 341SchedulableRequest request = _schedulingData.GetExecutingRequestByNode(nodeId); 354SchedulableRequest parentRequest = null; 439SchedulableRequest request = _schedulingData.GetExecutingRequest(result.GlobalRequestId); 479SchedulableRequest[] unscheduledRequests = RentPooledBuffer( 481foreach (SchedulableRequest unscheduledRequest in new ReadOnlySpan<SchedulableRequest>(unscheduledRequests, 0, numRead)) 585foreach (SchedulableRequest request in _schedulingData.GetScheduledRequestsByNode(nodeId)) 602_requestBufferPool = ArrayPool<SchedulableRequest>.Create(); 620foreach (SchedulableRequest request in _schedulingData.GetRequestsByHierarchy(null)) 717private void HandleYieldAction(SchedulableRequest parentRequest, BuildRequestBlocker blocker) 812foreach (SchedulableRequest request in _schedulingData.BlockedRequests) 998SchedulableRequest bestRequest = null; 1001foreach (SchedulableRequest request in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1050private void AssignUnscheduledRequestsToInProcNode(List<ScheduleResponse> responses, HashSet<int> idleNodes, Func<SchedulableRequest, bool> shouldBeScheduled) 1054SchedulableRequest[] unscheduledRequests = _requestBufferPool.Rent(_schedulingData.UnscheduledRequestsCount); 1064foreach (SchedulableRequest request in new ReadOnlySpan<SchedulableRequest>(unscheduledRequests, 0, numRead)) 1109foreach (SchedulableRequest request in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1133SchedulableRequest requestWithSmallestSourceFile = null; 1137foreach (SchedulableRequest unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1175SchedulableRequest requestWithLargestSourceFile = null; 1179foreach (SchedulableRequest unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1218SchedulableRequest requestToSchedule = null; 1219SchedulableRequest requestToScheduleNoAffinity = null; 1220SchedulableRequest requestToScheduleWithAffinity = null; 1221foreach (SchedulableRequest currentSchedulableRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1295SchedulableRequest mostWaitingRequests = null; 1296foreach (SchedulableRequest unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1329foreach (SchedulableRequest unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1393foreach (SchedulableRequest request in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1422private void AssignUnscheduledRequestToNode(SchedulableRequest request, int nodeId, List<ScheduleResponse> responses) 1515private bool CanScheduleRequestToNode(SchedulableRequest request, int nodeId) 1539private bool CreateNewNodeIfPossible(List<ScheduleResponse> responses, IEnumerable<SchedulableRequest> requests) 1554foreach (SchedulableRequest request in requests) 1680private void MarkRequestAborted(SchedulableRequest request) 1685foreach (SchedulableRequest blockedRequest in request.RequestsWeAreBlocking) 1694private void HandleRequestBlockedOnInProgressTarget(SchedulableRequest blockedRequest, BuildRequestBlocker blocker) 1700SchedulableRequest blockingRequest = _schedulingData.GetScheduledRequest(blocker.BlockingRequestId); 1725private void HandleRequestBlockedOnResultsTransfer(SchedulableRequest parentRequest, List<ScheduleResponse> responses) 1753private void HandleRequestBlockedByNewRequests(SchedulableRequest parentRequest, BuildRequestBlocker blocker, List<ScheduleResponse> responses) 1821foreach (SchedulableRequest existingRequest in _schedulingData.GetRequestsAssignedToConfiguration(request.ConfigurationId)) 1880SchedulableRequest blockingRequest = _schedulingData.CreateRequest(requestToAdd, parentRequest); 1895foreach (SchedulableRequest request in _schedulingData.GetReadyRequestsByNode(nodeId)) 1912private void ResolveRequestFromCacheAndResumeIfPossible(SchedulableRequest request, List<ScheduleResponse> responses) 2007SchedulableRequest[] unscheduledRequests = RentPooledBuffer( 2009foreach (SchedulableRequest request in new ReadOnlySpan<SchedulableRequest>(unscheduledRequests, 0, numRead)) 2100foreach (SchedulableRequest blockedRequest in schedulingData.BlockedRequests) 2111foreach (SchedulableRequest executingRequest in schedulingData.ExecutingRequests) 2220private int ComputeClosureOfWaitingRequests(SchedulableRequest request) 2227foreach (SchedulableRequest waitingRequest in request.RequestsWeAreBlocking) 2289private bool RequestOrAnyItIsBlockedByCanBeServiced(SchedulableRequest request) 2293foreach (SchedulableRequest requestWeAreBlockedBy in request.RequestsWeAreBlockedBy) 2338foreach (SchedulableRequest existingRequest in _schedulingData.GetRequestsAssignedToConfiguration(request.ConfigurationId)) 2372private SchedulableRequest[] RentPooledBuffer(IEnumerable<SchedulableRequest> requests, int count, out int numRead) 2374SchedulableRequest[] buffer = _requestBufferPool.Rent(count); 2375IEnumerator<SchedulableRequest> requestsToRead = requests.GetEnumerator(); 2389private void ReturnPooledBuffer(SchedulableRequest[] buffer, int numRead) 2611private void WriteRecursiveSummary(ILoggingService loggingService, BuildEventContext context, int submissionId, SchedulableRequest request, int level, bool useConfigurations, bool isLastChild) 2648List<SchedulableRequest> childRequests = new List<SchedulableRequest>(_schedulingData.GetRequestsByHierarchy(request)); 2649childRequests.Sort(delegate (SchedulableRequest left, SchedulableRequest right) 2665SchedulableRequest childRequest = childRequests[i]; 2782List<SchedulableRequest> scheduledRequestsByNode = new List<SchedulableRequest>(_schedulingData.GetScheduledRequestsByNode(nodeId)); 2784foreach (SchedulableRequest request in scheduledRequestsByNode) 2802Queue<SchedulableRequest> blockingRequests = new Queue<SchedulableRequest>(); 2803HashSet<SchedulableRequest> topLevelBlockingRequests = new HashSet<SchedulableRequest>(); 2804foreach (SchedulableRequest request in scheduledRequestsByNode) 2808foreach (SchedulableRequest blockingRequest in request.RequestsWeAreBlockedBy) 2817SchedulableRequest request = blockingRequests.Dequeue(); 2821foreach (SchedulableRequest blockingRequest in request.RequestsWeAreBlockedBy) 2832foreach (SchedulableRequest request in topLevelBlockingRequests) 2849foreach (SchedulableRequest request in _schedulingData.UnscheduledRequests) 2935private void DumpRequestHierarchy(StreamWriter file, SchedulableRequest root, int indent) 2937foreach (SchedulableRequest child in _schedulingData.GetRequestsByHierarchy(root)) 2947private void DumpRequestState(StreamWriter file, SchedulableRequest request, int indent) 2952foreach (SchedulableRequest blockingRequest in request.RequestsWeAreBlockedBy) 2960foreach (SchedulableRequest blockedRequest in request.RequestsWeAreBlocking) 2970private void DumpRequestSpec(StreamWriter file, SchedulableRequest request, int indent, string prefix)
BackEnd\Components\Scheduler\SchedulerCircularDependencyException.cs (3)
23private IList<SchedulableRequest> _ancestors; 33public SchedulerCircularDependencyException(BuildRequest request, IList<SchedulableRequest> ancestors) 47public IEnumerable<SchedulableRequest> Ancestors
BackEnd\Components\Scheduler\SchedulingData.cs (80)
23private readonly Dictionary<int, SchedulableRequest> _executingRequests = new Dictionary<int, SchedulableRequest>(32); 28private readonly Dictionary<int, SchedulableRequest> _blockedRequests = new Dictionary<int, SchedulableRequest>(32); 33private readonly Dictionary<int, SchedulableRequest> _yieldingRequests = new Dictionary<int, SchedulableRequest>(32); 38private readonly Dictionary<int, SchedulableRequest> _readyRequests = new Dictionary<int, SchedulableRequest>(32); 43private readonly LinkedList<SchedulableRequest> _unscheduledRequests = new LinkedList<SchedulableRequest>(); 49private readonly Dictionary<SchedulableRequest, LinkedListNode<SchedulableRequest>> _unscheduledRequestNodesByRequest = new Dictionary<SchedulableRequest, LinkedListNode<SchedulableRequest>>(32); 58private readonly Dictionary<int, HashSet<SchedulableRequest>> _scheduledRequestsByNode = new Dictionary<int, HashSet<SchedulableRequest>>(32); 63private readonly Dictionary<int, SchedulableRequest> _executingRequestByNode = new Dictionary<int, SchedulableRequest>(32); 68private readonly Dictionary<int, HashSet<SchedulableRequest>> _readyRequestsByNode = new Dictionary<int, HashSet<SchedulableRequest>>(32); 86private readonly Dictionary<int, HashSet<SchedulableRequest>> _configurationToRequests = new Dictionary<int, HashSet<SchedulableRequest>>(32); 104private readonly Dictionary<SchedulableRequest, List<SchedulableRequest>> _buildHierarchy = new Dictionary<SchedulableRequest, List<SchedulableRequest>>(32); 136public IEnumerable<SchedulableRequest> ExecutingRequests 152public IEnumerable<SchedulableRequest> ReadyRequests 176public IEnumerable<SchedulableRequest> BlockedRequests 192public IEnumerable<SchedulableRequest> YieldingRequests 208public IEnumerable<SchedulableRequest> UnscheduledRequests 254public SchedulableRequest CreateRequest(BuildRequest buildRequest, SchedulableRequest parent) 256SchedulableRequest request = new SchedulableRequest(this, buildRequest, parent); 259LinkedListNode<SchedulableRequest> requestNode = _unscheduledRequests.AddFirst(request); 263HashSet<SchedulableRequest> requests; 266requests = new HashSet<SchedulableRequest>(); 275_buildHierarchy[request] = new List<SchedulableRequest>(8); 290public void UpdateFromState(SchedulableRequest request, SchedulableRequestState previousState) 318LinkedListNode<SchedulableRequest> requestNode = _unscheduledRequestNodesByRequest[request]; 325HashSet<SchedulableRequest> requestsAssignedToNode; 328requestsAssignedToNode = new HashSet<SchedulableRequest>(); 394HashSet<SchedulableRequest> readyRequestsOnNode; 397readyRequestsOnNode = new HashSet<SchedulableRequest>(); 416public IEnumerable<SchedulableRequest> GetRequestsAssignedToConfiguration(int configurationId) 426HashSet<SchedulableRequest> requests; 438public SchedulableRequest GetExecutingRequest(int globalRequestId) 447public SchedulableRequest GetBlockedRequest(int globalRequestId) 456public SchedulableRequest GetBlockedRequestIfAny(int globalRequestId) 458SchedulableRequest request; 470public SchedulableRequest GetYieldingRequest(int globalRequestId) 479public SchedulableRequest GetReadyRequest(int globalRequestId) 488public SchedulableRequest GetScheduledRequest(int globalRequestId) 490SchedulableRequest returnValue = InternalGetScheduledRequestByGlobalRequestId(globalRequestId); 500SchedulableRequest request; 539public SchedulableRequest GetExecutingRequestByNode(int nodeId) 547public bool IsRequestScheduled(SchedulableRequest request) 557HashSet<SchedulableRequest> requests; 569public IEnumerable<SchedulableRequest> GetScheduledRequestsByNode(int nodeId) 571HashSet<SchedulableRequest> requests; 574return ReadOnlyEmptyCollection<SchedulableRequest>.Instance; 583public IEnumerable<SchedulableRequest> GetReadyRequestsByNode(int nodeId) 585HashSet<SchedulableRequest> requests; 588return ReadOnlyEmptyCollection<SchedulableRequest>.Instance; 598public IEnumerable<SchedulableRequest> GetRequestsByHierarchy(SchedulableRequest root) 603List<SchedulableRequest> roots = new List<SchedulableRequest>(); 604foreach (SchedulableRequest key in _buildHierarchy.Keys) 636public bool CanScheduleRequestToNode(SchedulableRequest request, int nodeId) 653SchedulableRequest request = GetScheduledRequest(globalRequestId); 666SchedulableRequest request = GetScheduledRequest(globalRequestId); 690private SchedulableRequest InternalGetScheduledRequestByGlobalRequestId(int globalRequestId) 692SchedulableRequest returnValue; 721SchedulableRequest request = InternalGetScheduledRequestByGlobalRequestId(globalRequestId); 731private LinkedList<SchedulableRequest>.Enumerator _enumerator; 742public SchedulableRequest Current { get; private set; } 772private SchedulableRequest _request; 787public SchedulingEvent(DateTime eventTime, SchedulableRequest request, SchedulableRequestState oldState, SchedulableRequestState newState) 806public SchedulableRequest Request
BackEnd\Components\Scheduler\SchedulingPlan.cs (10)
93SchedulableRequest rootRequest = GetRootRequest(submissionId); 142SchedulableRequest rootRequest = GetRootRequest(submissionId); 204private string GetPlanName(SchedulableRequest rootRequest) 424private SchedulableRequest GetRootRequest(int submissionId) 426foreach (SchedulableRequest request in _schedulingData.GetRequestsByHierarchy(null)) 440private void RecursiveWriteDependencies(StreamWriter file, SchedulableRequest request) 443foreach (SchedulableRequest child in _schedulingData.GetRequestsByHierarchy(request)) 450foreach (SchedulableRequest child in _schedulingData.GetRequestsByHierarchy(request)) 459private void RecursiveAccumulateConfigurationTimes(SchedulableRequest request, Dictionary<int, double> accumulatedTimeByConfiguration) 468foreach (SchedulableRequest childRequest in _schedulingData.GetRequestsByHierarchy(request))