Broker fixes for token refreshes and AccessDeniedException (#3161)

This commit is contained in:
Luke Tomlinson
2024-02-21 16:43:01 -05:00
committed by GitHub
parent 6603bfb74c
commit 3449d5fa52
3 changed files with 32 additions and 4 deletions

View File

@@ -21,6 +21,8 @@ namespace GitHub.Runner.Common
Task DeleteSessionAsync(CancellationToken cancellationToken);
Task<TaskAgentMessage> GetRunnerMessageAsync(Guid? sessionId, TaskAgentStatus status, string version, string os, string architecture, bool disableUpdate, CancellationToken token);
Task UpdateConnectionIfNeeded(Uri serverUri, VssCredentials credentials);
}
public sealed class BrokerServer : RunnerService, IBrokerServer
@@ -59,7 +61,7 @@ namespace GitHub.Runner.Common
{
CheckConnection();
var brokerSession = RetryRequest<TaskAgentMessage>(
async () => await _brokerHttpClient.GetRunnerMessageAsync(sessionId, version, status, os, architecture, disableUpdate, cancellationToken), cancellationToken);
async () => await _brokerHttpClient.GetRunnerMessageAsync(sessionId, version, status, os, architecture, disableUpdate, cancellationToken), cancellationToken, shouldRetry: ShouldRetryException);
return brokerSession;
}
@@ -69,5 +71,25 @@ namespace GitHub.Runner.Common
CheckConnection();
await _brokerHttpClient.DeleteSessionAsync(cancellationToken);
}
public Task UpdateConnectionIfNeeded(Uri serverUri, VssCredentials credentials)
{
if (_brokerUri != serverUri || !_hasConnection)
{
return ConnectAsync(serverUri, credentials);
}
return Task.CompletedTask;
}
public bool ShouldRetryException(Exception ex)
{
if (ex is AccessDeniedException ade && ade.ErrorCode == 1)
{
return false;
}
return true;
}
}
}