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)
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) 1517private bool CanScheduleRequestToNode(SchedulableRequest request, int nodeId) 1541private bool CreateNewNodeIfPossible(List<ScheduleResponse> responses, IEnumerable<SchedulableRequest> requests) 1556foreach (SchedulableRequest request in requests) 1682private void MarkRequestAborted(SchedulableRequest request) 1687foreach (SchedulableRequest blockedRequest in request.RequestsWeAreBlocking) 1696private void HandleRequestBlockedOnInProgressTarget(SchedulableRequest blockedRequest, BuildRequestBlocker blocker) 1702SchedulableRequest blockingRequest = _schedulingData.GetScheduledRequest(blocker.BlockingRequestId); 1727private void HandleRequestBlockedOnResultsTransfer(SchedulableRequest parentRequest, List<ScheduleResponse> responses) 1755private void HandleRequestBlockedByNewRequests(SchedulableRequest parentRequest, BuildRequestBlocker blocker, List<ScheduleResponse> responses) 1823foreach (SchedulableRequest existingRequest in _schedulingData.GetRequestsAssignedToConfiguration(request.ConfigurationId)) 1884SchedulableRequest blockingRequest = _schedulingData.CreateRequest(requestToAdd, parentRequest); 1899foreach (SchedulableRequest request in _schedulingData.GetReadyRequestsByNode(nodeId)) 1916private void ResolveRequestFromCacheAndResumeIfPossible(SchedulableRequest request, List<ScheduleResponse> responses) 2011SchedulableRequest[] unscheduledRequests = RentPooledBuffer( 2013foreach (SchedulableRequest request in new ReadOnlySpan<SchedulableRequest>(unscheduledRequests, 0, numRead)) 2104foreach (SchedulableRequest blockedRequest in schedulingData.BlockedRequests) 2115foreach (SchedulableRequest executingRequest in schedulingData.ExecutingRequests) 2226private int ComputeClosureOfWaitingRequests(SchedulableRequest request) 2233foreach (SchedulableRequest waitingRequest in request.RequestsWeAreBlocking) 2295private bool RequestOrAnyItIsBlockedByCanBeServiced(SchedulableRequest request) 2299foreach (SchedulableRequest requestWeAreBlockedBy in request.RequestsWeAreBlockedBy) 2344foreach (SchedulableRequest existingRequest in _schedulingData.GetRequestsAssignedToConfiguration(request.ConfigurationId)) 2378private SchedulableRequest[] RentPooledBuffer(IEnumerable<SchedulableRequest> requests, int count, out int numRead) 2380SchedulableRequest[] buffer = _requestBufferPool.Rent(count); 2381IEnumerator<SchedulableRequest> requestsToRead = requests.GetEnumerator(); 2395private void ReturnPooledBuffer(SchedulableRequest[] buffer, int numRead) 2617private void WriteRecursiveSummary(ILoggingService loggingService, BuildEventContext context, int submissionId, SchedulableRequest request, int level, bool useConfigurations, bool isLastChild) 2654List<SchedulableRequest> childRequests = new List<SchedulableRequest>(_schedulingData.GetRequestsByHierarchy(request)); 2655childRequests.Sort(delegate (SchedulableRequest left, SchedulableRequest right) 2671SchedulableRequest childRequest = childRequests[i]; 2788List<SchedulableRequest> scheduledRequestsByNode = new List<SchedulableRequest>(_schedulingData.GetScheduledRequestsByNode(nodeId)); 2790foreach (SchedulableRequest request in scheduledRequestsByNode) 2808Queue<SchedulableRequest> blockingRequests = new Queue<SchedulableRequest>(); 2809HashSet<SchedulableRequest> topLevelBlockingRequests = new HashSet<SchedulableRequest>(); 2810foreach (SchedulableRequest request in scheduledRequestsByNode) 2814foreach (SchedulableRequest blockingRequest in request.RequestsWeAreBlockedBy) 2823SchedulableRequest request = blockingRequests.Dequeue(); 2827foreach (SchedulableRequest blockingRequest in request.RequestsWeAreBlockedBy) 2838foreach (SchedulableRequest request in topLevelBlockingRequests) 2855foreach (SchedulableRequest request in _schedulingData.UnscheduledRequests) 2941private void DumpRequestHierarchy(StreamWriter file, SchedulableRequest root, int indent) 2943foreach (SchedulableRequest child in _schedulingData.GetRequestsByHierarchy(root)) 2953private void DumpRequestState(StreamWriter file, SchedulableRequest request, int indent) 2958foreach (SchedulableRequest blockingRequest in request.RequestsWeAreBlockedBy) 2966foreach (SchedulableRequest blockedRequest in request.RequestsWeAreBlocking) 2976private 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); 693private SchedulableRequest InternalGetScheduledRequestByGlobalRequestId(int globalRequestId) 695SchedulableRequest returnValue; 724SchedulableRequest request = InternalGetScheduledRequestByGlobalRequestId(globalRequestId); 738private LinkedList<SchedulableRequest>.Enumerator _enumerator; 749public SchedulableRequest Current { get; private set; } 779private SchedulableRequest _request; 794public SchedulingEvent(DateTime eventTime, SchedulableRequest request, SchedulableRequestState oldState, SchedulableRequestState newState) 813public 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))