Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(176)

Side by Side Diff: components/sync/engine_impl/worker_entity_tracker.cc

Issue 2350803005: [Sync] Fixing two bugs in the worker revealed by trying to add an encryption integration test. (Closed)
Patch Set: Merging conflict. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/sync/engine_impl/worker_entity_tracker.h" 5 #include "components/sync/engine_impl/worker_entity_tracker.h"
6 6
7 #include <stdint.h> 7 #include <algorithm>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "components/sync/base/model_type.h" 10 #include "components/sync/base/model_type.h"
11 #include "components/sync/base/time.h" 11 #include "components/sync/base/time.h"
12 #include "components/sync/syncable/syncable_util.h" 12 #include "components/sync/syncable/syncable_util.h"
13 13
14 namespace syncer_v2 { 14 namespace syncer_v2 {
15 15
16 WorkerEntityTracker::WorkerEntityTracker(const std::string& client_tag_hash) 16 WorkerEntityTracker::WorkerEntityTracker(const std::string& client_tag_hash)
17 : client_tag_hash_(client_tag_hash) { 17 : client_tag_hash_(client_tag_hash) {
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 // There's no need to inform the model thread of the conflict. The 89 // There's no need to inform the model thread of the conflict. The
90 // conflicting update has already been posted to its task runner; it will 90 // conflicting update has already been posted to its task runner; it will
91 // figure it out as soon as it runs that task. 91 // figure it out as soon as it runs that task.
92 // 92 //
93 // Note that this check must be after pending_commit_ is set. 93 // Note that this check must be after pending_commit_ is set.
94 if (IsInConflict()) { 94 if (IsInConflict()) {
95 ClearPendingCommit(); 95 ClearPendingCommit();
96 return; 96 return;
97 } 97 }
98 98
99 // There's no conflict; increase base_version_ if there was a commit response
100 // the processor didn't know about.
101 base_version_ = std::max(base_version_, highest_commit_response_version_);
102
99 // Otherwise, keep the data associated with this pending commit 103 // Otherwise, keep the data associated with this pending commit
100 // so it can be committed at the next possible opportunity. 104 // so it can be committed at the next possible opportunity.
101 } 105 }
102 106
103 void WorkerEntityTracker::ReceiveCommitResponse(CommitResponseData* ack) { 107 void WorkerEntityTracker::ReceiveCommitResponse(CommitResponseData* ack) {
104 DCHECK_GT(ack->response_version, highest_commit_response_version_) 108 DCHECK_GT(ack->response_version, highest_commit_response_version_)
105 << "Had expected higher response version." 109 << "Had expected higher response version."
106 << " id: " << id_; 110 << " id: " << id_;
107 111
108 // Commit responses, especially after the first commit, can update our ID. 112 // Commit responses, especially after the first commit, can update our ID.
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 bool WorkerEntityTracker::IsServerKnown() const { 193 bool WorkerEntityTracker::IsServerKnown() const {
190 return base_version_ != kUncommittedVersion; 194 return base_version_ != kUncommittedVersion;
191 } 195 }
192 196
193 void WorkerEntityTracker::ClearPendingCommit() { 197 void WorkerEntityTracker::ClearPendingCommit() {
194 pending_commit_.reset(); 198 pending_commit_.reset();
195 pending_commit_specifics_hash_.clear(); 199 pending_commit_specifics_hash_.clear();
196 } 200 }
197 201
198 } // namespace syncer_v2 202 } // namespace syncer_v2
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698