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