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

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: "
128 << tracker->tracker_id() << " " << GetTrackerTitle(*tracker);
129
121 RemoveFromAppIDIndex(*tracker); 130 RemoveFromAppIDIndex(*tracker);
122 RemoveFromPathIndexes(*tracker); 131 RemoveFromPathIndexes(*tracker);
123 RemoveFromFileIDIndexes(*tracker); 132 RemoveFromFileIDIndexes(*tracker);
124 RemoveFromDirtyTrackerIndexes(*tracker); 133 RemoveFromDirtyTrackerIndexes(*tracker);
125 134
126 tracker_by_id_.erase(tracker_id); 135 tracker_by_id_.erase(tracker_id);
127 } 136 }
128 137
129 TrackerIDSet MetadataDatabaseIndex::GetFileTrackerIDsByFileID( 138 TrackerIDSet MetadataDatabaseIndex::GetFileTrackerIDsByFileID(
130 const std::string& file_id) const { 139 const std::string& file_id) const {
131 return FindItem(trackers_by_file_id_, file_id); 140 return FindItem(trackers_by_file_id_, file_id);
132 } 141 }
133 142
134 int64 MetadataDatabaseIndex::GetAppRootTracker( 143 int64 MetadataDatabaseIndex::GetAppRootTracker(
135 const std::string& app_id) const { 144 const std::string& app_id) const {
136 return FindItem(app_root_by_app_id_, app_id); 145 return FindItem(app_root_by_app_id_, app_id);
137 } 146 }
138 147
139 TrackerIDSet MetadataDatabaseIndex::GetFileTrackerIDsByParentAndTitle( 148 TrackerIDSet MetadataDatabaseIndex::GetFileTrackerIDsByParentAndTitle(
140 int64 parent_tracker_id, 149 int64 parent_tracker_id,
141 const std::string& title) const { 150 const std::string& title) const {
142 TrackerIDsByParentAndTitle::const_iterator found = 151 TrackerIDsByParentAndTitle::const_iterator found =
143 trackers_by_parent_and_title_.find(parent_tracker_id); 152 trackers_by_parent_and_title_.find(parent_tracker_id);
144 if (found == trackers_by_parent_and_title_.end()) 153 if (found == trackers_by_parent_and_title_.end())
145 return TrackerIDSet(); 154 return TrackerIDSet();
146 return FindItem(found->second, title); 155 return FindItem(found->second, title);
147 } 156 }
148 157
158 std::vector<int64> MetadataDatabaseIndex::GetFileTrackerIDsByParent(
159 int64 parent_tracker_id) const {
160 std::vector<int64> result;
161 TrackerIDsByParentAndTitle::const_iterator found =
162 trackers_by_parent_and_title_.find(parent_tracker_id);
163 if (found == trackers_by_parent_and_title_.end())
164 return result;
165
166 for (TrackerIDsByTitle::const_iterator itr = found->second.begin();
167 itr != found->second.end(); ++itr) {
168 result.insert(result.end(), itr->second.begin(), itr->second.end());
169 }
170
171 return result;
172 }
173
149 std::string MetadataDatabaseIndex::PickMultiTrackerFileID() const { 174 std::string MetadataDatabaseIndex::PickMultiTrackerFileID() const {
150 if (multi_tracker_file_ids_.empty()) 175 if (multi_tracker_file_ids_.empty())
151 return std::string(); 176 return std::string();
152 return *multi_tracker_file_ids_.begin(); 177 return *multi_tracker_file_ids_.begin();
153 } 178 }
154 179
155 ParentIDAndTitle MetadataDatabaseIndex::PickMultiBackingFilePath() const { 180 ParentIDAndTitle MetadataDatabaseIndex::PickMultiBackingFilePath() const {
156 if (multi_backing_file_paths_.empty()) 181 if (multi_backing_file_paths_.empty())
157 return ParentIDAndTitle(kInvalidTrackerID, std::string()); 182 return ParentIDAndTitle(kInvalidTrackerID, std::string());
158 return *multi_backing_file_paths_.begin(); 183 return *multi_backing_file_paths_.begin();
159 } 184 }
160 185
161 int64 MetadataDatabaseIndex::PickDirtyTracker() const { 186 int64 MetadataDatabaseIndex::PickDirtyTracker() const {
162 if (dirty_trackers_.empty()) 187 if (dirty_trackers_.empty())
163 return kInvalidTrackerID; 188 return kInvalidTrackerID;
164 return *dirty_trackers_.begin(); 189 return *dirty_trackers_.begin();
165 } 190 }
166 191
167 void MetadataDatabaseIndex::DemoteDirtyTracker(int64 tracker_id) { 192 void MetadataDatabaseIndex::DemoteDirtyTracker(int64 tracker_id) {
168 if (dirty_trackers_.erase(tracker_id)) 193 if (dirty_trackers_.erase(tracker_id))
169 demoted_dirty_trackers_.insert(tracker_id); 194 demoted_dirty_trackers_.insert(tracker_id);
170 } 195 }
171 196
197 bool MetadataDatabaseIndex::HasDemotedDirtyTracker() const {
198 return !demoted_dirty_trackers_.empty();
199 }
200
172 void MetadataDatabaseIndex::PromoteDemotedDirtyTrackers() { 201 void MetadataDatabaseIndex::PromoteDemotedDirtyTrackers() {
173 dirty_trackers_.insert(demoted_dirty_trackers_.begin(), 202 dirty_trackers_.insert(demoted_dirty_trackers_.begin(),
174 demoted_dirty_trackers_.end()); 203 demoted_dirty_trackers_.end());
175 demoted_dirty_trackers_.clear(); 204 demoted_dirty_trackers_.clear();
176 } 205 }
177 206
207 std::vector<std::string> MetadataDatabaseIndex::GetRegisteredAppIDs() const {
208 std::vector<std::string> result;
209 result.reserve(app_root_by_app_id_.size());
210 for (TrackerIDByAppID::const_iterator itr = app_root_by_app_id_.begin();
211 itr != app_root_by_app_id_.end(); ++itr)
212 result.push_back(itr->first);
213 return result;
214 }
215
178 void MetadataDatabaseIndex::AddToAppIDIndex( 216 void MetadataDatabaseIndex::AddToAppIDIndex(
179 const FileTracker& new_tracker) { 217 const FileTracker& new_tracker) {
180 if (!IsAppRoot(new_tracker)) 218 if (!IsAppRoot(new_tracker))
181 return; 219 return;
182 220
221 DVLOG(3) << " Add to app_root_by_app_id_: " << new_tracker.app_id();
222
183 DCHECK(new_tracker.active()); 223 DCHECK(new_tracker.active());
184 DCHECK(!ContainsKey(app_root_by_app_id_, new_tracker.app_id())); 224 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(); 225 app_root_by_app_id_[new_tracker.app_id()] = new_tracker.tracker_id();
186 } 226 }
187 227
188 void MetadataDatabaseIndex::UpdateInAppIDIndex( 228 void MetadataDatabaseIndex::UpdateInAppIDIndex(
189 const FileTracker& old_tracker, 229 const FileTracker& old_tracker,
190 const FileTracker& new_tracker) { 230 const FileTracker& new_tracker) {
191 DCHECK_EQ(old_tracker.tracker_id(), new_tracker.tracker_id()); 231 DCHECK_EQ(old_tracker.tracker_id(), new_tracker.tracker_id());
192 232
193 if (IsAppRoot(old_tracker) && !IsAppRoot(new_tracker)) { 233 if (IsAppRoot(old_tracker) && !IsAppRoot(new_tracker)) {
194 DCHECK(old_tracker.active()); 234 DCHECK(old_tracker.active());
195 DCHECK(!new_tracker.active()); 235 DCHECK(!new_tracker.active());
196 DCHECK(ContainsKey(app_root_by_app_id_, old_tracker.app_id())); 236 DCHECK(ContainsKey(app_root_by_app_id_, old_tracker.app_id()));
237
238 DVLOG(3) << " Remove from app_root_by_app_id_: " << old_tracker.app_id();
239
197 app_root_by_app_id_.erase(old_tracker.app_id()); 240 app_root_by_app_id_.erase(old_tracker.app_id());
198 } else if (!IsAppRoot(old_tracker) && IsAppRoot(new_tracker)) { 241 } else if (!IsAppRoot(old_tracker) && IsAppRoot(new_tracker)) {
199 DCHECK(!old_tracker.active()); 242 DCHECK(!old_tracker.active());
200 DCHECK(new_tracker.active()); 243 DCHECK(new_tracker.active());
201 DCHECK(!ContainsKey(app_root_by_app_id_, new_tracker.app_id())); 244 DCHECK(!ContainsKey(app_root_by_app_id_, new_tracker.app_id()));
245
246 DVLOG(3) << " Add to app_root_by_app_id_: " << new_tracker.app_id();
247
202 app_root_by_app_id_[new_tracker.app_id()] = new_tracker.tracker_id(); 248 app_root_by_app_id_[new_tracker.app_id()] = new_tracker.tracker_id();
203 } 249 }
204 } 250 }
205 251
206 void MetadataDatabaseIndex::RemoveFromAppIDIndex( 252 void MetadataDatabaseIndex::RemoveFromAppIDIndex(
207 const FileTracker& tracker) { 253 const FileTracker& tracker) {
208 if (IsAppRoot(tracker)) { 254 if (IsAppRoot(tracker)) {
209 DCHECK(tracker.active()); 255 DCHECK(tracker.active());
210 DCHECK(ContainsKey(app_root_by_app_id_, tracker.app_id())); 256 DCHECK(ContainsKey(app_root_by_app_id_, tracker.app_id()));
257
258 DVLOG(3) << " Remove from app_root_by_app_id_: " << tracker.app_id();
259
211 app_root_by_app_id_.erase(tracker.app_id()); 260 app_root_by_app_id_.erase(tracker.app_id());
212 } 261 }
213 } 262 }
214 263
215 void MetadataDatabaseIndex::AddToFileIDIndexes( 264 void MetadataDatabaseIndex::AddToFileIDIndexes(
216 const FileTracker& new_tracker) { 265 const FileTracker& new_tracker) {
266 DVLOG(3) << " Add to trackers_by_file_id_: " << new_tracker.file_id();
267
217 trackers_by_file_id_[new_tracker.file_id()].Insert(new_tracker); 268 trackers_by_file_id_[new_tracker.file_id()].Insert(new_tracker);
218 269
219 if (trackers_by_file_id_[new_tracker.file_id()].size() > 1) 270 if (trackers_by_file_id_[new_tracker.file_id()].size() > 1) {
271 DVLOG_IF(3, !ContainsKey(multi_tracker_file_ids_, new_tracker.file_id()))
272 << " Add to multi_tracker_file_ids_: " << new_tracker.file_id();
220 multi_tracker_file_ids_.insert(new_tracker.file_id()); 273 multi_tracker_file_ids_.insert(new_tracker.file_id());
274 }
221 } 275 }
222 276
223 void MetadataDatabaseIndex::UpdateInFileIDIndexes( 277 void MetadataDatabaseIndex::UpdateInFileIDIndexes(
224 const FileTracker& old_tracker, 278 const FileTracker& old_tracker,
225 const FileTracker& new_tracker) { 279 const FileTracker& new_tracker) {
226 DCHECK_EQ(old_tracker.tracker_id(), new_tracker.tracker_id()); 280 DCHECK_EQ(old_tracker.tracker_id(), new_tracker.tracker_id());
227 DCHECK_EQ(old_tracker.file_id(), new_tracker.file_id()); 281 DCHECK_EQ(old_tracker.file_id(), new_tracker.file_id());
228 282
229 std::string file_id = new_tracker.file_id(); 283 std::string file_id = new_tracker.file_id();
230 DCHECK(ContainsKey(trackers_by_file_id_, file_id)); 284 DCHECK(ContainsKey(trackers_by_file_id_, file_id));
231 285
232 if (old_tracker.active() && !new_tracker.active()) 286 if (old_tracker.active() && !new_tracker.active())
233 trackers_by_file_id_[file_id].Deactivate(new_tracker.tracker_id()); 287 trackers_by_file_id_[file_id].Deactivate(new_tracker.tracker_id());
234 else if (!old_tracker.active() && new_tracker.active()) 288 else if (!old_tracker.active() && new_tracker.active())
235 trackers_by_file_id_[file_id].Activate(new_tracker.tracker_id()); 289 trackers_by_file_id_[file_id].Activate(new_tracker.tracker_id());
236 } 290 }
237 291
238 void MetadataDatabaseIndex::RemoveFromFileIDIndexes( 292 void MetadataDatabaseIndex::RemoveFromFileIDIndexes(
239 const FileTracker& tracker) { 293 const FileTracker& tracker) {
240 DCHECK(ContainsKey(trackers_by_file_id_, tracker.file_id())); 294 TrackerIDsByFileID::iterator found =
241 trackers_by_file_id_.erase(tracker.file_id()); 295 trackers_by_file_id_.find(tracker.file_id());
296 if (found == trackers_by_file_id_.end()) {
297 NOTREACHED();
298 return;
299 }
242 300
243 if (trackers_by_file_id_[tracker.file_id()].size() <= 1) 301 DVLOG(3) << " Remove from trackers_by_file_id_: "
302 << tracker.tracker_id();
303 found->second.Erase(tracker.tracker_id());
304
305 if (trackers_by_file_id_[tracker.file_id()].size() <= 1) {
306 DVLOG_IF(3, ContainsKey(multi_tracker_file_ids_, tracker.file_id()))
307 << " Remove from multi_tracker_file_ids_: " << tracker.file_id();
244 multi_tracker_file_ids_.erase(tracker.file_id()); 308 multi_tracker_file_ids_.erase(tracker.file_id());
309 }
310
311 if (found->second.empty())
312 trackers_by_file_id_.erase(found);
245 } 313 }
246 314
247 void MetadataDatabaseIndex::AddToPathIndexes( 315 void MetadataDatabaseIndex::AddToPathIndexes(
248 const FileTracker& new_tracker) { 316 const FileTracker& new_tracker) {
249 int64 parent = new_tracker.parent_tracker_id(); 317 int64 parent = new_tracker.parent_tracker_id();
250 std::string title = GetTrackerTitle(new_tracker); 318 std::string title = GetTrackerTitle(new_tracker);
319
320 DVLOG(3) << " Add to trackers_by_parent_and_title_: "
321 << parent << " " << title;
322
251 trackers_by_parent_and_title_[parent][title].Insert(new_tracker); 323 trackers_by_parent_and_title_[parent][title].Insert(new_tracker);
252 324
253 if (trackers_by_parent_and_title_[parent][title].size() > 1) 325 if (trackers_by_parent_and_title_[parent][title].size() > 1) {
326 DVLOG_IF(3, !ContainsKey(multi_backing_file_paths_,
327 ParentIDAndTitle(parent, title)))
328 << " Add to multi_backing_file_paths_: " << parent << " " << title;
254 multi_backing_file_paths_.insert(ParentIDAndTitle(parent, title)); 329 multi_backing_file_paths_.insert(ParentIDAndTitle(parent, title));
330 }
255 } 331 }
256 332
257 void MetadataDatabaseIndex::UpdateInPathIndexes( 333 void MetadataDatabaseIndex::UpdateInPathIndexes(
258 const FileTracker& old_tracker, 334 const FileTracker& old_tracker,
259 const FileTracker& new_tracker) { 335 const FileTracker& new_tracker) {
260 DCHECK_EQ(old_tracker.tracker_id(), new_tracker.tracker_id()); 336 DCHECK_EQ(old_tracker.tracker_id(), new_tracker.tracker_id());
261 DCHECK_EQ(old_tracker.parent_tracker_id(), new_tracker.parent_tracker_id()); 337 DCHECK_EQ(old_tracker.parent_tracker_id(), new_tracker.parent_tracker_id());
262 DCHECK_EQ(GetTrackerTitle(old_tracker), GetTrackerTitle(new_tracker)); 338 DCHECK(GetTrackerTitle(old_tracker) == GetTrackerTitle(new_tracker) ||
339 !old_tracker.has_synced_details());
263 340
264 int64 tracker_id = new_tracker.tracker_id(); 341 int64 tracker_id = new_tracker.tracker_id();
265 int64 parent = new_tracker.parent_tracker_id(); 342 int64 parent = new_tracker.parent_tracker_id();
343 std::string old_title = GetTrackerTitle(old_tracker);
266 std::string title = GetTrackerTitle(new_tracker); 344 std::string title = GetTrackerTitle(new_tracker);
267 345
346 TrackerIDsByTitle* trackers_by_title = &trackers_by_parent_and_title_[parent];
347
348 if (old_title != title) {
349 TrackerIDsByTitle::iterator found = trackers_by_title->find(old_title);
350 if (found != trackers_by_title->end()) {
351 DVLOG(3) << " Remove from trackers_by_parent_and_title_: "
352 << parent << " " << old_title;
353
354 found->second.Erase(tracker_id);
355 if (found->second.empty())
356 trackers_by_title->erase(found);
357 } else {
358 NOTREACHED();
359 }
360
361 DVLOG(3) << " Add to trackers_by_parent_and_title_: "
362 << parent << " " << title;
363
364 (*trackers_by_title)[title].Insert(new_tracker);
365
366 if (trackers_by_parent_and_title_[parent][old_title].size() <= 1) {
367 DVLOG_IF(3, ContainsKey(multi_backing_file_paths_,
368 ParentIDAndTitle(parent, title)))
369 << " Remove from multi_backing_file_paths_: "
370 << parent << " " << title;
371 multi_backing_file_paths_.erase(ParentIDAndTitle(parent, title));
372 }
373
374 if (trackers_by_parent_and_title_[parent][title].size() > 1) {
375 DVLOG_IF(3, !ContainsKey(multi_backing_file_paths_,
376 ParentIDAndTitle(parent, title)))
377 << " Add to multi_backing_file_paths_: " << parent << " " << title;
378 multi_backing_file_paths_.insert(ParentIDAndTitle(parent, title));
379 }
380
381 return;
382 }
383
268 if (old_tracker.active() && !new_tracker.active()) 384 if (old_tracker.active() && !new_tracker.active())
269 trackers_by_parent_and_title_[parent][title].Deactivate(tracker_id); 385 trackers_by_parent_and_title_[parent][title].Deactivate(tracker_id);
270 else if (!old_tracker.active() && new_tracker.active()) 386 else if (!old_tracker.active() && new_tracker.active())
271 trackers_by_parent_and_title_[parent][title].Activate(tracker_id); 387 trackers_by_parent_and_title_[parent][title].Activate(tracker_id);
272 } 388 }
273 389
274 void MetadataDatabaseIndex::RemoveFromPathIndexes( 390 void MetadataDatabaseIndex::RemoveFromPathIndexes(
275 const FileTracker& tracker) { 391 const FileTracker& tracker) {
276 int64 tracker_id = tracker.tracker_id(); 392 int64 tracker_id = tracker.tracker_id();
277 int64 parent = tracker.parent_tracker_id(); 393 int64 parent = tracker.parent_tracker_id();
278 std::string title = GetTrackerTitle(tracker); 394 std::string title = GetTrackerTitle(tracker);
279 395
280 DCHECK(ContainsKey(trackers_by_parent_and_title_, parent)); 396 DCHECK(ContainsKey(trackers_by_parent_and_title_, parent));
281 DCHECK(ContainsKey(trackers_by_parent_and_title_[parent], title)); 397 DCHECK(ContainsKey(trackers_by_parent_and_title_[parent], title));
398
399 DVLOG(3) << " Remove from trackers_by_parent_and_title_: "
400 << parent << " " << title;
401
282 trackers_by_parent_and_title_[parent][title].Erase(tracker_id); 402 trackers_by_parent_and_title_[parent][title].Erase(tracker_id);
283 403
284 if (trackers_by_parent_and_title_[parent][title].size() <= 1) 404 if (trackers_by_parent_and_title_[parent][title].size() <= 1) {
405 DVLOG_IF(3, ContainsKey(multi_backing_file_paths_,
406 ParentIDAndTitle(parent, title)))
407 << " Remove from multi_backing_file_paths_: "
408 << parent << " " << title;
285 multi_backing_file_paths_.erase(ParentIDAndTitle(parent, title)); 409 multi_backing_file_paths_.erase(ParentIDAndTitle(parent, title));
410 }
286 411
287 if (trackers_by_parent_and_title_[parent][title].empty()) { 412 if (trackers_by_parent_and_title_[parent][title].empty()) {
288 trackers_by_parent_and_title_[parent].erase(title); 413 trackers_by_parent_and_title_[parent].erase(title);
289 if (trackers_by_parent_and_title_[parent].empty()) 414 if (trackers_by_parent_and_title_[parent].empty())
290 trackers_by_parent_and_title_.erase(parent); 415 trackers_by_parent_and_title_.erase(parent);
291 } 416 }
292 } 417 }
293 418
294 void MetadataDatabaseIndex::AddToDirtyTrackerIndexes( 419 void MetadataDatabaseIndex::AddToDirtyTrackerIndexes(
295 const FileTracker& new_tracker) { 420 const FileTracker& new_tracker) {
296 DCHECK(!ContainsKey(dirty_trackers_, new_tracker.tracker_id())); 421 DCHECK(!ContainsKey(dirty_trackers_, new_tracker.tracker_id()));
297 DCHECK(!ContainsKey(demoted_dirty_trackers_, new_tracker.tracker_id())); 422 DCHECK(!ContainsKey(demoted_dirty_trackers_, new_tracker.tracker_id()));
298 423
299 if (new_tracker.dirty()) 424 if (new_tracker.dirty()) {
425 DVLOG(3) << " Add to dirty_trackers_: " << new_tracker.tracker_id();
300 dirty_trackers_.insert(new_tracker.tracker_id()); 426 dirty_trackers_.insert(new_tracker.tracker_id());
427 }
301 } 428 }
302 429
303 void MetadataDatabaseIndex::UpdateInDirtyTrackerIndexes( 430 void MetadataDatabaseIndex::UpdateInDirtyTrackerIndexes(
304 const FileTracker& old_tracker, 431 const FileTracker& old_tracker,
305 const FileTracker& new_tracker) { 432 const FileTracker& new_tracker) {
306 DCHECK_EQ(old_tracker.tracker_id(), new_tracker.tracker_id()); 433 DCHECK_EQ(old_tracker.tracker_id(), new_tracker.tracker_id());
307 434
308 int64 tracker_id = new_tracker.tracker_id(); 435 int64 tracker_id = new_tracker.tracker_id();
309 if (old_tracker.dirty() && !new_tracker.dirty()) { 436 if (old_tracker.dirty() && !new_tracker.dirty()) {
310 DCHECK(ContainsKey(dirty_trackers_, tracker_id) || 437 DCHECK(ContainsKey(dirty_trackers_, tracker_id) ||
311 ContainsKey(demoted_dirty_trackers_, tracker_id)); 438 ContainsKey(demoted_dirty_trackers_, tracker_id));
439
440 DVLOG(3) << " Remove from dirty_trackers_: " << tracker_id;
441
312 dirty_trackers_.erase(tracker_id); 442 dirty_trackers_.erase(tracker_id);
313 demoted_dirty_trackers_.erase(tracker_id); 443 demoted_dirty_trackers_.erase(tracker_id);
314 } else if (!old_tracker.dirty() && new_tracker.dirty()) { 444 } else if (!old_tracker.dirty() && new_tracker.dirty()) {
315 DCHECK(!ContainsKey(dirty_trackers_, tracker_id)); 445 DCHECK(!ContainsKey(dirty_trackers_, tracker_id));
316 DCHECK(!ContainsKey(demoted_dirty_trackers_, tracker_id)); 446 DCHECK(!ContainsKey(demoted_dirty_trackers_, tracker_id));
447
448 DVLOG(3) << " Add to dirty_trackers_: " << tracker_id;
449
317 dirty_trackers_.insert(tracker_id); 450 dirty_trackers_.insert(tracker_id);
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