diff --git a/src/Runner.Common/BrokerServer.cs b/src/Runner.Common/BrokerServer.cs index 2b171d766..5e1311715 100644 --- a/src/Runner.Common/BrokerServer.cs +++ b/src/Runner.Common/BrokerServer.cs @@ -23,6 +23,8 @@ namespace GitHub.Runner.Common Task GetRunnerMessageAsync(Guid? sessionId, TaskAgentStatus status, string version, string os, string architecture, bool disableUpdate, CancellationToken token); Task UpdateConnectionIfNeeded(Uri serverUri, VssCredentials credentials); + + Task ForceRefreshConnection(VssCredentials credentials); } public sealed class BrokerServer : RunnerService, IBrokerServer @@ -83,6 +85,11 @@ namespace GitHub.Runner.Common return Task.CompletedTask; } + public Task ForceRefreshConnection(VssCredentials credentials) + { + return ConnectAsync(_brokerUri, credentials); + } + public bool ShouldRetryException(Exception ex) { if (ex is AccessDeniedException ade && ade.ErrorCode == 1) diff --git a/src/Runner.Listener/MessageListener.cs b/src/Runner.Listener/MessageListener.cs index 6adc0436b..7be8b0bce 100644 --- a/src/Runner.Listener/MessageListener.cs +++ b/src/Runner.Listener/MessageListener.cs @@ -383,6 +383,7 @@ namespace GitHub.Runner.Listener public async Task RefreshListenerTokenAsync(CancellationToken cancellationToken) { await _runnerServer.RefreshConnectionAsync(RunnerConnectionType.MessageQueue, TimeSpan.FromSeconds(60)); + await _brokerServer.ForceRefreshConnection(_creds); } private TaskAgentMessage DecryptMessage(TaskAgentMessage message) diff --git a/src/Runner.Listener/Runner.cs b/src/Runner.Listener/Runner.cs index 59f2f71e2..f44db4cb5 100644 --- a/src/Runner.Listener/Runner.cs +++ b/src/Runner.Listener/Runner.cs @@ -598,6 +598,7 @@ namespace GitHub.Runner.Listener } else if (string.Equals(message.MessageType, TaskAgentMessageTypes.ForceTokenRefresh)) { + Trace.Info("Received ForceTokenRefreshMessage"); await _listener.RefreshListenerTokenAsync(messageQueueLoopTokenSource.Token); } else