Index: components/metrics/metrics_service.cc |
diff --git a/components/metrics/metrics_service.cc b/components/metrics/metrics_service.cc |
index adb8f2cd7cc11b97bb05194a7fca46ca16a78976..18ec2e55bddae79355348dcc22bbf3e848231092 100644 |
--- a/components/metrics/metrics_service.cc |
+++ b/components/metrics/metrics_service.cc |
@@ -1052,6 +1052,8 @@ void MetricsService::OnLogUploadComplete(int response_code) { |
ResponseCodeToStatus(response_code), |
NUM_RESPONSE_STATUSES); |
+ bool suppress_reschedule = false; |
+ |
bool upload_succeeded = response_code == 200; |
// Provide boolean for error recovery (allow us to ignore response_code). |
@@ -1085,6 +1087,7 @@ void MetricsService::OnLogUploadComplete(int response_code) { |
log_manager_.StageNextLogForUpload(); |
SendStagedLog(); |
state_ = SENDING_INITIAL_METRICS_LOG; |
+ suppress_reschedule = true; |
} |
break; |
@@ -1113,10 +1116,10 @@ void MetricsService::OnLogUploadComplete(int response_code) { |
// Error 400 indicates a problem with the log, not with the server, so |
// don't consider that a sign that the server is in trouble. |
bool server_is_healthy = upload_succeeded || response_code == 400; |
- // Don't notify the scheduler that the upload is finished if we've only sent |
- // the initial stability log, but not yet the initial metrics log (treat the |
- // two as a single unit of work as far as the scheduler is concerned). |
- if (state_ != SENDING_INITIAL_METRICS_LOG) { |
+ // Don't notify the scheduler that the upload is finished if we've only just |
+ // sent the initial stability log, but not yet the initial metrics log (treat |
+ // the two as a single unit of work as far as the scheduler is concerned). |
+ if (!suppress_reschedule) { |
scheduler_->UploadFinished(server_is_healthy, |
log_manager_.has_unsent_logs()); |
} |