WIP WIP WIP

This commit is contained in:
Patrick Ellis
2023-05-18 12:18:24 -07:00
committed by GitHub
parent 49b04976f4
commit 3b149bd8db
3 changed files with 45 additions and 3 deletions

View File

@@ -168,9 +168,10 @@ namespace GitHub.Runner.Listener
}
}
public async Task DeleteMessageAsync(TaskAgentMessage message)
public async Task DeleteMessageAsync(string messageID, CancellationToken token)
{
await Task.CompletedTask;
Trace.Entering();
await _brokerServer.DeleteRunnerMessageAsync(messageID, token);
}
private bool IsGetNextMessageExceptionRetriable(Exception ex)

View File

@@ -392,6 +392,9 @@ namespace GitHub.Runner.Listener
{
TaskAgentMessage message = null;
bool skipMessageDeletion = false;
bool useBrokerDeletion = false;
string brokerDeletionParamsMessageID = null;
CancellationToken brokerDeletionParamsToken = null;
try
{
Task<TaskAgentMessage> getNextMessage = _listener.GetNextMessageAsync(messageQueueLoopTokenSource.Token);
@@ -554,6 +557,9 @@ namespace GitHub.Runner.Listener
jobRequestMessage =
await runServer.GetJobMessageAsync(messageRef.RunnerRequestId,
messageQueueLoopTokenSource.Token);
useBrokerDeletion = true;
brokerDeletionParamsMessageID = messageRef.RunnerRequestId;
brokerDeletionParamsToken = messageQueueLoopTokenSource.Token;
}
catch (TaskOrchestrationJobAlreadyAcquiredException)
{
@@ -600,7 +606,14 @@ namespace GitHub.Runner.Listener
{
try
{
await _listener.DeleteMessageAsync(message);
if (useBrokerDeletion)
{
await _listener.DeleteMessageAsync(brokerDeletionParamsMessageID, brokerDeletionParamsToken);
}
else
{
await _listener.DeleteMessageAsync(message);
}
}
catch (Exception ex)
{

View File

@@ -88,5 +88,33 @@ namespace GitHub.Actions.RunService.WebApi
throw new Exception($"Failed to get job message: {result.Error}");
}
public async Task<TaskAgentMessage> DeleteRunnerMessageAsync(
string messageID,
CancellationToken cancellationToken = default
)
{
var requestUri = new Uri(Client.BaseAddress, "message");
List<KeyValuePair<string, string>> queryParams = new List<KeyValuePair<string, string>>();
if (messageID != null)
{
queryParams.Add("messageID", messageID);
}
var result = await SendAsync<TaskAgentMessage>(
new HttpMethod("DELETE"),
requestUri: requestUri,
queryParameters: queryParams,
cancellationToken: cancellationToken);
if (result.IsSuccess)
{
return result.Value;
}
throw new Exception($"Failed to delete job message: {result.Error}");
}
}
}