From 034c51cd0bc2b1aedc47fa8ef74c2187f5eac5d1 Mon Sep 17 00:00:00 2001 From: Luke Tomlinson Date: Mon, 26 Feb 2024 10:05:41 -0500 Subject: [PATCH] Refresh Token for BrokerServer (#3167) --- src/Runner.Common/BrokerServer.cs | 7 +++++++ src/Runner.Listener/MessageListener.cs | 1 + src/Runner.Listener/Runner.cs | 1 + 3 files changed, 9 insertions(+) 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