in src/Assessment/BatchAssessments.cs [117:170]
private async Task PollAssessmentInParallel(AssessmentInformation assessmentInfo, UserInput userInputObj)
{
int numberOfTries = 0;
while (numberOfTries < 25)
{
Thread.Sleep(60000);
AssessmentPollResponse pollResult;
try
{
pollResult = await new HttpClientHelper().PollAssessment(userInputObj, assessmentInfo);
if (pollResult == AssessmentPollResponse.Error)
{
userInputObj.LoggerObj.LogInformation($"Polling for assessment {assessmentInfo.AssessmentName} resulted in non-retryable error");
numberOfTries += 1;
}
if (!AssessmentStatusMap.ContainsKey(assessmentInfo))
AssessmentStatusMap.Add(assessmentInfo, pollResult);
else
AssessmentStatusMap[assessmentInfo] = pollResult;
}
catch (OperationCanceledException)
{
throw;
}
catch (AggregateException aePollAssessment)
{
string errorMessage = "";
foreach (var e in aePollAssessment.Flatten().InnerExceptions)
{
if (e is OperationCanceledException)
throw e;
else
{
errorMessage = errorMessage + e.Message + " ";
}
}
userInputObj.LoggerObj.LogWarning($"Assessment {assessmentInfo.AssessmentName} polling failed: {errorMessage}");
}
catch (Exception ex)
{
userInputObj.LoggerObj.LogWarning($"Assessment {assessmentInfo.AssessmentName} polling failed: {ex.Message}");
}
if (AssessmentStatusMap[assessmentInfo] == AssessmentPollResponse.Completed ||
AssessmentStatusMap[assessmentInfo] == AssessmentPollResponse.OutDated ||
AssessmentStatusMap[assessmentInfo] == AssessmentPollResponse.Invalid)
break;
}
userInputObj.LoggerObj.LogInformation(1, $"Polling for assessment {assessmentInfo.AssessmentName} completed"); // 1 % increase for every polling completion. Total should be less than 65 %
}