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

Side by Side Diff: chrome/browser/sync_file_system/drive_backend/metadata_database_index.cc

Issue 187203004: [SyncFS] Improve debug logs of MetadataDatabaseIndex (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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 | Annotate | Revision Log
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 "chrome/browser/sync_file_system/drive_backend/metadata_database_index. h" 5 #include "chrome/browser/sync_file_system/drive_backend/metadata_database_index. h"
6 6
7 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants. h" 7 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants. h"
8 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h" 8 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h"
9 9
10 namespace sync_file_system { 10 namespace sync_file_system {
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 void MetadataDatabaseIndex::StoreFileTracker(scoped_ptr<FileTracker> tracker) { 86 void MetadataDatabaseIndex::StoreFileTracker(scoped_ptr<FileTracker> tracker) {
87 if (!tracker) { 87 if (!tracker) {
88 NOTREACHED(); 88 NOTREACHED();
89 return; 89 return;
90 } 90 }
91 91
92 int64 tracker_id = tracker->tracker_id(); 92 int64 tracker_id = tracker->tracker_id();
93 FileTracker* old_tracker = tracker_by_id_.get(tracker_id); 93 FileTracker* old_tracker = tracker_by_id_.get(tracker_id);
94 94
95 if (!old_tracker) { 95 if (!old_tracker) {
96 DVLOG(3) << "Adding new tracker: " << tracker->tracker_id()
97 << " " << GetTrackerTitle(*tracker);
98
96 AddToAppIDIndex(*tracker); 99 AddToAppIDIndex(*tracker);
97 AddToPathIndexes(*tracker); 100 AddToPathIndexes(*tracker);
98 AddToFileIDIndexes(*tracker); 101 AddToFileIDIndexes(*tracker);
99 AddToDirtyTrackerIndexes(*tracker); 102 AddToDirtyTrackerIndexes(*tracker);
100 } else { 103 } else {
104 DVLOG(3) << "Updating tracker: " << tracker->tracker_id()
105 << " " << GetTrackerTitle(*tracker);
106
101 UpdateInAppIDIndex(*old_tracker, *tracker); 107 UpdateInAppIDIndex(*old_tracker, *tracker);
102 UpdateInPathIndexes(*old_tracker, *tracker); 108 UpdateInPathIndexes(*old_tracker, *tracker);
103 UpdateInFileIDIndexes(*old_tracker, *tracker); 109 UpdateInFileIDIndexes(*old_tracker, *tracker);
104 UpdateInDirtyTrackerIndexes(*old_tracker, *tracker); 110 UpdateInDirtyTrackerIndexes(*old_tracker, *tracker);
105 } 111 }
106 112
107 tracker_by_id_.set(tracker_id, tracker.Pass()); 113 tracker_by_id_.set(tracker_id, tracker.Pass());
108 } 114 }
109 115
110 void MetadataDatabaseIndex::RemoveFileMetadata(const std::string& file_id) { 116 void MetadataDatabaseIndex::RemoveFileMetadata(const std::string& file_id) {
111 metadata_by_id_.erase(file_id); 117 metadata_by_id_.erase(file_id);
112 } 118 }
113 119
114 void MetadataDatabaseIndex::RemoveFileTracker(int64 tracker_id) { 120 void MetadataDatabaseIndex::RemoveFileTracker(int64 tracker_id) {
115 FileTracker* tracker = tracker_by_id_.get(tracker_id); 121 FileTracker* tracker = tracker_by_id_.get(tracker_id);
116 if (!tracker) { 122 if (!tracker) {
117 NOTREACHED(); 123 NOTREACHED();
118 return; 124 return;
119 } 125 }
120 126
127 DVLOG(3) << "Removing tracker: " << tracker->tracker_id();
nhiroki 2014/03/05 04:13:38 nit: can you print tracker's title?
tzik 2014/03/05 05:18:40 Done.
128
121 RemoveFromAppIDIndex(*tracker); 129 RemoveFromAppIDIndex(*tracker);
122 RemoveFromPathIndexes(*tracker); 130 RemoveFromPathIndexes(*tracker);
123 RemoveFromFileIDIndexes(*tracker); 131 RemoveFromFileIDIndexes(*tracker);
124 RemoveFromDirtyTrackerIndexes(*tracker); 132 RemoveFromDirtyTrackerIndexes(*tracker);
125 133
126 tracker_by_id_.erase(tracker_id); 134 tracker_by_id_.erase(tracker_id);
127 } 135 }
128 136
129 TrackerIDSet MetadataDatabaseIndex::GetFileTrackerIDsByFileID( 137 TrackerIDSet MetadataDatabaseIndex::GetFileTrackerIDsByFileID(
130 const std::string& file_id) const { 138 const std::string& file_id) const {
131 return FindItem(trackers_by_file_id_, file_id); 139 return FindItem(trackers_by_file_id_, file_id);
132 } 140 }
133 141
134 int64 MetadataDatabaseIndex::GetAppRootTracker( 142 int64 MetadataDatabaseIndex::GetAppRootTracker(
135 const std::string& app_id) const { 143 const std::string& app_id) const {
136 return FindItem(app_root_by_app_id_, app_id); 144 return FindItem(app_root_by_app_id_, app_id);
137 } 145 }
138 146
139 TrackerIDSet MetadataDatabaseIndex::GetFileTrackerIDsByParentAndTitle( 147 TrackerIDSet MetadataDatabaseIndex::GetFileTrackerIDsByParentAndTitle(
140 int64 parent_tracker_id, 148 int64 parent_tracker_id,
141 const std::string& title) const { 149 const std::string& title) const {
142 TrackerIDsByParentAndTitle::const_iterator found = 150 TrackerIDsByParentAndTitle::const_iterator found =
143 trackers_by_parent_and_title_.find(parent_tracker_id); 151 trackers_by_parent_and_title_.find(parent_tracker_id);
144 if (found == trackers_by_parent_and_title_.end()) 152 if (found == trackers_by_parent_and_title_.end())
145 return TrackerIDSet(); 153 return TrackerIDSet();
146 return FindItem(found->second, title); 154 return FindItem(found->second, title);
147 } 155 }
148 156
157 std::vector<int64> MetadataDatabaseIndex::GetFileTrackerIDsByParent(
158 int64 parent_tracker_id) const {
159 std::vector<int64> result;
160 TrackerIDsByParentAndTitle::const_iterator found =
161 trackers_by_parent_and_title_.find(parent_tracker_id);
162 if (found == trackers_by_parent_and_title_.end())
163 return result;
164
165 for (TrackerIDsByTitle::const_iterator itr = found->second.begin();
166 itr != found->second.end(); ++itr) {
167 result.insert(result.end(), itr->second.begin(), itr->second.end());
168 }
169
170 return result;
171 }
172
149 std::string MetadataDatabaseIndex::PickMultiTrackerFileID() const { 173 std::string MetadataDatabaseIndex::PickMultiTrackerFileID() const {
150 if (multi_tracker_file_ids_.empty()) 174 if (multi_tracker_file_ids_.empty())
151 return std::string(); 175 return std::string();
152 return *multi_tracker_file_ids_.begin(); 176 return *multi_tracker_file_ids_.begin();
153 } 177 }
154 178
155 ParentIDAndTitle MetadataDatabaseIndex::PickMultiBackingFilePath() const { 179 ParentIDAndTitle MetadataDatabaseIndex::PickMultiBackingFilePath() const {
156 if (multi_backing_file_paths_.empty()) 180 if (multi_backing_file_paths_.empty())
157 return ParentIDAndTitle(kInvalidTrackerID, std::string()); 181 return ParentIDAndTitle(kInvalidTrackerID, std::string());
158 return *multi_backing_file_paths_.begin(); 182 return *multi_backing_file_paths_.begin();
159 } 183 }
160 184
161 int64 MetadataDatabaseIndex::PickDirtyTracker() const { 185 int64 MetadataDatabaseIndex::PickDirtyTracker() const {
162 if (dirty_trackers_.empty()) 186 if (dirty_trackers_.empty())
163 return kInvalidTrackerID; 187 return kInvalidTrackerID;
164 return *dirty_trackers_.begin(); 188 return *dirty_trackers_.begin();
165 } 189 }
166 190
167 void MetadataDatabaseIndex::DemoteDirtyTracker(int64 tracker_id) { 191 void MetadataDatabaseIndex::DemoteDirtyTracker(int64 tracker_id) {
168 if (dirty_trackers_.erase(tracker_id)) 192 if (dirty_trackers_.erase(tracker_id))
169 demoted_dirty_trackers_.insert(tracker_id); 193 demoted_dirty_trackers_.insert(tracker_id);
170 } 194 }
171 195
196 bool MetadataDatabaseIndex::HasDemotedDirtyTracker() const {
197 return !demoted_dirty_trackers_.empty();
198 }
199
172 void MetadataDatabaseIndex::PromoteDemotedDirtyTrackers() { 200 void MetadataDatabaseIndex::PromoteDemotedDirtyTrackers() {
173 dirty_trackers_.insert(demoted_dirty_trackers_.begin(), 201 dirty_trackers_.insert(demoted_dirty_trackers_.begin(),
174 demoted_dirty_trackers_.end()); 202 demoted_dirty_trackers_.end());
175 demoted_dirty_trackers_.clear(); 203 demoted_dirty_trackers_.clear();
176 } 204 }
177 205
206 std::vector<std::string> MetadataDatabaseIndex::GetRegisteredAppIDs() const {
207 std::vector<std::string> result;
208 result.reserve(app_root_by_app_id_.size());
209 for (TrackerIDByAppID::const_iterator itr = app_root_by_app_id_.begin();
210 itr != app_root_by_app_id_.end(); ++itr)
211 result.push_back(itr->first);
212 return result;
213 }
214
178 void MetadataDatabaseIndex::AddToAppIDIndex( 215 void MetadataDatabaseIndex::AddToAppIDIndex(
179 const FileTracker& new_tracker) { 216 const FileTracker& new_tracker) {
180 if (!IsAppRoot(new_tracker)) 217 if (!IsAppRoot(new_tracker))
181 return; 218 return;
182 219
220 DVLOG(3) << " Add to app_root_by_app_id_: " << new_tracker.app_id();
nhiroki 2014/03/05 04:13:38 just curious: why do you prepend whitespaces? for
tzik 2014/03/05 05:18:40 Yes, it's just for making the log readable.
221
183 DCHECK(new_tracker.active()); 222 DCHECK(new_tracker.active());
184 DCHECK(!ContainsKey(app_root_by_app_id_, new_tracker.app_id())); 223 DCHECK(!ContainsKey(app_root_by_app_id_, new_tracker.app_id()));
185 app_root_by_app_id_[new_tracker.app_id()] = new_tracker.tracker_id(); 224 app_root_by_app_id_[new_tracker.app_id()] = new_tracker.tracker_id();
186 } 225 }
187 226
188 void MetadataDatabaseIndex::UpdateInAppIDIndex( 227 void MetadataDatabaseIndex::UpdateInAppIDIndex(
189 const FileTracker& old_tracker, 228 const FileTracker& old_tracker,
190 const FileTracker& new_tracker) { 229 const FileTracker& new_tracker) {
191 DCHECK_EQ(old_tracker.tracker_id(), new_tracker.tracker_id()); 230 DCHECK_EQ(old_tracker.tracker_id(), new_tracker.tracker_id());
192 231
193 if (IsAppRoot(old_tracker) && !IsAppRoot(new_tracker)) { 232 if (IsAppRoot(old_tracker) && !IsAppRoot(new_tracker)) {
194 DCHECK(old_tracker.active()); 233 DCHECK(old_tracker.active());
195 DCHECK(!new_tracker.active()); 234 DCHECK(!new_tracker.active());
196 DCHECK(ContainsKey(app_root_by_app_id_, old_tracker.app_id())); 235 DCHECK(ContainsKey(app_root_by_app_id_, old_tracker.app_id()));
236
237 DVLOG(3) << " Remove from app_root_by_app_id_: " << old_tracker.app_id();
238
197 app_root_by_app_id_.erase(old_tracker.app_id()); 239 app_root_by_app_id_.erase(old_tracker.app_id());
198 } else if (!IsAppRoot(old_tracker) && IsAppRoot(new_tracker)) { 240 } else if (!IsAppRoot(old_tracker) && IsAppRoot(new_tracker)) {
199 DCHECK(!old_tracker.active()); 241 DCHECK(!old_tracker.active());
200 DCHECK(new_tracker.active()); 242 DCHECK(new_tracker.active());
201 DCHECK(!ContainsKey(app_root_by_app_id_, new_tracker.app_id())); 243 DCHECK(!ContainsKey(app_root_by_app_id_, new_tracker.app_id()));
244
245 DVLOG(3) << " Add to app_root_by_app_id_: " << new_tracker.app_id();
246
202 app_root_by_app_id_[new_tracker.app_id()] = new_tracker.tracker_id(); 247 app_root_by_app_id_[new_tracker.app_id()] = new_tracker.tracker_id();
203 } 248 }
204 } 249 }
205 250
206 void MetadataDatabaseIndex::RemoveFromAppIDIndex( 251 void MetadataDatabaseIndex::RemoveFromAppIDIndex(
207 const FileTracker& tracker) { 252 const FileTracker& tracker) {
208 if (IsAppRoot(tracker)) { 253 if (IsAppRoot(tracker)) {
209 DCHECK(tracker.active()); 254 DCHECK(tracker.active());
210 DCHECK(ContainsKey(app_root_by_app_id_, tracker.app_id())); 255 DCHECK(ContainsKey(app_root_by_app_id_, tracker.app_id()));
256
257 DVLOG(3) << " Remove from app_root_by_app_id_: " << tracker.app_id();
258
211 app_root_by_app_id_.erase(tracker.app_id()); 259 app_root_by_app_id_.erase(tracker.app_id());
212 } 260 }
213 } 261 }
214 262
215 void MetadataDatabaseIndex::AddToFileIDIndexes( 263 void MetadataDatabaseIndex::AddToFileIDIndexes(
216 const FileTracker& new_tracker) { 264 const FileTracker& new_tracker) {
265 DVLOG(3) << " Add to trackers_by_file_id_: " << new_tracker.file_id();
266
217 trackers_by_file_id_[new_tracker.file_id()].Insert(new_tracker); 267 trackers_by_file_id_[new_tracker.file_id()].Insert(new_tracker);
218 268
219 if (trackers_by_file_id_[new_tracker.file_id()].size() > 1) 269 if (trackers_by_file_id_[new_tracker.file_id()].size() > 1) {
270 DVLOG_IF(3, !ContainsKey(multi_tracker_file_ids_, new_tracker.file_id()))
271 << " Add to multi_tracker_file_ids_: " << new_tracker.file_id();
220 multi_tracker_file_ids_.insert(new_tracker.file_id()); 272 multi_tracker_file_ids_.insert(new_tracker.file_id());
273 }
221 } 274 }
222 275
223 void MetadataDatabaseIndex::UpdateInFileIDIndexes( 276 void MetadataDatabaseIndex::UpdateInFileIDIndexes(
224 const FileTracker& old_tracker, 277 const FileTracker& old_tracker,
225 const FileTracker& new_tracker) { 278 const FileTracker& new_tracker) {
226 DCHECK_EQ(old_tracker.tracker_id(), new_tracker.tracker_id()); 279 DCHECK_EQ(old_tracker.tracker_id(), new_tracker.tracker_id());
227 DCHECK_EQ(old_tracker.file_id(), new_tracker.file_id()); 280 DCHECK_EQ(old_tracker.file_id(), new_tracker.file_id());
228 281
229 std::string file_id = new_tracker.file_id(); 282 std::string file_id = new_tracker.file_id();
230 DCHECK(ContainsKey(trackers_by_file_id_, file_id)); 283 DCHECK(ContainsKey(trackers_by_file_id_, file_id));
231 284
232 if (old_tracker.active() && !new_tracker.active()) 285 if (old_tracker.active() && !new_tracker.active())
233 trackers_by_file_id_[file_id].Deactivate(new_tracker.tracker_id()); 286 trackers_by_file_id_[file_id].Deactivate(new_tracker.tracker_id());
234 else if (!old_tracker.active() && new_tracker.active()) 287 else if (!old_tracker.active() && new_tracker.active())
235 trackers_by_file_id_[file_id].Activate(new_tracker.tracker_id()); 288 trackers_by_file_id_[file_id].Activate(new_tracker.tracker_id());
236 } 289 }
237 290
238 void MetadataDatabaseIndex::RemoveFromFileIDIndexes( 291 void MetadataDatabaseIndex::RemoveFromFileIDIndexes(
239 const FileTracker& tracker) { 292 const FileTracker& tracker) {
240 DCHECK(ContainsKey(trackers_by_file_id_, tracker.file_id())); 293 TrackerIDsByFileID::iterator found =
241 trackers_by_file_id_.erase(tracker.file_id()); 294 trackers_by_file_id_.find(tracker.file_id());
295 if (found == trackers_by_file_id_.end()) {
296 NOTREACHED();
297 return;
298 }
242 299
243 if (trackers_by_file_id_[tracker.file_id()].size() <= 1) 300 DVLOG(3) << " Remove from trackers_by_file_id_: "
301 << tracker.tracker_id();
302 found->second.Erase(tracker.tracker_id());
303
304 if (trackers_by_file_id_[tracker.file_id()].size() <= 1) {
305 DVLOG_IF(3, ContainsKey(multi_tracker_file_ids_, tracker.file_id()))
306 << " Remove from multi_tracker_file_ids_: " << tracker.file_id();
244 multi_tracker_file_ids_.erase(tracker.file_id()); 307 multi_tracker_file_ids_.erase(tracker.file_id());
308 }
309
310 if (found->second.empty())
311 trackers_by_file_id_.erase(found);
245 } 312 }
246 313
247 void MetadataDatabaseIndex::AddToPathIndexes( 314 void MetadataDatabaseIndex::AddToPathIndexes(
248 const FileTracker& new_tracker) { 315 const FileTracker& new_tracker) {
249 int64 parent = new_tracker.parent_tracker_id(); 316 int64 parent = new_tracker.parent_tracker_id();
250 std::string title = GetTrackerTitle(new_tracker); 317 std::string title = GetTrackerTitle(new_tracker);
318
319 DVLOG(3) << " Add to trackers_by_parent_and_title_: "
320 << parent << " " << title;
321
251 trackers_by_parent_and_title_[parent][title].Insert(new_tracker); 322 trackers_by_parent_and_title_[parent][title].Insert(new_tracker);
252 323
253 if (trackers_by_parent_and_title_[parent][title].size() > 1) 324 if (trackers_by_parent_and_title_[parent][title].size() > 1) {
325 DVLOG_IF(3, !ContainsKey(multi_backing_file_paths_,
326 ParentIDAndTitle(parent, title)))
327 << " Add to multi_backing_file_paths_: " << parent << " " << title;
254 multi_backing_file_paths_.insert(ParentIDAndTitle(parent, title)); 328 multi_backing_file_paths_.insert(ParentIDAndTitle(parent, title));
329 }
255 } 330 }
256 331
257 void MetadataDatabaseIndex::UpdateInPathIndexes( 332 void MetadataDatabaseIndex::UpdateInPathIndexes(
258 const FileTracker& old_tracker, 333 const FileTracker& old_tracker,
259 const FileTracker& new_tracker) { 334 const FileTracker& new_tracker) {
260 DCHECK_EQ(old_tracker.tracker_id(), new_tracker.tracker_id()); 335 DCHECK_EQ(old_tracker.tracker_id(), new_tracker.tracker_id());
261 DCHECK_EQ(old_tracker.parent_tracker_id(), new_tracker.parent_tracker_id()); 336 DCHECK_EQ(old_tracker.parent_tracker_id(), new_tracker.parent_tracker_id());
262 DCHECK_EQ(GetTrackerTitle(old_tracker), GetTrackerTitle(new_tracker)); 337 DCHECK(GetTrackerTitle(old_tracker) == GetTrackerTitle(new_tracker) ||
338 !old_tracker.has_synced_details());
263 339
264 int64 tracker_id = new_tracker.tracker_id(); 340 int64 tracker_id = new_tracker.tracker_id();
265 int64 parent = new_tracker.parent_tracker_id(); 341 int64 parent = new_tracker.parent_tracker_id();
342 std::string old_title = GetTrackerTitle(old_tracker);
266 std::string title = GetTrackerTitle(new_tracker); 343 std::string title = GetTrackerTitle(new_tracker);
267 344
345 TrackerIDsByTitle* trackers_by_title = &trackers_by_parent_and_title_[parent];
346
347 if (old_title != title) {
348 TrackerIDsByTitle::iterator found = trackers_by_title->find(old_title);
349 if (found != trackers_by_title->end()) {
350 DVLOG(3) << " Remove from trackers_by_parent_and_title_: "
351 << parent << " " << old_title;
352
353 found->second.Erase(tracker_id);
354 if (found->second.empty())
355 trackers_by_title->erase(found);
356 } else {
357 NOTREACHED();
358 }
359
360 DVLOG(3) << " Add to trackers_by_parent_and_title_: "
361 << parent << " " << title;
362
363 (*trackers_by_title)[title].Insert(new_tracker);
364
365 if (trackers_by_parent_and_title_[parent][old_title].size() <= 1) {
366 DVLOG_IF(3, ContainsKey(multi_backing_file_paths_,
367 ParentIDAndTitle(parent, title)))
368 << " Remove from multi_backing_file_paths_: "
369 << parent << " " << title;
370 multi_backing_file_paths_.erase(ParentIDAndTitle(parent, title));
371 }
372
373 if (trackers_by_parent_and_title_[parent][title].size() > 1) {
374 DVLOG_IF(3, !ContainsKey(multi_backing_file_paths_,
375 ParentIDAndTitle(parent, title)))
376 << " Add to multi_backing_file_paths_: " << parent << " " << title;
377 multi_backing_file_paths_.insert(ParentIDAndTitle(parent, title));
378 }
379
380 return;
381 }
382
268 if (old_tracker.active() && !new_tracker.active()) 383 if (old_tracker.active() && !new_tracker.active())
269 trackers_by_parent_and_title_[parent][title].Deactivate(tracker_id); 384 trackers_by_parent_and_title_[parent][title].Deactivate(tracker_id);
270 else if (!old_tracker.active() && new_tracker.active()) 385 else if (!old_tracker.active() && new_tracker.active())
271 trackers_by_parent_and_title_[parent][title].Activate(tracker_id); 386 trackers_by_parent_and_title_[parent][title].Activate(tracker_id);
272 } 387 }
273 388
274 void MetadataDatabaseIndex::RemoveFromPathIndexes( 389 void MetadataDatabaseIndex::RemoveFromPathIndexes(
275 const FileTracker& tracker) { 390 const FileTracker& tracker) {
276 int64 tracker_id = tracker.tracker_id(); 391 int64 tracker_id = tracker.tracker_id();
277 int64 parent = tracker.parent_tracker_id(); 392 int64 parent = tracker.parent_tracker_id();
278 std::string title = GetTrackerTitle(tracker); 393 std::string title = GetTrackerTitle(tracker);
279 394
280 DCHECK(ContainsKey(trackers_by_parent_and_title_, parent)); 395 DCHECK(ContainsKey(trackers_by_parent_and_title_, parent));
281 DCHECK(ContainsKey(trackers_by_parent_and_title_[parent], title)); 396 DCHECK(ContainsKey(trackers_by_parent_and_title_[parent], title));
397
398 DVLOG(3) << " Remove from trackers_by_parent_and_title_: "
399 << parent << " " << title;
400
282 trackers_by_parent_and_title_[parent][title].Erase(tracker_id); 401 trackers_by_parent_and_title_[parent][title].Erase(tracker_id);
283 402
284 if (trackers_by_parent_and_title_[parent][title].size() <= 1) 403 if (trackers_by_parent_and_title_[parent][title].size() <= 1) {
404 DVLOG_IF(3, ContainsKey(multi_backing_file_paths_,
405 ParentIDAndTitle(parent, title)))
406 << " Remove From multi_backing_file_paths_: "
nhiroki 2014/03/05 04:13:38 nit: s/From/from
tzik 2014/03/05 05:18:40 Done.
407 << parent << " " << title;
285 multi_backing_file_paths_.erase(ParentIDAndTitle(parent, title)); 408 multi_backing_file_paths_.erase(ParentIDAndTitle(parent, title));
409 }
286 410
287 if (trackers_by_parent_and_title_[parent][title].empty()) { 411 if (trackers_by_parent_and_title_[parent][title].empty()) {
288 trackers_by_parent_and_title_[parent].erase(title); 412 trackers_by_parent_and_title_[parent].erase(title);
289 if (trackers_by_parent_and_title_[parent].empty()) 413 if (trackers_by_parent_and_title_[parent].empty())
290 trackers_by_parent_and_title_.erase(parent); 414 trackers_by_parent_and_title_.erase(parent);
291 } 415 }
292 } 416 }
293 417
294 void MetadataDatabaseIndex::AddToDirtyTrackerIndexes( 418 void MetadataDatabaseIndex::AddToDirtyTrackerIndexes(
295 const FileTracker& new_tracker) { 419 const FileTracker& new_tracker) {
296 DCHECK(!ContainsKey(dirty_trackers_, new_tracker.tracker_id())); 420 DCHECK(!ContainsKey(dirty_trackers_, new_tracker.tracker_id()));
297 DCHECK(!ContainsKey(demoted_dirty_trackers_, new_tracker.tracker_id())); 421 DCHECK(!ContainsKey(demoted_dirty_trackers_, new_tracker.tracker_id()));
298 422
299 if (new_tracker.dirty()) 423 if (new_tracker.dirty()) {
424 DVLOG(3) << " Add to dirty_trackers_: " << new_tracker.tracker_id();
300 dirty_trackers_.insert(new_tracker.tracker_id()); 425 dirty_trackers_.insert(new_tracker.tracker_id());
426 }
301 } 427 }
302 428
303 void MetadataDatabaseIndex::UpdateInDirtyTrackerIndexes( 429 void MetadataDatabaseIndex::UpdateInDirtyTrackerIndexes(
304 const FileTracker& old_tracker, 430 const FileTracker& old_tracker,
305 const FileTracker& new_tracker) { 431 const FileTracker& new_tracker) {
306 DCHECK_EQ(old_tracker.tracker_id(), new_tracker.tracker_id()); 432 DCHECK_EQ(old_tracker.tracker_id(), new_tracker.tracker_id());
307 433
308 int64 tracker_id = new_tracker.tracker_id(); 434 int64 tracker_id = new_tracker.tracker_id();
309 if (old_tracker.dirty() && !new_tracker.dirty()) { 435 if (old_tracker.dirty() && !new_tracker.dirty()) {
310 DCHECK(ContainsKey(dirty_trackers_, tracker_id) || 436 DCHECK(ContainsKey(dirty_trackers_, tracker_id) ||
311 ContainsKey(demoted_dirty_trackers_, tracker_id)); 437 ContainsKey(demoted_dirty_trackers_, tracker_id));
438
439 DVLOG(3) << " Remove from dirty_trackers_: " << tracker_id;
440
312 dirty_trackers_.erase(tracker_id); 441 dirty_trackers_.erase(tracker_id);
313 demoted_dirty_trackers_.erase(tracker_id); 442 demoted_dirty_trackers_.erase(tracker_id);
314 } else if (!old_tracker.dirty() && new_tracker.dirty()) { 443 } else if (!old_tracker.dirty() && new_tracker.dirty()) {
315 DCHECK(!ContainsKey(dirty_trackers_, tracker_id)); 444 DCHECK(!ContainsKey(dirty_trackers_, tracker_id));
316 DCHECK(!ContainsKey(demoted_dirty_trackers_, tracker_id)); 445 DCHECK(!ContainsKey(demoted_dirty_trackers_, tracker_id));
446
447 DVLOG(3) << " Add to dirty_trackers_: " << tracker_id;
448
317 dirty_trackers_.insert(tracker_id); 449 dirty_trackers_.insert(tracker_id);
450 demoted_dirty_trackers_.erase(tracker_id);
nhiroki 2014/03/05 04:13:38 You've already checked that |demoted_dirty_tracker
tzik 2014/03/05 05:18:40 Ah, that's true. Removed.
318 } 451 }
319 } 452 }
320 453
321 void MetadataDatabaseIndex::RemoveFromDirtyTrackerIndexes( 454 void MetadataDatabaseIndex::RemoveFromDirtyTrackerIndexes(
322 const FileTracker& tracker) { 455 const FileTracker& tracker) {
323 if (tracker.dirty()) { 456 if (tracker.dirty()) {
324 int64 tracker_id = tracker.tracker_id(); 457 int64 tracker_id = tracker.tracker_id();
325 DCHECK(ContainsKey(dirty_trackers_, tracker_id) || 458 DCHECK(ContainsKey(dirty_trackers_, tracker_id) ||
326 ContainsKey(demoted_dirty_trackers_, tracker_id)); 459 ContainsKey(demoted_dirty_trackers_, tracker_id));
460
461 DVLOG(3) << " Remove from dirty_trackers_: " << tracker_id;
327 dirty_trackers_.erase(tracker_id); 462 dirty_trackers_.erase(tracker_id);
463
328 demoted_dirty_trackers_.erase(tracker_id); 464 demoted_dirty_trackers_.erase(tracker_id);
329 } 465 }
330 } 466 }
331 467
332 } // namespace drive_backend 468 } // namespace drive_backend
333 } // namespace sync_file_system 469 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698