Ignore exception during auth migration. (#3835)

This commit is contained in:
Tingluo Huang
2025-05-05 14:23:24 -04:00
committed by GitHub
parent d7cfd2e341
commit 26eff8e55a
2 changed files with 16 additions and 9 deletions

View File

@@ -141,7 +141,9 @@ namespace GitHub.Runner.Listener
Trace.Error("Catch exception during create session."); Trace.Error("Catch exception during create session.");
Trace.Error(ex); Trace.Error(ex);
if (ex is VssOAuthTokenRequestException vssOAuthEx && _credsV2.Federated is VssOAuthCredential vssOAuthCred) if (!HostContext.AllowAuthMigration &&
ex is VssOAuthTokenRequestException vssOAuthEx &&
_credsV2.Federated is VssOAuthCredential vssOAuthCred)
{ {
// "invalid_client" means the runner registration has been deleted from the server. // "invalid_client" means the runner registration has been deleted from the server.
if (string.Equals(vssOAuthEx.Error, "invalid_client", StringComparison.OrdinalIgnoreCase)) if (string.Equals(vssOAuthEx.Error, "invalid_client", StringComparison.OrdinalIgnoreCase))
@@ -162,7 +164,8 @@ namespace GitHub.Runner.Listener
} }
} }
if (!IsSessionCreationExceptionRetriable(ex)) if (!HostContext.AllowAuthMigration &&
!IsSessionCreationExceptionRetriable(ex))
{ {
_term.WriteError($"Failed to create session. {ex.Message}"); _term.WriteError($"Failed to create session. {ex.Message}");
if (ex is TaskAgentSessionConflictException) if (ex is TaskAgentSessionConflictException)
@@ -283,11 +286,11 @@ namespace GitHub.Runner.Listener
Trace.Info("Hosted runner has been deprovisioned."); Trace.Info("Hosted runner has been deprovisioned.");
throw; throw;
} }
catch (AccessDeniedException e) when (e.ErrorCode == 1) catch (AccessDeniedException e) when (e.ErrorCode == 1 && !HostContext.AllowAuthMigration)
{ {
throw; throw;
} }
catch (RunnerNotFoundException) catch (RunnerNotFoundException) when (!HostContext.AllowAuthMigration)
{ {
throw; throw;
} }
@@ -296,7 +299,8 @@ namespace GitHub.Runner.Listener
Trace.Error("Catch exception during get next message."); Trace.Error("Catch exception during get next message.");
Trace.Error(ex); Trace.Error(ex);
if (!IsGetNextMessageExceptionRetriable(ex)) if (!HostContext.AllowAuthMigration &&
!IsGetNextMessageExceptionRetriable(ex))
{ {
throw new NonRetryableException("Get next message failed with non-retryable error.", ex); throw new NonRetryableException("Get next message failed with non-retryable error.", ex);
} }

View File

@@ -315,11 +315,11 @@ namespace GitHub.Runner.Listener
Trace.Info("Hosted runner has been deprovisioned."); Trace.Info("Hosted runner has been deprovisioned.");
throw; throw;
} }
catch (AccessDeniedException e) when (e.ErrorCode == 1) catch (AccessDeniedException e) when (e.ErrorCode == 1 && !HostContext.AllowAuthMigration)
{ {
throw; throw;
} }
catch (RunnerNotFoundException) catch (RunnerNotFoundException) when (!HostContext.AllowAuthMigration)
{ {
throw; throw;
} }
@@ -333,11 +333,14 @@ namespace GitHub.Runner.Listener
message = null; message = null;
// don't retry if SkipSessionRecover = true, DT service will delete agent session to stop agent from taking more jobs. // don't retry if SkipSessionRecover = true, DT service will delete agent session to stop agent from taking more jobs.
if (ex is TaskAgentSessionExpiredException && !_settings.SkipSessionRecover && (await CreateSessionAsync(token) == CreateSessionResult.Success)) if (!HostContext.AllowAuthMigration &&
ex is TaskAgentSessionExpiredException &&
!_settings.SkipSessionRecover && (await CreateSessionAsync(token) == CreateSessionResult.Success))
{ {
Trace.Info($"{nameof(TaskAgentSessionExpiredException)} received, recovered by recreate session."); Trace.Info($"{nameof(TaskAgentSessionExpiredException)} received, recovered by recreate session.");
} }
else if (!IsGetNextMessageExceptionRetriable(ex)) else if (!HostContext.AllowAuthMigration &&
!IsGetNextMessageExceptionRetriable(ex))
{ {
throw; throw;
} }