diff --git a/src/Runner.Common/BrokerServer.cs b/src/Runner.Common/BrokerServer.cs index 5373694f9..891f0c359 100644 --- a/src/Runner.Common/BrokerServer.cs +++ b/src/Runner.Common/BrokerServer.cs @@ -6,6 +6,7 @@ using GitHub.Runner.Common.Util; using GitHub.Services.WebApi; using GitHub.Services.Common; using GitHub.Runner.Sdk; +using System.Net; using System.Net.Http; namespace GitHub.Runner.Common @@ -14,7 +15,7 @@ namespace GitHub.Runner.Common public interface IBrokerServer : IRunnerService { Task ConnectAsync(Uri serverUrl, CancellationToken cancellationToken); - Task GetMessageAsync(Int32 poolId, Guid sessionId, Int64? lastMessageId, CancellationToken cancellationToken); + Task GetMessageAsync(int poolId, Guid sessionId, long? lastMessageId, CancellationToken cancellationToken); } public sealed class BrokerServer : RunnerService, IBrokerServer @@ -29,10 +30,29 @@ namespace GitHub.Runner.Common await _httpClient.GetAsync("health", cancellationToken); } - public async Task GetMessageAsync(Int32 poolId, Guid sessionId, Int64? lastMessageId, CancellationToken cancellationToken) + public async Task GetMessageAsync(int poolId, Guid sessionId, long? lastMessageId, CancellationToken cancellationToken) { - await _httpClient.GetAsync("message", cancellationToken); - return null; + var response = await _httpClient.GetAsync("message", cancellationToken); + 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(); } } } diff --git a/src/Runner.Listener/MessageListener.cs b/src/Runner.Listener/MessageListener.cs index 4e4767cfb..9dbd2c5fa 100644 --- a/src/Runner.Listener/MessageListener.cs +++ b/src/Runner.Listener/MessageListener.cs @@ -27,7 +27,7 @@ namespace GitHub.Runner.Listener public sealed class MessageListener : RunnerService, IMessageListener { - private long? _lastMessageId; + // private long? _lastMessageId; private RunnerSettings _settings; private ITerminal _term; private IRunnerServer _runnerServer; @@ -222,17 +222,15 @@ namespace GitHub.Runner.Listener while (true) { token.ThrowIfCancellationRequested(); - TaskAgentMessage message = null; + string message = null; try { - message = await _brokerServer.GetMessageAsync(_settings.PoolId, _session.SessionId, _lastMessageId, token); - - // Decrypt the message body if the session is using encryption - message = DecryptMessage(message); + message = await _brokerServer.GetMessageAsync(_settings.PoolId, _session.SessionId, null/*_lastMessageId*/, token); + _term.WriteLine($"{DateTime.UtcNow:u}: {message}"); if (message != null) { - _lastMessageId = message.MessageId; + // todo: _lastMessageId = message.MessageId; } if (encounteringError) //print the message once only if there was an error @@ -298,23 +296,23 @@ namespace GitHub.Runner.Listener } } - if (message == null) - { - if (heartbeat.Elapsed > TimeSpan.FromMinutes(30)) - { - Trace.Info($"No message retrieved from session '{_session.SessionId}' within last 30 minutes."); - heartbeat.Restart(); - } - else - { - Trace.Verbose($"No message retrieved from session '{_session.SessionId}'."); - } + // if (message == null) + // { + // if (heartbeat.Elapsed > TimeSpan.FromMinutes(30)) + // { + // Trace.Info($"No message retrieved from session '{_session.SessionId}' within last 30 minutes."); + // heartbeat.Restart(); + // } + // else + // { + // Trace.Verbose($"No message retrieved from session '{_session.SessionId}'."); + // } - continue; - } + // continue; + // } - Trace.Info($"Message '{message.MessageId}' received from session '{_session.SessionId}'."); - return message; + // Trace.Info($"Message '{message.MessageId}' received from session '{_session.SessionId}'."); + // return message; } } #else