private GroupPollResponse WaitForGroupUpdateCompletion()

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;
        }