| Index: components/metrics/reporting_service.cc
|
| diff --git a/components/metrics/reporting_service.cc b/components/metrics/reporting_service.cc
|
| index 8b96d4af2e831aec3cc74f84f9d50bf74e006059..97b926ab0c73cd458d7c9727e1d44566bd6ade52 100644
|
| --- a/components/metrics/reporting_service.cc
|
| +++ b/components/metrics/reporting_service.cc
|
| @@ -166,23 +166,27 @@ void ReportingService::OnLogUploadComplete(int response_code) {
|
|
|
| bool upload_succeeded = response_code == 200;
|
|
|
| - // Provide boolean for error recovery (allow us to ignore response_code).
|
| - bool discard_log = false;
|
| - const size_t log_size = log_store()->staged_log().length();
|
| - if (upload_succeeded) {
|
| - LogSuccess(log_size);
|
| - } else if (log_size > max_retransmit_size_) {
|
| - LogLargeRejection(log_size);
|
| - discard_log = true;
|
| - } else if (response_code == 400) {
|
| - // Bad syntax. Retransmission won't work.
|
| - discard_log = true;
|
| - }
|
| -
|
| - if (upload_succeeded || discard_log) {
|
| - log_store()->DiscardStagedLog();
|
| - // Store the updated list to disk now that the removed log is uploaded.
|
| - log_store()->PersistUnsentLogs();
|
| + // Staged log could have been removed already (such as by Purge() in some
|
| + // implementations), otherwise we may remove it here.
|
| + if (log_store()->has_staged_log()) {
|
| + // Provide boolean for error recovery (allow us to ignore response_code).
|
| + bool discard_log = false;
|
| + const size_t log_size = log_store()->staged_log().length();
|
| + if (upload_succeeded) {
|
| + LogSuccess(log_size);
|
| + } else if (log_size > max_retransmit_size_) {
|
| + LogLargeRejection(log_size);
|
| + discard_log = true;
|
| + } else if (response_code == 400) {
|
| + // Bad syntax. Retransmission won't work.
|
| + discard_log = true;
|
| + }
|
| +
|
| + if (upload_succeeded || discard_log) {
|
| + log_store()->DiscardStagedLog();
|
| + // Store the updated list to disk now that the removed log is uploaded.
|
| + log_store()->PersistUnsentLogs();
|
| + }
|
| }
|
|
|
| // Error 400 indicates a problem with the log, not with the server, so
|
|
|