Exit hosted runner cleanly during deprovisioning. (#3755)

This commit is contained in:
Tingluo Huang
2025-03-18 10:33:40 -04:00
committed by GitHub
parent 6b08f23b6c
commit a0ba8fd399
7 changed files with 41 additions and 1 deletions

View File

@@ -93,7 +93,7 @@ namespace GitHub.Runner.Common
public bool ShouldRetryException(Exception ex) public bool ShouldRetryException(Exception ex)
{ {
if (ex is AccessDeniedException || ex is RunnerNotFoundException) if (ex is AccessDeniedException || ex is RunnerNotFoundException || ex is HostedRunnerDeprovisionedException)
{ {
return false; return false;
} }

View File

@@ -249,6 +249,11 @@ namespace GitHub.Runner.Listener
Trace.Info("Runner OAuth token has been revoked. Unable to pull message."); Trace.Info("Runner OAuth token has been revoked. Unable to pull message.");
throw; throw;
} }
catch (HostedRunnerDeprovisionedException)
{
Trace.Info("Hosted runner has been deprovisioned.");
throw;
}
catch (AccessDeniedException e) when (e.ErrorCode == 1) catch (AccessDeniedException e) when (e.ErrorCode == 1)
{ {
throw; throw;

View File

@@ -304,6 +304,11 @@ namespace GitHub.Runner.Listener
_accessTokenRevoked = true; _accessTokenRevoked = true;
throw; throw;
} }
catch (HostedRunnerDeprovisionedException)
{
Trace.Info("Hosted runner has been deprovisioned.");
throw;
}
catch (AccessDeniedException e) when (e.ErrorCode == 1) catch (AccessDeniedException e) when (e.ErrorCode == 1)
{ {
throw; throw;

View File

@@ -697,6 +697,10 @@ namespace GitHub.Runner.Listener
{ {
Trace.Info("Runner OAuth token has been revoked. Shutting down."); Trace.Info("Runner OAuth token has been revoked. Shutting down.");
} }
catch (HostedRunnerDeprovisionedException)
{
Trace.Info("Hosted runner has been deprovisioned. Shutting down.");
}
return Constants.Runner.ReturnCode.Success; return Constants.Runner.ReturnCode.Success;
} }

View File

@@ -7,5 +7,6 @@ namespace GitHub.Actions.RunService.WebApi
{ {
public const string RunnerNotFound = "RunnerNotFound"; public const string RunnerNotFound = "RunnerNotFound";
public const string RunnerVersionTooOld = "RunnerVersionTooOld"; public const string RunnerVersionTooOld = "RunnerVersionTooOld";
public const string HostedRunnerDeprovisioned = "HostedRunnerDeprovisioned";
} }
} }

View File

@@ -122,6 +122,8 @@ namespace GitHub.Actions.RunService.WebApi
{ {
ErrorCode = 1 ErrorCode = 1
}; };
case BrokerErrorKind.HostedRunnerDeprovisioned:
throw new HostedRunnerDeprovisionedException(brokerError.Message);
default: default:
break; break;
} }

View File

@@ -0,0 +1,23 @@
using System;
namespace GitHub.Services.WebApi
{
[Serializable]
public sealed class HostedRunnerDeprovisionedException : Exception
{
public HostedRunnerDeprovisionedException()
: base()
{
}
public HostedRunnerDeprovisionedException(String message)
: base(message)
{
}
public HostedRunnerDeprovisionedException(String message, Exception innerException)
: base(message, innerException)
{
}
}
}