/// <inheritdoc/> public override Task <RpcResponse> Exit(BuildEndData message, ServerCallContext context) { var failure = string.IsNullOrEmpty(message.Failure) ? Optional <string> .Empty : message.Failure; m_workerService.ExitRequested(failure); return(Task.FromResult(new RpcResponse())); }
/// <inheritdoc/> public override Task <RpcResponse> Exit(BuildEndData message, ServerCallContext context) { m_workerService.BeforeExit(); m_workerService.Exit(timedOut: false, failure: message.Failure); return(Task.FromResult(new RpcResponse())); }
/// <inheritdoc/> public override Task <RpcResponse> Exit(BuildEndData message, ServerCallContext context) { m_workerService.ExitCallReceivedFromMaster(); m_workerService.Exit(failure: message.Failure); return(Task.FromResult(new RpcResponse())); }
public void Exit(BuildEndData message) { WorkerService.ExitCallReceivedFromOrchestrator(); var failure = string.IsNullOrEmpty(message.Failure) ? Optional <string> .Empty : message.Failure; WorkerService.Exit(failure); }
/// <inheritdoc /> public override async Task FinishAsync(string buildFailure) { m_buildRequests.CompleteAdding(); if (m_sendThread.IsAlive) { m_sendThread.Join(); } bool initiatedStop = false; while (true) { WorkerNodeStatus status = Status; if (status == WorkerNodeStatus.Stopping || status == WorkerNodeStatus.Stopped) { break; } if (ChangeStatus(status, WorkerNodeStatus.Stopping)) { initiatedStop = true; break; } } if (initiatedStop) { CancellationTokenSource exitCancellation = new CancellationTokenSource(); // Only wait a short amount of time for exit (15 seconds) if worker is not successfully attached. if (m_attachCompletion.Task.Status != TaskStatus.RanToCompletion || !await m_attachCompletion.Task) { exitCancellation.CancelAfter(TimeSpan.FromSeconds(15)); } var buildEndData = new BuildEndData() { Failure = buildFailure ?? m_exitFailure }; await m_workerClient.ExitAsync(buildEndData, exitCancellation.Token); m_executionBlobQueue.CompleteAdding(); using (m_masterService.Environment.Counters.StartStopwatch(PipExecutorCounter.RemoteWorker_AwaitExecutionBlobCompletionDuration)) { if (!m_executionBlobQueue.IsCompleted) { // Wait for execution blobs to be processed. await m_executionBlobCompletion.Task; } } ChangeStatus(WorkerNodeStatus.Stopping, WorkerNodeStatus.Stopped); } }
public Task <RpcCallResult <Unit> > ExitAsync(OpenBond.BuildEndData message, CancellationToken cancellationToken) { var grpcBuildEndData = new BuildEndData(); if (message.Failure != null) { grpcBuildEndData.Failure = message.Failure; } return(m_connectionManager.CallAsync( (callOptions) => m_client.ExitAsync(grpcBuildEndData, options: callOptions), "Exit", cancellationToken)); }
public async Task <RpcCallResult <Unit> > ExitAsync(OpenBond.BuildEndData message, CancellationToken cancellationToken = default(CancellationToken)) { var buildEndData = new BuildEndData() { Failure = message.Failure, }; var result = await m_proxyManager.Call <BuildEndData, Void>( buildEndData, functionName : "Exit", cancellationToken : cancellationToken); return(result.ToUnit()); }
public override async void Finish(string buildFailure) { m_buildRequests.CompleteAdding(); if (m_sendThread.IsAlive) { m_sendThread.Join(); } bool initiatedStop = false; while (true) { WorkerNodeStatus status = Status; if (status == WorkerNodeStatus.Stopping || status == WorkerNodeStatus.Stopped) { break; } if (ChangeStatus(status, WorkerNodeStatus.Stopping)) { initiatedStop = true; break; } } if (initiatedStop) { CancellationTokenSource exitCancellation = new CancellationTokenSource(); // Only wait a short amount of time for exit (15 seconds) if worker is not successfully attached. if (m_attachCompletion.Task.Status != TaskStatus.RanToCompletion || !await m_attachCompletion.Task) { exitCancellation.CancelAfter(TimeSpan.FromSeconds(15)); } var buildEndData = new BuildEndData() { Failure = buildFailure ?? m_exitFailure }; await m_workerClient.ExitAsync(buildEndData, exitCancellation.Token); ChangeStatus(WorkerNodeStatus.Stopping, WorkerNodeStatus.Stopped); } }
public void Exit(BuildEndData message) { var failure = string.IsNullOrEmpty(message.Failure) ? Optional<string>.Empty : message.Failure; WorkerService.ExitRequested(failure); }