in src/HttpRequestHelper/HttpClientHelper.cs [897:948]
private GroupPollResponse WaitForGroupUpdateCompletion(UserInput userInputObj, string groupName, int numberOfPollTries = 0)
{
GroupPollResponse pollResult = GroupPollResponse.Invalid;
while (numberOfPollTries < 50) // limit to prevent infinite loop on non-retryable failures
{
bool isNonRetriableResponse = false;
try
{
pollResult = new HttpClientHelper().PollGroup(userInputObj, groupName).Result;
if (pollResult == GroupPollResponse.Completed)
{
return pollResult;
}
else if (pollResult == GroupPollResponse.Error)
{
userInputObj.LoggerObj.LogWarning($"Polling for group {groupName} resulted in a non-retryable error");
isNonRetriableResponse = true;
}
}
catch (OperationCanceledException)
{
throw;
}
catch (AggregateException aePollGroup)
{
string errorMessage = "";
foreach (var e in aePollGroup.Flatten().InnerExceptions)
{
if (e is OperationCanceledException)
throw e;
else
{
errorMessage = errorMessage + e.Message + " ";
}
}
userInputObj.LoggerObj.LogWarning($"Group {groupName} polling failed: {errorMessage}");
isNonRetriableResponse = !HttpUtilities.IsRetryableException(aePollGroup);
}
catch (Exception ex)
{
userInputObj.LoggerObj.LogWarning($"Group {groupName} polling failed: {ex.Message}");
isNonRetriableResponse = !HttpUtilities.IsRetryableException(ex);
}
if (isNonRetriableResponse)
numberOfPollTries += 1;
Thread.Sleep(10000);
}
return pollResult;
}