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

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

Issue 388913005: [SyncFS] Migrate ServiceMetadata from MDDB to MDDBIndex. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Work for nits Created 6 years, 5 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 "base/metrics/histogram.h" 7 #include "base/metrics/histogram.h"
8 #include "base/strings/string_number_conversions.h" 8 #include "base/strings/string_number_conversions.h"
9 #include "base/strings/string_util.h" 9 #include "base/strings/string_util.h"
10 #include "base/threading/thread_restrictions.h"
10 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants. h" 11 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants. h"
11 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_util.h" 12 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_util.h"
12 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" 13 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h"
13 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h" 14 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h"
14 #include "chrome/browser/sync_file_system/logger.h" 15 #include "chrome/browser/sync_file_system/logger.h"
15 #include "third_party/leveldatabase/src/include/leveldb/db.h" 16 #include "third_party/leveldatabase/src/include/leveldb/db.h"
16 #include "third_party/leveldatabase/src/include/leveldb/write_batch.h" 17 #include "third_party/leveldatabase/src/include/leveldb/write_batch.h"
17 18
18 // LevelDB database schema 19 // LevelDB database schema
19 // ======================= 20 // =======================
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 PutFileMetadataDeletionToBatch(metadata->file_id(), batch); 193 PutFileMetadataDeletionToBatch(metadata->file_id(), batch);
193 } 194 }
194 } 195 }
195 contents->file_metadata = referred_file_metadata.Pass(); 196 contents->file_metadata = referred_file_metadata.Pass();
196 } 197 }
197 198
198 } // namespace 199 } // namespace
199 200
200 // static 201 // static
201 scoped_ptr<MetadataDatabaseIndex> 202 scoped_ptr<MetadataDatabaseIndex>
202 MetadataDatabaseIndex::Create(leveldb::DB* db, 203 MetadataDatabaseIndex::Create(leveldb::DB* db, leveldb::WriteBatch* batch) {
203 int64 sync_root_tracker_id, 204 DCHECK(db);
204 leveldb::WriteBatch* batch) { 205 DCHECK(batch);
206
207 scoped_ptr<ServiceMetadata> service_metadata = InitializeServiceMetadata(db);
205 DatabaseContents contents; 208 DatabaseContents contents;
206 ReadDatabaseContents(db, &contents); 209 ReadDatabaseContents(db, &contents);
207 RemoveUnreachableItems(&contents, sync_root_tracker_id, batch); 210 RemoveUnreachableItems(&contents,
211 service_metadata->sync_root_tracker_id(),
212 batch);
208 213
209 scoped_ptr<MetadataDatabaseIndex> index(new MetadataDatabaseIndex); 214 scoped_ptr<MetadataDatabaseIndex> index(new MetadataDatabaseIndex);
210 index->Initialize(&contents); 215 index->Initialize(service_metadata.Pass(), &contents);
211 return index.Pass(); 216 return index.Pass();
212 } 217 }
213 218
214 // static 219 // static
215 scoped_ptr<MetadataDatabaseIndex> 220 scoped_ptr<MetadataDatabaseIndex>
216 MetadataDatabaseIndex::CreateForTesting(DatabaseContents* contents) { 221 MetadataDatabaseIndex::CreateForTesting(DatabaseContents* contents) {
217 scoped_ptr<MetadataDatabaseIndex> index(new MetadataDatabaseIndex); 222 scoped_ptr<MetadataDatabaseIndex> index(new MetadataDatabaseIndex);
218 index->Initialize(contents); 223 index->Initialize(make_scoped_ptr(new ServiceMetadata), contents);
219 return index.Pass(); 224 return index.Pass();
220 } 225 }
221 226
222 void MetadataDatabaseIndex::Initialize(DatabaseContents* contents) { 227 void MetadataDatabaseIndex::Initialize(
228 scoped_ptr<ServiceMetadata> service_metadata,
229 DatabaseContents* contents) {
230 service_metadata_ = service_metadata.Pass();
231
223 for (size_t i = 0; i < contents->file_metadata.size(); ++i) 232 for (size_t i = 0; i < contents->file_metadata.size(); ++i)
224 StoreFileMetadata(make_scoped_ptr(contents->file_metadata[i]), NULL); 233 StoreFileMetadata(make_scoped_ptr(contents->file_metadata[i]), NULL);
225 contents->file_metadata.weak_clear(); 234 contents->file_metadata.weak_clear();
226 235
227 for (size_t i = 0; i < contents->file_trackers.size(); ++i) 236 for (size_t i = 0; i < contents->file_trackers.size(); ++i)
228 StoreFileTracker(make_scoped_ptr(contents->file_trackers[i]), NULL); 237 StoreFileTracker(make_scoped_ptr(contents->file_trackers[i]), NULL);
229 contents->file_trackers.weak_clear(); 238 contents->file_trackers.weak_clear();
230 239
231 UMA_HISTOGRAM_COUNTS("SyncFileSystem.MetadataNumber", metadata_by_id_.size()); 240 UMA_HISTOGRAM_COUNTS("SyncFileSystem.MetadataNumber", metadata_by_id_.size());
232 UMA_HISTOGRAM_COUNTS("SyncFileSystem.TrackerNumber", tracker_by_id_.size()); 241 UMA_HISTOGRAM_COUNTS("SyncFileSystem.TrackerNumber", tracker_by_id_.size());
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 } 413 }
405 414
406 size_t MetadataDatabaseIndex::CountFileMetadata() const { 415 size_t MetadataDatabaseIndex::CountFileMetadata() const {
407 return metadata_by_id_.size(); 416 return metadata_by_id_.size();
408 } 417 }
409 418
410 size_t MetadataDatabaseIndex::CountFileTracker() const { 419 size_t MetadataDatabaseIndex::CountFileTracker() const {
411 return tracker_by_id_.size(); 420 return tracker_by_id_.size();
412 } 421 }
413 422
423 void MetadataDatabaseIndex::SetSyncRootTrackerID(
424 int64 sync_root_id, leveldb::WriteBatch* batch) const {
425 service_metadata_->set_sync_root_tracker_id(sync_root_id);
426 PutServiceMetadataToBatch(*service_metadata_, batch);
427 }
428
429 void MetadataDatabaseIndex::SetLargestChangeID(
430 int64 largest_change_id, leveldb::WriteBatch* batch) const {
431 service_metadata_->set_largest_change_id(largest_change_id);
432 PutServiceMetadataToBatch(*service_metadata_, batch);
433 }
434
435 void MetadataDatabaseIndex::SetNextTrackerID(
436 int64 next_tracker_id, leveldb::WriteBatch* batch) const {
437 service_metadata_->set_next_tracker_id(next_tracker_id);
438 PutServiceMetadataToBatch(*service_metadata_, batch);
439 }
440
441 int64 MetadataDatabaseIndex::GetSyncRootTrackerID() const {
442 if (!service_metadata_->has_sync_root_tracker_id())
443 return kInvalidTrackerID;
444 return service_metadata_->sync_root_tracker_id();
445 }
446
447 int64 MetadataDatabaseIndex::GetLargestChangeID() const {
448 if (!service_metadata_->has_largest_change_id())
449 return kInvalidTrackerID;
450 return service_metadata_->largest_change_id();
451 }
452
453 int64 MetadataDatabaseIndex::GetNextTrackerID() const {
454 if (!service_metadata_->has_next_tracker_id()) {
455 NOTREACHED();
456 return kInvalidTrackerID;
457 }
458 return service_metadata_->next_tracker_id();
459 }
460
414 std::vector<std::string> MetadataDatabaseIndex::GetRegisteredAppIDs() const { 461 std::vector<std::string> MetadataDatabaseIndex::GetRegisteredAppIDs() const {
415 std::vector<std::string> result; 462 std::vector<std::string> result;
416 result.reserve(app_root_by_app_id_.size()); 463 result.reserve(app_root_by_app_id_.size());
417 for (TrackerIDByAppID::const_iterator itr = app_root_by_app_id_.begin(); 464 for (TrackerIDByAppID::const_iterator itr = app_root_by_app_id_.begin();
418 itr != app_root_by_app_id_.end(); ++itr) 465 itr != app_root_by_app_id_.end(); ++itr)
419 result.push_back(itr->first); 466 result.push_back(itr->first);
420 return result; 467 return result;
421 } 468 }
422 469
423 std::vector<int64> MetadataDatabaseIndex::GetAllTrackerIDs() const { 470 std::vector<int64> MetadataDatabaseIndex::GetAllTrackerIDs() const {
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
689 736
690 DVLOG(3) << " Remove from dirty_trackers_: " << tracker_id; 737 DVLOG(3) << " Remove from dirty_trackers_: " << tracker_id;
691 dirty_trackers_.erase(tracker_id); 738 dirty_trackers_.erase(tracker_id);
692 739
693 demoted_dirty_trackers_.erase(tracker_id); 740 demoted_dirty_trackers_.erase(tracker_id);
694 } 741 }
695 } 742 }
696 743
697 } // namespace drive_backend 744 } // namespace drive_backend
698 } // namespace sync_file_system 745 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698