1 instantiation of SchedulableRequest
Microsoft.Build (1)
BackEnd\Components\Scheduler\SchedulingData.cs (1)
257SchedulableRequest request = new SchedulableRequest(this, buildRequest, parent);
215 references to SchedulableRequest
Microsoft.Build (215)
BackEnd\Components\Scheduler\SchedulableRequest.cs (36)
86private SchedulableRequest _parent; 97private Dictionary<BlockingRequestKey, SchedulableRequest> _requestsWeAreBlockedBy; 102private HashSet<SchedulableRequest> _requestsWeAreBlocking; 127public SchedulableRequest(SchedulingData collection, BuildRequest request, SchedulableRequest parent) 137_requestsWeAreBlockedBy = new Dictionary<BlockingRequestKey, SchedulableRequest>(); 138_requestsWeAreBlocking = new HashSet<SchedulableRequest>(); 170public SchedulableRequest Parent 214public IEnumerable<SchedulableRequest> RequestsWeAreBlockedBy 236public IEnumerable<SchedulableRequest> RequestsWeAreBlocking 335public void BlockByRequest(SchedulableRequest blockingRequest, string[] activeTargets, string blockingTarget = null) 424List<SchedulableRequest> requestsToUnblock = new List<SchedulableRequest>(_requestsWeAreBlocking); 425foreach (SchedulableRequest requestWeAreBlocking in requestsToUnblock) 498private void DetectCircularDependency(SchedulableRequest blockingRequest) 515private void DetectIndirectCircularDependency(SchedulableRequest blockingRequest) 519SchedulableRequest alternateRequest = _schedulingData.GetBlockedRequestIfAny(blockingRequest.BuildRequest.GlobalRequestId); 525Stack<SchedulableRequest> requestsToEvaluate = new Stack<SchedulableRequest>(16); 526HashSet<SchedulableRequest> evaluatedRequests = new HashSet<SchedulableRequest>(); 531SchedulableRequest requestToEvaluate = requestsToEvaluate.Pop(); 555foreach (SchedulableRequest childRequest in requestToEvaluate.RequestsWeAreBlockedBy) 568private void ThrowIndirectCircularDependency(SchedulableRequest blockingRequest, SchedulableRequest requestToEvaluate) 572List<SchedulableRequest> ancestors = new List<SchedulableRequest>(16); 586private void DetectDirectCircularDependency(SchedulableRequest blockingRequest) 590List<SchedulableRequest> ancestors = new List<SchedulableRequest>(16); 591SchedulableRequest currentRequest = this; 609private void CleanupForCircularDependencyAndThrow(SchedulableRequest requestCausingFailure, List<SchedulableRequest> ancestors) 613List<SchedulableRequest> tempRequests = new List<SchedulableRequest>(_requestsWeAreBlockedBy.Values); 614foreach (SchedulableRequest requestWeAreBlockedBy in tempRequests) 641ErrorUtilities.VerifyThrow(_requestsWeAreBlockedBy.TryGetValue(blockingRequestKey, out SchedulableRequest unblockingRequest), "We are not blocked by the specified request.");
BackEnd\Components\Scheduler\Scheduler.cs (86)
69private ArrayPool<SchedulableRequest> _requestBufferPool = ArrayPool<SchedulableRequest>.Create(); 327SchedulableRequest request = _schedulingData.GetExecutingRequestByNode(nodeId); 340SchedulableRequest parentRequest = null; 425SchedulableRequest request = _schedulingData.GetExecutingRequest(result.GlobalRequestId); 465SchedulableRequest[] unscheduledRequests = RentPooledBuffer( 467foreach (SchedulableRequest unscheduledRequest in new ReadOnlySpan<SchedulableRequest>(unscheduledRequests, 0, numRead)) 571foreach (SchedulableRequest request in _schedulingData.GetScheduledRequestsByNode(nodeId)) 588_requestBufferPool = ArrayPool<SchedulableRequest>.Create(); 606foreach (SchedulableRequest request in _schedulingData.GetRequestsByHierarchy(null)) 703private void HandleYieldAction(SchedulableRequest parentRequest, BuildRequestBlocker blocker) 798foreach (SchedulableRequest request in _schedulingData.BlockedRequests) 984SchedulableRequest bestRequest = null; 987foreach (SchedulableRequest request in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1036private void AssignUnscheduledRequestsToInProcNode(List<ScheduleResponse> responses, HashSet<int> idleNodes, Func<SchedulableRequest, bool> shouldBeScheduled) 1040SchedulableRequest[] unscheduledRequests = _requestBufferPool.Rent(_schedulingData.UnscheduledRequestsCount); 1050foreach (SchedulableRequest request in new ReadOnlySpan<SchedulableRequest>(unscheduledRequests, 0, numRead)) 1095foreach (SchedulableRequest request in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1119SchedulableRequest requestWithSmallestSourceFile = null; 1123foreach (SchedulableRequest unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1161SchedulableRequest requestWithLargestSourceFile = null; 1165foreach (SchedulableRequest unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1204SchedulableRequest requestToSchedule = null; 1205SchedulableRequest requestToScheduleNoAffinity = null; 1206SchedulableRequest requestToScheduleWithAffinity = null; 1207foreach (SchedulableRequest currentSchedulableRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1281SchedulableRequest mostWaitingRequests = null; 1282foreach (SchedulableRequest unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1315foreach (SchedulableRequest unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1379foreach (SchedulableRequest request in _schedulingData.UnscheduledRequestsWhichCanBeScheduled) 1408private void AssignUnscheduledRequestToNode(SchedulableRequest request, int nodeId, List<ScheduleResponse> responses) 1503private bool CanScheduleRequestToNode(SchedulableRequest request, int nodeId) 1527private bool CreateNewNodeIfPossible(List<ScheduleResponse> responses, IEnumerable<SchedulableRequest> requests) 1542foreach (SchedulableRequest request in requests) 1668private void MarkRequestAborted(SchedulableRequest request) 1673foreach (SchedulableRequest blockedRequest in request.RequestsWeAreBlocking) 1682private void HandleRequestBlockedOnInProgressTarget(SchedulableRequest blockedRequest, BuildRequestBlocker blocker) 1688SchedulableRequest blockingRequest = _schedulingData.GetScheduledRequest(blocker.BlockingRequestId); 1713private void HandleRequestBlockedOnResultsTransfer(SchedulableRequest parentRequest, List<ScheduleResponse> responses) 1741private void HandleRequestBlockedByNewRequests(SchedulableRequest parentRequest, BuildRequestBlocker blocker, List<ScheduleResponse> responses) 1809foreach (SchedulableRequest existingRequest in _schedulingData.GetRequestsAssignedToConfiguration(request.ConfigurationId)) 1870SchedulableRequest blockingRequest = _schedulingData.CreateRequest(requestToAdd, parentRequest); 1885foreach (SchedulableRequest request in _schedulingData.GetReadyRequestsByNode(nodeId)) 1902private void ResolveRequestFromCacheAndResumeIfPossible(SchedulableRequest request, List<ScheduleResponse> responses) 1997SchedulableRequest[] unscheduledRequests = RentPooledBuffer( 1999foreach (SchedulableRequest request in new ReadOnlySpan<SchedulableRequest>(unscheduledRequests, 0, numRead)) 2090foreach (SchedulableRequest blockedRequest in schedulingData.BlockedRequests) 2101foreach (SchedulableRequest executingRequest in schedulingData.ExecutingRequests) 2216private int ComputeClosureOfWaitingRequests(SchedulableRequest request) 2223foreach (SchedulableRequest waitingRequest in request.RequestsWeAreBlocking) 2285private bool RequestOrAnyItIsBlockedByCanBeServiced(SchedulableRequest request) 2289foreach (SchedulableRequest requestWeAreBlockedBy in request.RequestsWeAreBlockedBy) 2334foreach (SchedulableRequest existingRequest in _schedulingData.GetRequestsAssignedToConfiguration(request.ConfigurationId)) 2368private SchedulableRequest[] RentPooledBuffer(IEnumerable<SchedulableRequest> requests, int count, out int numRead) 2370SchedulableRequest[] buffer = _requestBufferPool.Rent(count); 2371IEnumerator<SchedulableRequest> requestsToRead = requests.GetEnumerator(); 2385private void ReturnPooledBuffer(SchedulableRequest[] buffer, int numRead) 2607private void WriteRecursiveSummary(ILoggingService loggingService, BuildEventContext context, int submissionId, SchedulableRequest request, int level, bool useConfigurations, bool isLastChild) 2644List<SchedulableRequest> childRequests = new List<SchedulableRequest>(_schedulingData.GetRequestsByHierarchy(request)); 2645childRequests.Sort(delegate (SchedulableRequest left, SchedulableRequest right) 2661SchedulableRequest childRequest = childRequests[i]; 2740List<SchedulableRequest> scheduledRequestsByNode = new List<SchedulableRequest>(_schedulingData.GetScheduledRequestsByNode(nodeId)); 2742foreach (SchedulableRequest request in scheduledRequestsByNode) 2760Queue<SchedulableRequest> blockingRequests = new Queue<SchedulableRequest>(); 2761HashSet<SchedulableRequest> topLevelBlockingRequests = new HashSet<SchedulableRequest>(); 2762foreach (SchedulableRequest request in scheduledRequestsByNode) 2766foreach (SchedulableRequest blockingRequest in request.RequestsWeAreBlockedBy) 2775SchedulableRequest request = blockingRequests.Dequeue(); 2779foreach (SchedulableRequest blockingRequest in request.RequestsWeAreBlockedBy) 2790foreach (SchedulableRequest request in topLevelBlockingRequests) 2807foreach (SchedulableRequest request in _schedulingData.UnscheduledRequests) 2893private void DumpRequestHierarchy(StreamWriter file, SchedulableRequest root, int indent) 2895foreach (SchedulableRequest child in _schedulingData.GetRequestsByHierarchy(root)) 2905private void DumpRequestState(StreamWriter file, SchedulableRequest request, int indent) 2910foreach (SchedulableRequest blockingRequest in request.RequestsWeAreBlockedBy) 2918foreach (SchedulableRequest blockedRequest in request.RequestsWeAreBlocking) 2928private 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)
24private readonly Dictionary<int, SchedulableRequest> _executingRequests = new Dictionary<int, SchedulableRequest>(32); 29private readonly Dictionary<int, SchedulableRequest> _blockedRequests = new Dictionary<int, SchedulableRequest>(32); 34private readonly Dictionary<int, SchedulableRequest> _yieldingRequests = new Dictionary<int, SchedulableRequest>(32); 39private readonly Dictionary<int, SchedulableRequest> _readyRequests = new Dictionary<int, SchedulableRequest>(32); 44private readonly LinkedList<SchedulableRequest> _unscheduledRequests = new LinkedList<SchedulableRequest>(); 50private readonly Dictionary<SchedulableRequest, LinkedListNode<SchedulableRequest>> _unscheduledRequestNodesByRequest = new Dictionary<SchedulableRequest, LinkedListNode<SchedulableRequest>>(32); 59private readonly Dictionary<int, HashSet<SchedulableRequest>> _scheduledRequestsByNode = new Dictionary<int, HashSet<SchedulableRequest>>(32); 64private readonly Dictionary<int, SchedulableRequest> _executingRequestByNode = new Dictionary<int, SchedulableRequest>(32); 69private readonly Dictionary<int, HashSet<SchedulableRequest>> _readyRequestsByNode = new Dictionary<int, HashSet<SchedulableRequest>>(32); 87private readonly Dictionary<int, HashSet<SchedulableRequest>> _configurationToRequests = new Dictionary<int, HashSet<SchedulableRequest>>(32); 105private readonly Dictionary<SchedulableRequest, List<SchedulableRequest>> _buildHierarchy = new Dictionary<SchedulableRequest, List<SchedulableRequest>>(32); 137public IEnumerable<SchedulableRequest> ExecutingRequests 153public IEnumerable<SchedulableRequest> ReadyRequests 177public IEnumerable<SchedulableRequest> BlockedRequests 193public IEnumerable<SchedulableRequest> YieldingRequests 209public IEnumerable<SchedulableRequest> UnscheduledRequests 255public SchedulableRequest CreateRequest(BuildRequest buildRequest, SchedulableRequest parent) 257SchedulableRequest request = new SchedulableRequest(this, buildRequest, parent); 260LinkedListNode<SchedulableRequest> requestNode = _unscheduledRequests.AddFirst(request); 264HashSet<SchedulableRequest> requests; 267requests = new HashSet<SchedulableRequest>(); 276_buildHierarchy[request] = new List<SchedulableRequest>(8); 291public void UpdateFromState(SchedulableRequest request, SchedulableRequestState previousState) 319LinkedListNode<SchedulableRequest> requestNode = _unscheduledRequestNodesByRequest[request]; 326HashSet<SchedulableRequest> requestsAssignedToNode; 329requestsAssignedToNode = new HashSet<SchedulableRequest>(); 395HashSet<SchedulableRequest> readyRequestsOnNode; 398readyRequestsOnNode = new HashSet<SchedulableRequest>(); 417public IEnumerable<SchedulableRequest> GetRequestsAssignedToConfiguration(int configurationId) 427HashSet<SchedulableRequest> requests; 439public SchedulableRequest GetExecutingRequest(int globalRequestId) 448public SchedulableRequest GetBlockedRequest(int globalRequestId) 457public SchedulableRequest GetBlockedRequestIfAny(int globalRequestId) 459SchedulableRequest request; 471public SchedulableRequest GetYieldingRequest(int globalRequestId) 480public SchedulableRequest GetReadyRequest(int globalRequestId) 489public SchedulableRequest GetScheduledRequest(int globalRequestId) 491SchedulableRequest returnValue = InternalGetScheduledRequestByGlobalRequestId(globalRequestId); 501SchedulableRequest request; 540public SchedulableRequest GetExecutingRequestByNode(int nodeId) 548public bool IsRequestScheduled(SchedulableRequest request) 558HashSet<SchedulableRequest> requests; 570public IEnumerable<SchedulableRequest> GetScheduledRequestsByNode(int nodeId) 572HashSet<SchedulableRequest> requests; 575return ReadOnlyEmptyCollection<SchedulableRequest>.Instance; 584public IEnumerable<SchedulableRequest> GetReadyRequestsByNode(int nodeId) 586HashSet<SchedulableRequest> requests; 589return ReadOnlyEmptyCollection<SchedulableRequest>.Instance; 599public IEnumerable<SchedulableRequest> GetRequestsByHierarchy(SchedulableRequest root) 604List<SchedulableRequest> roots = new List<SchedulableRequest>(); 605foreach (SchedulableRequest key in _buildHierarchy.Keys) 637public bool CanScheduleRequestToNode(SchedulableRequest request, int nodeId) 654SchedulableRequest request = GetScheduledRequest(globalRequestId); 667SchedulableRequest request = GetScheduledRequest(globalRequestId); 694private SchedulableRequest InternalGetScheduledRequestByGlobalRequestId(int globalRequestId) 696SchedulableRequest returnValue; 725SchedulableRequest request = InternalGetScheduledRequestByGlobalRequestId(globalRequestId); 739private LinkedList<SchedulableRequest>.Enumerator _enumerator; 750public SchedulableRequest Current { get; private set; } 780private SchedulableRequest _request; 795public SchedulingEvent(DateTime eventTime, SchedulableRequest request, SchedulableRequestState oldState, SchedulableRequestState newState) 814public 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))