print retrieved message

This commit is contained in:
eric sciple
2022-04-09 00:31:59 +00:00
committed by GitHub
parent 6ec30ea522
commit 25f6cc100f
2 changed files with 44 additions and 26 deletions

View File

@@ -6,6 +6,7 @@ using GitHub.Runner.Common.Util;
using GitHub.Services.WebApi; using GitHub.Services.WebApi;
using GitHub.Services.Common; using GitHub.Services.Common;
using GitHub.Runner.Sdk; using GitHub.Runner.Sdk;
using System.Net;
using System.Net.Http; using System.Net.Http;
namespace GitHub.Runner.Common namespace GitHub.Runner.Common
@@ -14,7 +15,7 @@ namespace GitHub.Runner.Common
public interface IBrokerServer : IRunnerService public interface IBrokerServer : IRunnerService
{ {
Task ConnectAsync(Uri serverUrl, CancellationToken cancellationToken); Task ConnectAsync(Uri serverUrl, CancellationToken cancellationToken);
Task<GitHub.DistributedTask.WebApi.TaskAgentMessage> GetMessageAsync(Int32 poolId, Guid sessionId, Int64? lastMessageId, CancellationToken cancellationToken); Task<string> GetMessageAsync(int poolId, Guid sessionId, long? lastMessageId, CancellationToken cancellationToken);
} }
public sealed class BrokerServer : RunnerService, IBrokerServer public sealed class BrokerServer : RunnerService, IBrokerServer
@@ -29,10 +30,29 @@ namespace GitHub.Runner.Common
await _httpClient.GetAsync("health", cancellationToken); await _httpClient.GetAsync("health", cancellationToken);
} }
public async Task<GitHub.DistributedTask.WebApi.TaskAgentMessage> GetMessageAsync(Int32 poolId, Guid sessionId, Int64? lastMessageId, CancellationToken cancellationToken) public async Task<string> GetMessageAsync(int poolId, Guid sessionId, long? lastMessageId, CancellationToken cancellationToken)
{ {
await _httpClient.GetAsync("message", cancellationToken); var response = await _httpClient.GetAsync("message", cancellationToken);
return null; if (!response.IsSuccessStatusCode)
{
var content = default(string);
try
{
content = await response.Content.ReadAsStringAsync();
}
catch
{
}
var error = $"HTTP {(int)response.StatusCode} {Enum.GetName(typeof(HttpStatusCode), response.StatusCode)}";
if (!string.IsNullOrEmpty(content))
{
error = $"{error}: {content}";
}
throw new Exception(error);
}
return await response.Content.ReadAsStringAsync();
} }
} }
} }

View File

@@ -27,7 +27,7 @@ namespace GitHub.Runner.Listener
public sealed class MessageListener : RunnerService, IMessageListener public sealed class MessageListener : RunnerService, IMessageListener
{ {
private long? _lastMessageId; // private long? _lastMessageId;
private RunnerSettings _settings; private RunnerSettings _settings;
private ITerminal _term; private ITerminal _term;
private IRunnerServer _runnerServer; private IRunnerServer _runnerServer;
@@ -222,17 +222,15 @@ namespace GitHub.Runner.Listener
while (true) while (true)
{ {
token.ThrowIfCancellationRequested(); token.ThrowIfCancellationRequested();
TaskAgentMessage message = null; string message = null;
try try
{ {
message = await _brokerServer.GetMessageAsync(_settings.PoolId, _session.SessionId, _lastMessageId, token); message = await _brokerServer.GetMessageAsync(_settings.PoolId, _session.SessionId, null/*_lastMessageId*/, token);
// Decrypt the message body if the session is using encryption
message = DecryptMessage(message);
_term.WriteLine($"{DateTime.UtcNow:u}: {message}");
if (message != null) if (message != null)
{ {
_lastMessageId = message.MessageId; // todo: _lastMessageId = message.MessageId;
} }
if (encounteringError) //print the message once only if there was an error if (encounteringError) //print the message once only if there was an error
@@ -298,23 +296,23 @@ namespace GitHub.Runner.Listener
} }
} }
if (message == null) // if (message == null)
{ // {
if (heartbeat.Elapsed > TimeSpan.FromMinutes(30)) // if (heartbeat.Elapsed > TimeSpan.FromMinutes(30))
{ // {
Trace.Info($"No message retrieved from session '{_session.SessionId}' within last 30 minutes."); // Trace.Info($"No message retrieved from session '{_session.SessionId}' within last 30 minutes.");
heartbeat.Restart(); // heartbeat.Restart();
} // }
else // else
{ // {
Trace.Verbose($"No message retrieved from session '{_session.SessionId}'."); // Trace.Verbose($"No message retrieved from session '{_session.SessionId}'.");
} // }
continue; // continue;
} // }
Trace.Info($"Message '{message.MessageId}' received from session '{_session.SessionId}'."); // Trace.Info($"Message '{message.MessageId}' received from session '{_session.SessionId}'.");
return message; // return message;
} }
} }
#else #else