Handle ForceTokenRefresh message (#3133)

* Handle ForceTokenRefresh message

* move to constants

* format
This commit is contained in:
Luke Tomlinson
2024-02-07 11:24:40 -05:00
committed by GitHub
parent bcc665a7a1
commit 651ea42e00
4 changed files with 28 additions and 2 deletions

View File

@@ -273,7 +273,7 @@ namespace GitHub.Runner.Listener
}
// re-create VssConnection before next retry
await RefreshBrokerConnection();
await RefreshBrokerConnectionAsync();
Trace.Info("Sleeping for {0} seconds before retrying.", _getNextMessageRetryInterval.TotalSeconds);
await HostContext.Delay(_getNextMessageRetryInterval, token);
@@ -303,6 +303,11 @@ namespace GitHub.Runner.Listener
}
}
public async Task RefreshListenerTokenAsync(CancellationToken cancellationToken)
{
await RefreshBrokerConnectionAsync();
}
public async Task DeleteMessageAsync(TaskAgentMessage message)
{
await Task.CompletedTask;
@@ -398,7 +403,7 @@ namespace GitHub.Runner.Listener
}
}
private async Task RefreshBrokerConnection()
private async Task RefreshBrokerConnectionAsync()
{
var configManager = HostContext.GetService<IConfigurationManager>();
_settings = configManager.LoadSettings();

View File

@@ -25,6 +25,8 @@ namespace GitHub.Runner.Listener
Task DeleteSessionAsync();
Task<TaskAgentMessage> GetNextMessageAsync(CancellationToken token);
Task DeleteMessageAsync(TaskAgentMessage message);
Task RefreshListenerTokenAsync(CancellationToken token);
void OnJobStatus(object sender, JobStatusEventArgs e);
}
@@ -379,6 +381,11 @@ namespace GitHub.Runner.Listener
}
}
public async Task RefreshListenerTokenAsync(CancellationToken cancellationToken)
{
await _runnerServer.RefreshConnectionAsync(RunnerConnectionType.MessageQueue, TimeSpan.FromSeconds(60));
}
private TaskAgentMessage DecryptMessage(TaskAgentMessage message)
{
if (_session.EncryptionKey == null ||

View File

@@ -596,6 +596,10 @@ namespace GitHub.Runner.Listener
Trace.Info($"Service requests the hosted runner to shutdown. Reason: '{HostedRunnerShutdownMessage.Reason}'.");
return Constants.Runner.ReturnCode.Success;
}
else if (string.Equals(message.MessageType, TaskAgentMessageTypes.ForceTokenRefresh))
{
await _listener.RefreshListenerTokenAsync(messageQueueLoopTokenSource.Token);
}
else
{
Trace.Error($"Received message {message.MessageId} with unsupported message type {message.MessageType}.");

View File

@@ -0,0 +1,10 @@
using System;
using System.Runtime.Serialization;
namespace GitHub.DistributedTask.WebApi
{
public sealed class TaskAgentMessageTypes
{
public static readonly string ForceTokenRefresh = "ForceTokenRefresh";
}
}