1 instantiation of SchedulableRequest
Microsoft.Build (1)
BackEnd\Components\Scheduler\SchedulingData.cs (1)
256
SchedulableRequest request = new
SchedulableRequest
(this, buildRequest, parent);
215 references to SchedulableRequest
Microsoft.Build (215)
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 (86)
70
private ArrayPool<
SchedulableRequest
> _requestBufferPool = ArrayPool<
SchedulableRequest
>.Create();
341
SchedulableRequest
request = _schedulingData.GetExecutingRequestByNode(nodeId);
354
SchedulableRequest
parentRequest = null;
439
SchedulableRequest
request = _schedulingData.GetExecutingRequest(result.GlobalRequestId);
479
SchedulableRequest
[] unscheduledRequests = RentPooledBuffer(
481
foreach (
SchedulableRequest
unscheduledRequest in new ReadOnlySpan<
SchedulableRequest
>(unscheduledRequests, 0, numRead))
585
foreach (
SchedulableRequest
request in _schedulingData.GetScheduledRequestsByNode(nodeId))
602
_requestBufferPool = ArrayPool<
SchedulableRequest
>.Create();
620
foreach (
SchedulableRequest
request in _schedulingData.GetRequestsByHierarchy(null))
717
private void HandleYieldAction(
SchedulableRequest
parentRequest, BuildRequestBlocker blocker)
812
foreach (
SchedulableRequest
request in _schedulingData.BlockedRequests)
998
SchedulableRequest
bestRequest = null;
1001
foreach (
SchedulableRequest
request in _schedulingData.UnscheduledRequestsWhichCanBeScheduled)
1050
private void AssignUnscheduledRequestsToInProcNode(List<ScheduleResponse> responses, HashSet<int> idleNodes, Func<
SchedulableRequest
, bool> shouldBeScheduled)
1054
SchedulableRequest
[] unscheduledRequests = _requestBufferPool.Rent(_schedulingData.UnscheduledRequestsCount);
1064
foreach (
SchedulableRequest
request in new ReadOnlySpan<
SchedulableRequest
>(unscheduledRequests, 0, numRead))
1109
foreach (
SchedulableRequest
request in _schedulingData.UnscheduledRequestsWhichCanBeScheduled)
1133
SchedulableRequest
requestWithSmallestSourceFile = null;
1137
foreach (
SchedulableRequest
unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled)
1175
SchedulableRequest
requestWithLargestSourceFile = null;
1179
foreach (
SchedulableRequest
unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled)
1218
SchedulableRequest
requestToSchedule = null;
1219
SchedulableRequest
requestToScheduleNoAffinity = null;
1220
SchedulableRequest
requestToScheduleWithAffinity = null;
1221
foreach (
SchedulableRequest
currentSchedulableRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled)
1295
SchedulableRequest
mostWaitingRequests = null;
1296
foreach (
SchedulableRequest
unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled)
1329
foreach (
SchedulableRequest
unscheduledRequest in _schedulingData.UnscheduledRequestsWhichCanBeScheduled)
1393
foreach (
SchedulableRequest
request in _schedulingData.UnscheduledRequestsWhichCanBeScheduled)
1422
private void AssignUnscheduledRequestToNode(
SchedulableRequest
request, int nodeId, List<ScheduleResponse> responses)
1515
private bool CanScheduleRequestToNode(
SchedulableRequest
request, int nodeId)
1539
private bool CreateNewNodeIfPossible(List<ScheduleResponse> responses, IEnumerable<
SchedulableRequest
> requests)
1554
foreach (
SchedulableRequest
request in requests)
1680
private void MarkRequestAborted(
SchedulableRequest
request)
1685
foreach (
SchedulableRequest
blockedRequest in request.RequestsWeAreBlocking)
1694
private void HandleRequestBlockedOnInProgressTarget(
SchedulableRequest
blockedRequest, BuildRequestBlocker blocker)
1700
SchedulableRequest
blockingRequest = _schedulingData.GetScheduledRequest(blocker.BlockingRequestId);
1725
private void HandleRequestBlockedOnResultsTransfer(
SchedulableRequest
parentRequest, List<ScheduleResponse> responses)
1753
private void HandleRequestBlockedByNewRequests(
SchedulableRequest
parentRequest, BuildRequestBlocker blocker, List<ScheduleResponse> responses)
1821
foreach (
SchedulableRequest
existingRequest in _schedulingData.GetRequestsAssignedToConfiguration(request.ConfigurationId))
1880
SchedulableRequest
blockingRequest = _schedulingData.CreateRequest(requestToAdd, parentRequest);
1895
foreach (
SchedulableRequest
request in _schedulingData.GetReadyRequestsByNode(nodeId))
1912
private void ResolveRequestFromCacheAndResumeIfPossible(
SchedulableRequest
request, List<ScheduleResponse> responses)
2007
SchedulableRequest
[] unscheduledRequests = RentPooledBuffer(
2009
foreach (
SchedulableRequest
request in new ReadOnlySpan<
SchedulableRequest
>(unscheduledRequests, 0, numRead))
2100
foreach (
SchedulableRequest
blockedRequest in schedulingData.BlockedRequests)
2111
foreach (
SchedulableRequest
executingRequest in schedulingData.ExecutingRequests)
2220
private int ComputeClosureOfWaitingRequests(
SchedulableRequest
request)
2227
foreach (
SchedulableRequest
waitingRequest in request.RequestsWeAreBlocking)
2289
private bool RequestOrAnyItIsBlockedByCanBeServiced(
SchedulableRequest
request)
2293
foreach (
SchedulableRequest
requestWeAreBlockedBy in request.RequestsWeAreBlockedBy)
2338
foreach (
SchedulableRequest
existingRequest in _schedulingData.GetRequestsAssignedToConfiguration(request.ConfigurationId))
2372
private
SchedulableRequest
[] RentPooledBuffer(IEnumerable<
SchedulableRequest
> requests, int count, out int numRead)
2374
SchedulableRequest
[] buffer = _requestBufferPool.Rent(count);
2375
IEnumerator<
SchedulableRequest
> requestsToRead = requests.GetEnumerator();
2389
private void ReturnPooledBuffer(
SchedulableRequest
[] buffer, int numRead)
2611
private void WriteRecursiveSummary(ILoggingService loggingService, BuildEventContext context, int submissionId,
SchedulableRequest
request, int level, bool useConfigurations, bool isLastChild)
2648
List<
SchedulableRequest
> childRequests = new List<
SchedulableRequest
>(_schedulingData.GetRequestsByHierarchy(request));
2649
childRequests.Sort(delegate (
SchedulableRequest
left,
SchedulableRequest
right)
2665
SchedulableRequest
childRequest = childRequests[i];
2782
List<
SchedulableRequest
> scheduledRequestsByNode = new List<
SchedulableRequest
>(_schedulingData.GetScheduledRequestsByNode(nodeId));
2784
foreach (
SchedulableRequest
request in scheduledRequestsByNode)
2802
Queue<
SchedulableRequest
> blockingRequests = new Queue<
SchedulableRequest
>();
2803
HashSet<
SchedulableRequest
> topLevelBlockingRequests = new HashSet<
SchedulableRequest
>();
2804
foreach (
SchedulableRequest
request in scheduledRequestsByNode)
2808
foreach (
SchedulableRequest
blockingRequest in request.RequestsWeAreBlockedBy)
2817
SchedulableRequest
request = blockingRequests.Dequeue();
2821
foreach (
SchedulableRequest
blockingRequest in request.RequestsWeAreBlockedBy)
2832
foreach (
SchedulableRequest
request in topLevelBlockingRequests)
2849
foreach (
SchedulableRequest
request in _schedulingData.UnscheduledRequests)
2935
private void DumpRequestHierarchy(StreamWriter file,
SchedulableRequest
root, int indent)
2937
foreach (
SchedulableRequest
child in _schedulingData.GetRequestsByHierarchy(root))
2947
private void DumpRequestState(StreamWriter file,
SchedulableRequest
request, int indent)
2952
foreach (
SchedulableRequest
blockingRequest in request.RequestsWeAreBlockedBy)
2960
foreach (
SchedulableRequest
blockedRequest in request.RequestsWeAreBlocking)
2970
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)
23
private readonly Dictionary<int,
SchedulableRequest
> _executingRequests = new Dictionary<int,
SchedulableRequest
>(32);
28
private readonly Dictionary<int,
SchedulableRequest
> _blockedRequests = new Dictionary<int,
SchedulableRequest
>(32);
33
private readonly Dictionary<int,
SchedulableRequest
> _yieldingRequests = new Dictionary<int,
SchedulableRequest
>(32);
38
private readonly Dictionary<int,
SchedulableRequest
> _readyRequests = new Dictionary<int,
SchedulableRequest
>(32);
43
private readonly LinkedList<
SchedulableRequest
> _unscheduledRequests = new LinkedList<
SchedulableRequest
>();
49
private readonly Dictionary<
SchedulableRequest
, LinkedListNode<
SchedulableRequest
>> _unscheduledRequestNodesByRequest = new Dictionary<
SchedulableRequest
, LinkedListNode<
SchedulableRequest
>>(32);
58
private readonly Dictionary<int, HashSet<
SchedulableRequest
>> _scheduledRequestsByNode = new Dictionary<int, HashSet<
SchedulableRequest
>>(32);
63
private readonly Dictionary<int,
SchedulableRequest
> _executingRequestByNode = new Dictionary<int,
SchedulableRequest
>(32);
68
private readonly Dictionary<int, HashSet<
SchedulableRequest
>> _readyRequestsByNode = new Dictionary<int, HashSet<
SchedulableRequest
>>(32);
86
private readonly Dictionary<int, HashSet<
SchedulableRequest
>> _configurationToRequests = new Dictionary<int, HashSet<
SchedulableRequest
>>(32);
104
private readonly Dictionary<
SchedulableRequest
, List<
SchedulableRequest
>> _buildHierarchy = new Dictionary<
SchedulableRequest
, List<
SchedulableRequest
>>(32);
136
public IEnumerable<
SchedulableRequest
> ExecutingRequests
152
public IEnumerable<
SchedulableRequest
> ReadyRequests
176
public IEnumerable<
SchedulableRequest
> BlockedRequests
192
public IEnumerable<
SchedulableRequest
> YieldingRequests
208
public IEnumerable<
SchedulableRequest
> UnscheduledRequests
254
public
SchedulableRequest
CreateRequest(BuildRequest buildRequest,
SchedulableRequest
parent)
256
SchedulableRequest
request = new SchedulableRequest(this, buildRequest, parent);
259
LinkedListNode<
SchedulableRequest
> requestNode = _unscheduledRequests.AddFirst(request);
263
HashSet<
SchedulableRequest
> requests;
266
requests = new HashSet<
SchedulableRequest
>();
275
_buildHierarchy[request] = new List<
SchedulableRequest
>(8);
290
public void UpdateFromState(
SchedulableRequest
request, SchedulableRequestState previousState)
318
LinkedListNode<
SchedulableRequest
> requestNode = _unscheduledRequestNodesByRequest[request];
325
HashSet<
SchedulableRequest
> requestsAssignedToNode;
328
requestsAssignedToNode = new HashSet<
SchedulableRequest
>();
394
HashSet<
SchedulableRequest
> readyRequestsOnNode;
397
readyRequestsOnNode = new HashSet<
SchedulableRequest
>();
416
public IEnumerable<
SchedulableRequest
> GetRequestsAssignedToConfiguration(int configurationId)
426
HashSet<
SchedulableRequest
> requests;
438
public
SchedulableRequest
GetExecutingRequest(int globalRequestId)
447
public
SchedulableRequest
GetBlockedRequest(int globalRequestId)
456
public
SchedulableRequest
GetBlockedRequestIfAny(int globalRequestId)
458
SchedulableRequest
request;
470
public
SchedulableRequest
GetYieldingRequest(int globalRequestId)
479
public
SchedulableRequest
GetReadyRequest(int globalRequestId)
488
public
SchedulableRequest
GetScheduledRequest(int globalRequestId)
490
SchedulableRequest
returnValue = InternalGetScheduledRequestByGlobalRequestId(globalRequestId);
500
SchedulableRequest
request;
539
public
SchedulableRequest
GetExecutingRequestByNode(int nodeId)
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))