Skip to content

Commit 2c03d74

Browse files
authored
Handle runner not found (#3536)
1 parent 3d34a3c commit 2c03d74

File tree

7 files changed

+50
-2
lines changed

7 files changed

+50
-2
lines changed

src/Runner.Common/BrokerServer.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using GitHub.DistributedTask.WebApi;
88
using GitHub.Runner.Sdk;
99
using GitHub.Services.Common;
10+
using GitHub.Services.WebApi;
1011
using Sdk.RSWebApi.Contracts;
1112
using Sdk.WebApi.WebApi.RawClient;
1213

@@ -92,7 +93,7 @@ public Task ForceRefreshConnection(VssCredentials credentials)
9293

9394
public bool ShouldRetryException(Exception ex)
9495
{
95-
if (ex is AccessDeniedException ade)
96+
if (ex is AccessDeniedException || ex is RunnerNotFoundException)
9697
{
9798
return false;
9899
}

src/Runner.Listener/BrokerMessageListener.cs

+7-1
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@
1111
using GitHub.Runner.Common;
1212
using GitHub.Runner.Listener.Configuration;
1313
using GitHub.Runner.Sdk;
14-
using GitHub.Services.Common;
1514
using GitHub.Runner.Common.Util;
15+
using GitHub.Services.Common;
1616
using GitHub.Services.OAuth;
17+
using GitHub.Services.WebApi;
1718

1819
namespace GitHub.Runner.Listener
1920
{
@@ -241,6 +242,10 @@ public async Task<TaskAgentMessage> GetNextMessageAsync(CancellationToken token)
241242
{
242243
throw;
243244
}
245+
catch (RunnerNotFoundException)
246+
{
247+
throw;
248+
}
244249
catch (Exception ex)
245250
{
246251
Trace.Error("Catch exception during get next message.");
@@ -324,6 +329,7 @@ private bool IsGetNextMessageExceptionRetriable(Exception ex)
324329
ex is TaskAgentPoolNotFoundException ||
325330
ex is TaskAgentSessionExpiredException ||
326331
ex is AccessDeniedException ||
332+
ex is RunnerNotFoundException ||
327333
ex is VssUnauthorizedException)
328334
{
329335
Trace.Info($"Non-retriable exception: {ex.Message}");

src/Runner.Listener/MessageListener.cs

+5
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,10 @@ public async Task<TaskAgentMessage> GetNextMessageAsync(CancellationToken token)
308308
{
309309
throw;
310310
}
311+
catch (RunnerNotFoundException)
312+
{
313+
throw;
314+
}
311315
catch (Exception ex)
312316
{
313317
Trace.Error("Catch exception during get next message.");
@@ -457,6 +461,7 @@ private bool IsGetNextMessageExceptionRetriable(Exception ex)
457461
ex is TaskAgentPoolNotFoundException ||
458462
ex is TaskAgentSessionExpiredException ||
459463
ex is AccessDeniedException ||
464+
ex is RunnerNotFoundException ||
460465
ex is VssUnauthorizedException)
461466
{
462467
Trace.Info($"Non-retriable exception: {ex.Message}");

src/Runner.Listener/Program.cs

+7
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using System.Runtime.InteropServices;
88
using System.Threading.Tasks;
99
using GitHub.DistributedTask.WebApi;
10+
using GitHub.Services.WebApi;
1011

1112
namespace GitHub.Runner.Listener
1213
{
@@ -144,6 +145,12 @@ private async static Task<int> MainAsync(IHostContext context, string[] args)
144145
trace.Error(e);
145146
return Constants.Runner.ReturnCode.TerminatedError;
146147
}
148+
catch (RunnerNotFoundException e)
149+
{
150+
terminal.WriteError($"An error occurred: {e.Message}");
151+
trace.Error(e);
152+
return Constants.Runner.ReturnCode.TerminatedError;
153+
}
147154
catch (Exception e)
148155
{
149156
terminal.WriteError($"An error occurred: {e.Message}");

src/Sdk/RSWebApi/Contracts/BrokerErrorKind.cs

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ namespace GitHub.Actions.RunService.WebApi
55
[DataContract]
66
public class BrokerErrorKind
77
{
8+
public const string RunnerNotFound = "RunnerNotFound";
89
public const string RunnerVersionTooOld = "RunnerVersionTooOld";
910
}
1011
}

src/Sdk/WebApi/WebApi/BrokerHttpClient.cs

+2
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@ public async Task<TaskAgentMessage> GetRunnerMessageAsync(
115115
{
116116
switch (brokerError.ErrorKind)
117117
{
118+
case BrokerErrorKind.RunnerNotFound:
119+
throw new RunnerNotFoundException(brokerError.Message);
118120
case BrokerErrorKind.RunnerVersionTooOld:
119121
throw new AccessDeniedException(brokerError.Message)
120122
{
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using System;
2+
using System.Diagnostics.CodeAnalysis;
3+
using GitHub.Services.Common;
4+
using GitHub.Services.WebApi;
5+
6+
namespace GitHub.Services.WebApi
7+
{
8+
[Serializable]
9+
public sealed class RunnerNotFoundException : Exception
10+
{
11+
public RunnerNotFoundException()
12+
: base()
13+
{
14+
}
15+
16+
public RunnerNotFoundException(String message)
17+
: base(message)
18+
{
19+
}
20+
21+
public RunnerNotFoundException(String message, Exception innerException)
22+
: base(message, innerException)
23+
{
24+
}
25+
}
26+
}

0 commit comments

Comments
 (0)