diff --git a/src/Runner.Listener/Configuration/ConfigurationManager.cs b/src/Runner.Listener/Configuration/ConfigurationManager.cs index 34b8e994f..5f79dd550 100644 --- a/src/Runner.Listener/Configuration/ConfigurationManager.cs +++ b/src/Runner.Listener/Configuration/ConfigurationManager.cs @@ -624,9 +624,12 @@ namespace GitHub.Runner.Listener.Configuration httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("basic", base64EncodingToken); httpClient.DefaultRequestHeaders.UserAgent.AddRange(HostContext.UserAgents); httpClient.DefaultRequestHeaders.Accept.ParseAdd("application/vnd.github.v3+json"); + + var responseStatus = System.Net.HttpStatusCode.OK; try { var response = await httpClient.PostAsync(githubApiUrl, new StringContent(string.Empty)); + responseStatus = response.StatusCode; if (response.IsSuccessStatusCode) { @@ -634,11 +637,6 @@ namespace GitHub.Runner.Listener.Configuration var jsonResponse = await response.Content.ReadAsStringAsync(); return StringUtil.ConvertFromJson(jsonResponse); } - else if(response.StatusCode == System.Net.HttpStatusCode.NotFound) - { - // It doesn't make sense to retry in this case, so just stop - break; - } else { _term.WriteError($"Http response code: {response.StatusCode} from 'POST {githubApiUrl}'"); @@ -647,15 +645,15 @@ namespace GitHub.Runner.Listener.Configuration response.EnsureSuccessStatusCode(); } } - catch(Exception ex) when (retryCount < 2) + catch(Exception ex) when (retryCount < 2 && responseStatus != System.Net.HttpStatusCode.NotFound) { retryCount++; Trace.Error($"Failed to get JIT runner token -- Atempt: {retryCount}"); Trace.Error(ex); - Trace.Info("Retrying in 5 seconds"); } } var backOff = BackoffTimerHelper.GetRandomBackoff(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(5)); + Trace.Info($"Retrying in {backOff.Seconds} seconds"); await Task.Delay(backOff); } return null; @@ -689,9 +687,11 @@ namespace GitHub.Runner.Listener.Configuration {"runner_event", runnerEvent} }; + var responseStatus = System.Net.HttpStatusCode.OK; try { var response = await httpClient.PostAsync(githubApiUrl, new StringContent(StringUtil.ConvertToJson(bodyObject), null, "application/json")); + responseStatus = response.StatusCode; if(response.IsSuccessStatusCode) { @@ -699,29 +699,23 @@ namespace GitHub.Runner.Listener.Configuration var jsonResponse = await response.Content.ReadAsStringAsync(); return StringUtil.ConvertFromJson(jsonResponse); } - else if(response.StatusCode == System.Net.HttpStatusCode.NotFound) - { - // It doesn't make sense to retry in this case, so just stop - break; - } else { _term.WriteError($"Http response code: {response.StatusCode} from 'POST {githubApiUrl}'"); var errorResponse = await response.Content.ReadAsStringAsync(); _term.WriteError(errorResponse); - // Something else bad happened, let's go to our retry logic response.EnsureSuccessStatusCode(); } } - catch(Exception ex) when (retryCount < 2) + catch(Exception ex) when (retryCount < 2 && responseStatus != System.Net.HttpStatusCode.NotFound) { retryCount++; Trace.Error($"Failed to get tenant credentials -- Atempt: {retryCount}"); Trace.Error(ex); - Trace.Info("Retrying in 5 seconds"); } } var backOff = BackoffTimerHelper.GetRandomBackoff(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(5)); + Trace.Info($"Retrying in {backOff.Seconds} seconds"); await Task.Delay(backOff); } return null;