in Gems/AWSMetrics/Code/Source/MetricsManager.cpp [237:284]
void MetricsManager::OnResponseReceived(const MetricsQueue& metricsEventsInRequest, const ServiceAPI::PostMetricsEventsResponseEntries& responseEntries)
{
MetricsQueue metricsEventsForRetry;
int numMetricsEventsInRequest = metricsEventsInRequest.GetNumMetrics();
for (int index = 0; index < numMetricsEventsInRequest; ++index)
{
MetricsEvent metricsEvent = metricsEventsInRequest[index];
if (responseEntries.size() > 0 && responseEntries[index].m_result == AwsMetricsPostMetricsEventsResponseEntrySuccessResult)
{
// The metrics event is sent to the backend successfully.
if (metricsEvent.GetNumFailures() == 0)
{
m_globalStats.m_numEvents++;
}
else
{
// Reduce the number of errors when the retry succeeds.
m_globalStats.m_numErrors--;
}
m_globalStats.m_numSuccesses++;
m_globalStats.m_sendSizeInBytes += static_cast<uint32_t>(metricsEvent.GetSizeInBytes());
}
else
{
metricsEvent.MarkFailedSubmission();
// The metrics event failed to be sent to the backend for the first time.
if (metricsEvent.GetNumFailures() == 1)
{
m_globalStats.m_numErrors++;
m_globalStats.m_numEvents++;
}
if (metricsEvent.GetNumFailures() <= m_clientConfiguration->GetMaxNumRetries())
{
metricsEventsForRetry.AddMetrics(metricsEvent);
}
else
{
m_globalStats.m_numDropped++;
}
}
}
PushMetricsForRetry(metricsEventsForRetry);
}