1 instantiation of SchedulableRequest
Microsoft.Build (1)
BackEnd\Components\Scheduler\SchedulingData.cs (1)
262
SchedulableRequest request = new
SchedulableRequest
(this, buildRequest, parent);
216 references to SchedulableRequest
Microsoft.Build (216)
BackEnd\Components\Scheduler\SchedulableRequest.cs (36)
85
private
SchedulableRequest
_parent;
96
private Dictionary<BlockingRequestKey,
SchedulableRequest
> _requestsWeAreBlockedBy;
101
private HashSet<
SchedulableRequest
> _requestsWeAreBlocking;
126
public SchedulableRequest(SchedulingData collection, BuildRequest request,
SchedulableRequest
parent)
136
_requestsWeAreBlockedBy = new Dictionary<BlockingRequestKey,
SchedulableRequest
>();
137
_requestsWeAreBlocking = new HashSet<
SchedulableRequest
>();
169
public
SchedulableRequest
Parent
213
public IEnumerable<
SchedulableRequest
> RequestsWeAreBlockedBy
235
public IEnumerable<
SchedulableRequest
> RequestsWeAreBlocking
334
public void BlockByRequest(
SchedulableRequest
blockingRequest, string[] activeTargets, string blockingTarget = null)
423
List<
SchedulableRequest
> requestsToUnblock = new List<
SchedulableRequest
>(_requestsWeAreBlocking);
424
foreach (
SchedulableRequest
requestWeAreBlocking in requestsToUnblock)
497
private void DetectCircularDependency(
SchedulableRequest
blockingRequest)
514
private void DetectIndirectCircularDependency(
SchedulableRequest
blockingRequest)
518
SchedulableRequest
alternateRequest = _schedulingData.GetBlockedRequestIfAny(blockingRequest.BuildRequest.GlobalRequestId);
524
Stack<
SchedulableRequest
> requestsToEvaluate = new Stack<
SchedulableRequest
>(16);
525
HashSet<
SchedulableRequest
> evaluatedRequests = new HashSet<
SchedulableRequest
>();
530
SchedulableRequest
requestToEvaluate = requestsToEvaluate.Pop();
554
foreach (
SchedulableRequest
childRequest in requestToEvaluate.RequestsWeAreBlockedBy)
567
private void ThrowIndirectCircularDependency(
SchedulableRequest
blockingRequest,
SchedulableRequest
requestToEvaluate)
571
List<
SchedulableRequest
> ancestors = new List<
SchedulableRequest
>(16);
585
private void DetectDirectCircularDependency(
SchedulableRequest
blockingRequest)
589
List<
SchedulableRequest
> ancestors = new List<
SchedulableRequest
>(16);
590
SchedulableRequest
currentRequest = this;
608
private void CleanupForCircularDependencyAndThrow(
SchedulableRequest
requestCausingFailure, List<
SchedulableRequest
> ancestors)
612
List<
SchedulableRequest
> tempRequests = new List<
SchedulableRequest
>(_requestsWeAreBlockedBy.Values);
613
foreach (
SchedulableRequest
requestWeAreBlockedBy in tempRequests)
640
Assumed.True(_requestsWeAreBlockedBy.TryGetValue(blockingRequestKey, out
SchedulableRequest
unblockingRequest), "We are not blocked by the specified request.");
BackEnd\Components\Scheduler\Scheduler.cs (88)
71
private ArrayPool<
SchedulableRequest
> _requestBufferPool = ArrayPool<
SchedulableRequest
>.Create();
342
SchedulableRequest
request = _schedulingData.GetExecutingRequestByNode(nodeId);
355
SchedulableRequest
parentRequest = null;
440
SchedulableRequest
request = _schedulingData.GetExecutingRequest(result.GlobalRequestId);
480
SchedulableRequest
[] unscheduledRequests = RentPooledBuffer(
482
foreach (
SchedulableRequest
unscheduledRequest in new ReadOnlySpan<
SchedulableRequest
>(unscheduledRequests, 0, numRead))
586
foreach (
SchedulableRequest
request in _schedulingData.GetScheduledRequestsByNode(nodeId))
603
_requestBufferPool = ArrayPool<
SchedulableRequest
>.Create();
621
foreach (
SchedulableRequest
request in _schedulingData.GetRequestsByHierarchy(null))
718
private void HandleYieldAction(
SchedulableRequest
parentRequest, BuildRequestBlocker blocker)
813
foreach (
SchedulableRequest
request in _schedulingData.BlockedRequests)
999
SchedulableRequest
bestRequest = null;
1002
foreach (
SchedulableRequest
request in _schedulingData.UnscheduledRequestsWhichCanBeScheduled)
1051
private void AssignUnscheduledRequestsToInProcNode(List<ScheduleResponse> responses, HashSet<int> idleNodes, Func<
SchedulableRequest
, bool> shouldBeScheduled)
1055
SchedulableRequest
[] unscheduledRequests = _requestBufferPool.Rent(_schedulingData.UnscheduledRequestsCount);
1065
foreach (
SchedulableRequest
request in new ReadOnlySpan<
SchedulableRequest
>(unscheduledRequests, 0, numRead))
1110
foreach (
SchedulableRequest
request in _schedulingData.UnscheduledRequestsWhichCanBeScheduled)
1134
SchedulableRequest
requestWithSmallestSourceFile = null;
1138
foreach (
SchedulableRequest
unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled)
1176
SchedulableRequest
requestWithLargestSourceFile = null;
1180
foreach (
SchedulableRequest
unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled)
1219
SchedulableRequest
requestToSchedule = null;
1220
SchedulableRequest
requestToScheduleNoAffinity = null;
1221
SchedulableRequest
requestToScheduleWithAffinity = null;
1222
foreach (
SchedulableRequest
currentSchedulableRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled)
1296
SchedulableRequest
mostWaitingRequests = null;
1297
foreach (
SchedulableRequest
unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled)
1330
foreach (
SchedulableRequest
unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled)
1394
foreach (
SchedulableRequest
request in _schedulingData.UnscheduledRequestsWhichCanBeScheduled)
1423
private void AssignUnscheduledRequestToNode(
SchedulableRequest
request, int nodeId, List<ScheduleResponse> responses)
1516
private bool CanScheduleRequestToNode(
SchedulableRequest
request, int nodeId)
1540
private bool CreateNewNodeIfPossible(List<ScheduleResponse> responses, IEnumerable<
SchedulableRequest
> requests)
1555
foreach (
SchedulableRequest
request in requests)
1681
private void MarkRequestAborted(
SchedulableRequest
request)
1686
foreach (
SchedulableRequest
blockedRequest in request.RequestsWeAreBlocking)
1695
private void HandleRequestBlockedOnInProgressTarget(
SchedulableRequest
blockedRequest, BuildRequestBlocker blocker)
1701
SchedulableRequest
blockingRequest = _schedulingData.GetScheduledRequest(blocker.BlockingRequestId);
1726
private void HandleRequestBlockedOnResultsTransfer(
SchedulableRequest
parentRequest, List<ScheduleResponse> responses)
1754
private void HandleRequestBlockedByNewRequests(
SchedulableRequest
parentRequest, BuildRequestBlocker blocker, List<ScheduleResponse> responses)
1822
foreach (
SchedulableRequest
existingRequest in _schedulingData.GetRequestsAssignedToConfiguration(request.ConfigurationId))
1881
SchedulableRequest
blockingRequest = _schedulingData.CreateRequest(requestToAdd, parentRequest);
1896
foreach (
SchedulableRequest
request in _schedulingData.GetReadyRequestsByNode(nodeId))
1913
private void ResolveRequestFromCacheAndResumeIfPossible(
SchedulableRequest
request, List<ScheduleResponse> responses)
2008
SchedulableRequest
[] unscheduledRequests = RentPooledBuffer(
2010
foreach (
SchedulableRequest
request in new ReadOnlySpan<
SchedulableRequest
>(unscheduledRequests, 0, numRead))
2039
private IReadOnlyCollection<string> GetIsolationAllowedTopLevelTargets(
SchedulableRequest
parentRequest, BuildRequest request)
2129
foreach (
SchedulableRequest
blockedRequest in schedulingData.BlockedRequests)
2140
foreach (
SchedulableRequest
executingRequest in schedulingData.ExecutingRequests)
2252
private int ComputeClosureOfWaitingRequests(
SchedulableRequest
request)
2259
foreach (
SchedulableRequest
waitingRequest in request.RequestsWeAreBlocking)
2321
private bool RequestOrAnyItIsBlockedByCanBeServiced(
SchedulableRequest
request)
2325
foreach (
SchedulableRequest
requestWeAreBlockedBy in request.RequestsWeAreBlockedBy)
2370
foreach (
SchedulableRequest
existingRequest in _schedulingData.GetRequestsAssignedToConfiguration(request.ConfigurationId))
2404
private
SchedulableRequest
[] RentPooledBuffer(IEnumerable<
SchedulableRequest
> requests, int count, out int numRead)
2406
SchedulableRequest
[] buffer = _requestBufferPool.Rent(count);
2407
IEnumerator<
SchedulableRequest
> requestsToRead = requests.GetEnumerator();
2421
private void ReturnPooledBuffer(
SchedulableRequest
[] buffer, int numRead)
2643
private void WriteRecursiveSummary(ILoggingService loggingService, BuildEventContext context, int submissionId,
SchedulableRequest
request, int level, bool useConfigurations, bool isLastChild)
2680
List<
SchedulableRequest
> childRequests = new List<
SchedulableRequest
>(_schedulingData.GetRequestsByHierarchy(request));
2681
childRequests.Sort(delegate (
SchedulableRequest
left,
SchedulableRequest
right)
2697
SchedulableRequest
childRequest = childRequests[i];
2801
SchedulableRequest
executingRequest = _schedulingData.GetExecutingRequestByNode(nodeId);
2814
List<
SchedulableRequest
> scheduledRequestsByNode = new List<
SchedulableRequest
>(_schedulingData.GetScheduledRequestsByNode(nodeId));
2816
foreach (
SchedulableRequest
request in scheduledRequestsByNode)
2834
Queue<
SchedulableRequest
> blockingRequests = new Queue<
SchedulableRequest
>();
2835
HashSet<
SchedulableRequest
> topLevelBlockingRequests = new HashSet<
SchedulableRequest
>();
2836
foreach (
SchedulableRequest
request in scheduledRequestsByNode)
2840
foreach (
SchedulableRequest
blockingRequest in request.RequestsWeAreBlockedBy)
2849
SchedulableRequest
request = blockingRequests.Dequeue();
2853
foreach (
SchedulableRequest
blockingRequest in request.RequestsWeAreBlockedBy)
2864
foreach (
SchedulableRequest
request in topLevelBlockingRequests)
2881
foreach (
SchedulableRequest
request in _schedulingData.UnscheduledRequests)
2967
private void DumpRequestHierarchy(StreamWriter file,
SchedulableRequest
root, int indent)
2969
foreach (
SchedulableRequest
child in _schedulingData.GetRequestsByHierarchy(root))
2979
private void DumpRequestState(StreamWriter file,
SchedulableRequest
request, int indent)
2984
foreach (
SchedulableRequest
blockingRequest in request.RequestsWeAreBlockedBy)
2992
foreach (
SchedulableRequest
blockedRequest in request.RequestsWeAreBlocking)
3002
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 (79)
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);
69
private readonly ConcurrentDictionary<int,
SchedulableRequest
> _executingRequestByNode = new(concurrencyLevel: 1, capacity: 32);
74
private readonly Dictionary<int, HashSet<
SchedulableRequest
>> _readyRequestsByNode = new Dictionary<int, HashSet<
SchedulableRequest
>>(32);
92
private readonly Dictionary<int, HashSet<
SchedulableRequest
>> _configurationToRequests = new Dictionary<int, HashSet<
SchedulableRequest
>>(32);
110
private readonly Dictionary<
SchedulableRequest
, List<
SchedulableRequest
>> _buildHierarchy = new Dictionary<
SchedulableRequest
, List<
SchedulableRequest
>>(32);
142
public IEnumerable<
SchedulableRequest
> ExecutingRequests
158
public IEnumerable<
SchedulableRequest
> ReadyRequests
182
public IEnumerable<
SchedulableRequest
> BlockedRequests
198
public IEnumerable<
SchedulableRequest
> YieldingRequests
214
public IEnumerable<
SchedulableRequest
> UnscheduledRequests
260
public
SchedulableRequest
CreateRequest(BuildRequest buildRequest,
SchedulableRequest
parent)
262
SchedulableRequest
request = new SchedulableRequest(this, buildRequest, parent);
265
LinkedListNode<
SchedulableRequest
> requestNode = _unscheduledRequests.AddFirst(request);
269
HashSet<
SchedulableRequest
> requests;
272
requests = new HashSet<
SchedulableRequest
>();
281
_buildHierarchy[request] = new List<
SchedulableRequest
>(8);
296
public void UpdateFromState(
SchedulableRequest
request, SchedulableRequestState previousState)
324
LinkedListNode<
SchedulableRequest
> requestNode = _unscheduledRequestNodesByRequest[request];
331
HashSet<
SchedulableRequest
> requestsAssignedToNode;
334
requestsAssignedToNode = new HashSet<
SchedulableRequest
>();
400
HashSet<
SchedulableRequest
> readyRequestsOnNode;
403
readyRequestsOnNode = new HashSet<
SchedulableRequest
>();
422
public IEnumerable<
SchedulableRequest
> GetRequestsAssignedToConfiguration(int configurationId)
432
HashSet<
SchedulableRequest
> requests;
444
public
SchedulableRequest
GetExecutingRequest(int globalRequestId)
453
public
SchedulableRequest
GetBlockedRequest(int globalRequestId)
462
public
SchedulableRequest
GetBlockedRequestIfAny(int globalRequestId)
464
SchedulableRequest
request;
476
public
SchedulableRequest
GetYieldingRequest(int globalRequestId)
485
public
SchedulableRequest
GetReadyRequest(int globalRequestId)
494
public
SchedulableRequest
GetScheduledRequest(int globalRequestId)
496
SchedulableRequest
returnValue = InternalGetScheduledRequestByGlobalRequestId(globalRequestId);
539
public
SchedulableRequest
GetExecutingRequestByNode(int nodeId)
541
return _executingRequestByNode.TryGetValue(nodeId, out
SchedulableRequest
request) ? request : null;
547
public bool IsRequestScheduled(
SchedulableRequest
request)
557
HashSet<
SchedulableRequest
> requests;
569
public IEnumerable<
SchedulableRequest
> GetScheduledRequestsByNode(int nodeId)
571
HashSet<
SchedulableRequest
> requests;
574
return ReadOnlyEmptyCollection<
SchedulableRequest
>.Instance;
583
public IEnumerable<
SchedulableRequest
> GetReadyRequestsByNode(int nodeId)
585
HashSet<
SchedulableRequest
> requests;
588
return ReadOnlyEmptyCollection<
SchedulableRequest
>.Instance;
598
public IEnumerable<
SchedulableRequest
> GetRequestsByHierarchy(
SchedulableRequest
root)
603
List<
SchedulableRequest
> roots = new List<
SchedulableRequest
>();
604
foreach (
SchedulableRequest
key in _buildHierarchy.Keys)
636
public bool CanScheduleRequestToNode(
SchedulableRequest
request, int nodeId)
653
SchedulableRequest
request = GetScheduledRequest(globalRequestId);
666
SchedulableRequest
request = GetScheduledRequest(globalRequestId);
690
private
SchedulableRequest
InternalGetScheduledRequestByGlobalRequestId(int globalRequestId)
692
SchedulableRequest
returnValue;
721
SchedulableRequest
request = InternalGetScheduledRequestByGlobalRequestId(globalRequestId);
731
private LinkedList<
SchedulableRequest
>.Enumerator _enumerator;
742
public
SchedulableRequest
Current { get; private set; }
772
private
SchedulableRequest
_request;
787
public SchedulingEvent(DateTime eventTime,
SchedulableRequest
request, SchedulableRequestState oldState, SchedulableRequestState newState)
806
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))