Chromium Code Reviews| Index: chrome/browser/sync_file_system/drive_backend/metadata_database_index_on_disk.cc |
| diff --git a/chrome/browser/sync_file_system/drive_backend/metadata_database_index_on_disk.cc b/chrome/browser/sync_file_system/drive_backend/metadata_database_index_on_disk.cc |
| index 9c45ab5ff911bc3175421e6fc27ff7b8df7213f4..3327e5776c1d47a1358459325e5b40178bd000ec 100644 |
| --- a/chrome/browser/sync_file_system/drive_backend/metadata_database_index_on_disk.cc |
| +++ b/chrome/browser/sync_file_system/drive_backend/metadata_database_index_on_disk.cc |
| @@ -10,10 +10,9 @@ |
| #include "base/strings/string_util.h" |
| #include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants.h" |
| #include "chrome/browser/sync_file_system/drive_backend/drive_backend_util.h" |
| +#include "chrome/browser/sync_file_system/drive_backend/leveldb_wrapper.h" |
| #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h" |
| #include "chrome/browser/sync_file_system/logger.h" |
| -#include "third_party/leveldatabase/src/include/leveldb/db.h" |
| -#include "third_party/leveldatabase/src/include/leveldb/write_batch.h" |
| // LevelDB database schema |
| // ======================= |
| @@ -144,11 +143,10 @@ std::string GenerateDemotedDirtyIDKey(int64 tracker_id) { |
| // static |
| scoped_ptr<MetadataDatabaseIndexOnDisk> |
| -MetadataDatabaseIndexOnDisk::Create( |
| - leveldb::DB* db, leveldb::WriteBatch* batch) { |
| +MetadataDatabaseIndexOnDisk::Create(LevelDBWrapper* db) { |
| DCHECK(db); |
| - PutVersionToBatch(kDatabaseOnDiskVersion, batch); |
| + PutVersionToDB(kDatabaseOnDiskVersion, db); |
| scoped_ptr<MetadataDatabaseIndexOnDisk> |
| index(new MetadataDatabaseIndexOnDisk(db)); |
| return index.Pass(); |
| @@ -160,7 +158,7 @@ bool MetadataDatabaseIndexOnDisk::GetFileMetadata( |
| const std::string& file_id, FileMetadata* metadata) const { |
| const std::string key = kFileMetadataKeyPrefix + file_id; |
| std::string value; |
| - leveldb::Status status = db_->Get(leveldb::ReadOptions(), key, &value); |
| + leveldb::Status status = db_->Get(key, &value); |
| if (status.IsNotFound()) |
| return false; |
| @@ -191,7 +189,7 @@ bool MetadataDatabaseIndexOnDisk::GetFileTracker( |
| const std::string key = |
| kFileTrackerKeyPrefix + base::Int64ToString(tracker_id); |
| std::string value; |
| - leveldb::Status status = db_->Get(leveldb::ReadOptions(), key, &value); |
| + leveldb::Status status = db_->Get(key, &value); |
| if (status.IsNotFound()) |
| return false; |
| @@ -218,44 +216,43 @@ bool MetadataDatabaseIndexOnDisk::GetFileTracker( |
| } |
| void MetadataDatabaseIndexOnDisk::StoreFileMetadata( |
| - scoped_ptr<FileMetadata> metadata, leveldb::WriteBatch* batch) { |
| + scoped_ptr<FileMetadata> metadata) { |
| DCHECK(metadata); |
| - PutFileMetadataToBatch(*metadata, batch); |
| + PutFileMetadataToDB(*metadata, db_); |
| } |
| void MetadataDatabaseIndexOnDisk::StoreFileTracker( |
| - scoped_ptr<FileTracker> tracker, leveldb::WriteBatch* batch) { |
| + scoped_ptr<FileTracker> tracker) { |
| DCHECK(tracker); |
| - PutFileTrackerToBatch(*tracker, batch); |
| int64 tracker_id = tracker->tracker_id(); |
| FileTracker old_tracker; |
| if (!GetFileTracker(tracker_id, &old_tracker)) { |
| - DVLOG(3) << "Adding new tracker: " << tracker->tracker_id() |
| + DVLOG(1) << "Adding new tracker: " << tracker->tracker_id() |
|
nhiroki
2014/08/01 09:43:39
It couldn't be good practice to mix non-related ch
peria
2014/08/04 03:13:43
Done.
|
| << " " << GetTrackerTitle(*tracker); |
| - AddToAppIDIndex(*tracker, batch); |
| - AddToFileIDIndexes(*tracker, batch); |
| - AddToPathIndexes(*tracker, batch); |
| - AddToDirtyTrackerIndexes(*tracker, batch); |
| + AddToAppIDIndex(*tracker); |
| + AddToFileIDIndexes(*tracker); |
| + AddToPathIndexes(*tracker); |
| + AddToDirtyTrackerIndexes(*tracker); |
| } else { |
| - DVLOG(3) << "Updating tracker: " << tracker->tracker_id() |
| + DVLOG(1) << "Updating tracker: " << tracker->tracker_id() |
|
nhiroki
2014/08/01 09:43:39
ditto.
peria
2014/08/04 03:13:43
Done.
|
| << " " << GetTrackerTitle(*tracker); |
| - UpdateInAppIDIndex(old_tracker, *tracker, batch); |
| - UpdateInFileIDIndexes(old_tracker, *tracker, batch); |
| - UpdateInPathIndexes(old_tracker, *tracker, batch); |
| - UpdateInDirtyTrackerIndexes(old_tracker, *tracker, batch); |
| + UpdateInAppIDIndex(old_tracker, *tracker); |
| + UpdateInFileIDIndexes(old_tracker, *tracker); |
| + UpdateInPathIndexes(old_tracker, *tracker); |
| + UpdateInDirtyTrackerIndexes(old_tracker, *tracker); |
| + |
| } |
| + |
| + PutFileTrackerToDB(*tracker, db_); |
| } |
| void MetadataDatabaseIndexOnDisk::RemoveFileMetadata( |
| - const std::string& file_id, leveldb::WriteBatch* batch) { |
| - PutFileMetadataDeletionToBatch(file_id, batch); |
| + const std::string& file_id) { |
| + PutFileMetadataDeletionToDB(file_id, db_); |
| } |
| -void MetadataDatabaseIndexOnDisk::RemoveFileTracker( |
| - int64 tracker_id, leveldb::WriteBatch* batch) { |
| - PutFileTrackerDeletionToBatch(tracker_id, batch); |
| - |
| +void MetadataDatabaseIndexOnDisk::RemoveFileTracker(int64 tracker_id) { |
| FileTracker tracker; |
| if (!GetFileTracker(tracker_id, &tracker)) { |
| NOTREACHED(); |
| @@ -264,10 +261,12 @@ void MetadataDatabaseIndexOnDisk::RemoveFileTracker( |
| DVLOG(1) << "Removing tracker: " |
| << tracker.tracker_id() << " " << GetTrackerTitle(tracker); |
| - RemoveFromAppIDIndex(tracker, batch); |
| - RemoveFromFileIDIndexes(tracker, batch); |
| - RemoveFromPathIndexes(tracker, batch); |
| - RemoveFromDirtyTrackerIndexes(tracker, batch); |
| + RemoveFromAppIDIndex(tracker); |
| + RemoveFromFileIDIndexes(tracker); |
| + RemoveFromPathIndexes(tracker); |
| + RemoveFromDirtyTrackerIndexes(tracker); |
| + |
| + PutFileTrackerDeletionToDB(tracker_id, db_); |
| } |
| TrackerIDSet MetadataDatabaseIndexOnDisk::GetFileTrackerIDsByFileID( |
| @@ -281,7 +280,7 @@ int64 MetadataDatabaseIndexOnDisk::GetAppRootTracker( |
| const std::string& app_id) const { |
| const std::string key = GenerateAppRootIDByAppIDKey(app_id); |
| std::string value; |
| - leveldb::Status status = db_->Get(leveldb::ReadOptions(), key, &value); |
| + leveldb::Status status = db_->Get(key, &value); |
| if (status.IsNotFound()) |
| return kInvalidTrackerID; |
| @@ -318,7 +317,7 @@ std::vector<int64> MetadataDatabaseIndexOnDisk::GetFileTrackerIDsByParent( |
| std::vector<int64> result; |
| const std::string prefix = GenerateTrackerIDsByParentIDKeyPrefix(parent_id); |
| - scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions())); |
| + scoped_ptr<LevelDBWrapper::Iterator> itr(db_->NewIterator()); |
| for (itr->Seek(prefix); itr->Valid(); itr->Next()) { |
| const std::string& key(itr->key().ToString()); |
| std::string title_and_id; |
| @@ -337,7 +336,7 @@ std::vector<int64> MetadataDatabaseIndexOnDisk::GetFileTrackerIDsByParent( |
| } |
| std::string MetadataDatabaseIndexOnDisk::PickMultiTrackerFileID() const { |
| - scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions())); |
| + scoped_ptr<LevelDBWrapper::Iterator> itr(db_->NewIterator()); |
| itr->Seek(kMultiTrackerByFileIDKeyPrefix); |
| if (!itr->Valid()) |
| return std::string(); |
| @@ -351,7 +350,7 @@ std::string MetadataDatabaseIndexOnDisk::PickMultiTrackerFileID() const { |
| } |
| ParentIDAndTitle MetadataDatabaseIndexOnDisk::PickMultiBackingFilePath() const { |
| - scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions())); |
| + scoped_ptr<LevelDBWrapper::Iterator> itr(db_->NewIterator()); |
| itr->Seek(kMultiBackingParentAndTitleKeyPrefix); |
| if (!itr->Valid()) |
| return ParentIDAndTitle(); |
| @@ -371,7 +370,7 @@ ParentIDAndTitle MetadataDatabaseIndexOnDisk::PickMultiBackingFilePath() const { |
| } |
| int64 MetadataDatabaseIndexOnDisk::PickDirtyTracker() const { |
| - scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions())); |
| + scoped_ptr<LevelDBWrapper::Iterator> itr(db_->NewIterator()); |
| itr->Seek(kDirtyIDKeyPrefix); |
| if (!itr->Valid()) |
| return kInvalidTrackerID; |
| @@ -387,12 +386,11 @@ int64 MetadataDatabaseIndexOnDisk::PickDirtyTracker() const { |
| return tracker_id; |
| } |
| -void MetadataDatabaseIndexOnDisk::DemoteDirtyTracker( |
| - int64 tracker_id, leveldb::WriteBatch* batch) { |
| +void MetadataDatabaseIndexOnDisk::DemoteDirtyTracker(int64 tracker_id) { |
| const std::string key = GenerateDirtyIDKey(tracker_id); |
| std::string value; |
| - leveldb::Status status = db_->Get(leveldb::ReadOptions(), key, &value); |
| + leveldb::Status status = db_->Get(key, &value); |
| if (status.IsNotFound()) |
| return; |
| if (!status.ok()) { |
| @@ -403,21 +401,20 @@ void MetadataDatabaseIndexOnDisk::DemoteDirtyTracker( |
| return; |
| } |
| - batch->Delete(key); |
| - batch->Put(GenerateDemotedDirtyIDKey(tracker_id), std::string()); |
| + db_->Delete(key); |
| + db_->Put(GenerateDemotedDirtyIDKey(tracker_id), std::string()); |
| } |
| bool MetadataDatabaseIndexOnDisk::HasDemotedDirtyTracker() const { |
| - scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions())); |
| + scoped_ptr<LevelDBWrapper::Iterator> itr(db_->NewIterator()); |
| itr->Seek(kDemotedDirtyIDKeyPrefix); |
| if (!itr->Valid()) |
| return false; |
| return StartsWithASCII(itr->key().ToString(), kDemotedDirtyIDKeyPrefix, true); |
| } |
| -void MetadataDatabaseIndexOnDisk::PromoteDemotedDirtyTrackers( |
| - leveldb::WriteBatch* batch) { |
| - scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions())); |
| +void MetadataDatabaseIndexOnDisk::PromoteDemotedDirtyTrackers() { |
| + scoped_ptr<LevelDBWrapper::Iterator> itr(db_->NewIterator()); |
| for (itr->Seek(kDirtyIDKeyPrefix); itr->Valid(); itr->Next()) { |
| std::string id_str; |
| if (!RemovePrefix(itr->key().ToString(), kDirtyIDKeyPrefix, &id_str)) |
| @@ -427,8 +424,8 @@ void MetadataDatabaseIndexOnDisk::PromoteDemotedDirtyTrackers( |
| if (!base::StringToInt64(id_str, &tracker_id)) |
| continue; |
| - batch->Delete(itr->key()); |
| - batch->Put(GenerateDemotedDirtyIDKey(tracker_id), std::string()); |
| + db_->Delete(itr->key().ToString()); |
| + db_->Put(GenerateDemotedDirtyIDKey(tracker_id), std::string()); |
| } |
| } |
| @@ -437,7 +434,7 @@ size_t MetadataDatabaseIndexOnDisk::CountDirtyTracker() const { |
| // TODO(peria): Store the number of dirty trackers, and do not iterate |
| // everytime. |
| - scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions())); |
| + scoped_ptr<LevelDBWrapper::Iterator> itr(db_->NewIterator()); |
| for (itr->Seek(kDirtyIDKeyPrefix); itr->Valid(); itr->Next()) { |
| if (!StartsWithASCII(itr->key().ToString(), kDirtyIDKeyPrefix, true)) |
| break; |
| @@ -456,7 +453,7 @@ size_t MetadataDatabaseIndexOnDisk::CountDirtyTracker() const { |
| size_t MetadataDatabaseIndexOnDisk::CountFileMetadata() const { |
| // TODO(peria): Cache the number of FileMetadata in the DB. |
| size_t count = 0; |
| - scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions())); |
| + scoped_ptr<LevelDBWrapper::Iterator> itr(db_->NewIterator()); |
| for (itr->Seek(kFileMetadataKeyPrefix); itr->Valid(); itr->Next()) { |
| if (!StartsWithASCII(itr->key().ToString(), kFileMetadataKeyPrefix, true)) |
| break; |
| @@ -468,7 +465,7 @@ size_t MetadataDatabaseIndexOnDisk::CountFileMetadata() const { |
| size_t MetadataDatabaseIndexOnDisk::CountFileTracker() const { |
| // TODO(peria): Cache the number of FileTracker in the DB. |
| size_t count = 0; |
| - scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions())); |
| + scoped_ptr<LevelDBWrapper::Iterator> itr(db_->NewIterator()); |
| for (itr->Seek(kFileTrackerKeyPrefix); itr->Valid(); itr->Next()) { |
| if (!StartsWithASCII(itr->key().ToString(), kFileTrackerKeyPrefix, true)) |
| break; |
| @@ -478,21 +475,21 @@ size_t MetadataDatabaseIndexOnDisk::CountFileTracker() const { |
| } |
| void MetadataDatabaseIndexOnDisk::SetSyncRootTrackerID( |
| - int64 sync_root_id, leveldb::WriteBatch* batch) const { |
| + int64 sync_root_id) const { |
| service_metadata_->set_sync_root_tracker_id(sync_root_id); |
| - PutServiceMetadataToBatch(*service_metadata_, batch); |
| + PutServiceMetadataToDB(*service_metadata_, db_); |
| } |
| void MetadataDatabaseIndexOnDisk::SetLargestChangeID( |
| - int64 largest_change_id, leveldb::WriteBatch* batch) const { |
| + int64 largest_change_id) const { |
| service_metadata_->set_largest_change_id(largest_change_id); |
| - PutServiceMetadataToBatch(*service_metadata_, batch); |
| + PutServiceMetadataToDB(*service_metadata_, db_); |
| } |
| void MetadataDatabaseIndexOnDisk::SetNextTrackerID( |
| - int64 next_tracker_id, leveldb::WriteBatch* batch) const { |
| + int64 next_tracker_id) const { |
| service_metadata_->set_next_tracker_id(next_tracker_id); |
| - PutServiceMetadataToBatch(*service_metadata_, batch); |
| + PutServiceMetadataToDB(*service_metadata_, db_); |
| } |
| int64 MetadataDatabaseIndexOnDisk::GetSyncRootTrackerID() const { |
| @@ -516,7 +513,7 @@ int64 MetadataDatabaseIndexOnDisk::GetNextTrackerID() const { |
| std::vector<std::string> |
| MetadataDatabaseIndexOnDisk::GetRegisteredAppIDs() const { |
| std::vector<std::string> result; |
| - scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions())); |
| + scoped_ptr<LevelDBWrapper::Iterator> itr(db_->NewIterator()); |
| for (itr->Seek(kAppRootIDByAppIDKeyPrefix); itr->Valid(); itr->Next()) { |
| std::string id; |
| if (!RemovePrefix(itr->key().ToString(), kAppRootIDByAppIDKeyPrefix, &id)) |
| @@ -528,7 +525,7 @@ MetadataDatabaseIndexOnDisk::GetRegisteredAppIDs() const { |
| std::vector<int64> MetadataDatabaseIndexOnDisk::GetAllTrackerIDs() const { |
| std::vector<int64> tracker_ids; |
| - scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions())); |
| + scoped_ptr<LevelDBWrapper::Iterator> itr(db_->NewIterator()); |
| for (itr->Seek(kFileTrackerKeyPrefix); itr->Valid(); itr->Next()) { |
| std::string id_str; |
| if (!RemovePrefix(itr->key().ToString(), kFileTrackerKeyPrefix, &id_str)) |
| @@ -545,7 +542,7 @@ std::vector<int64> MetadataDatabaseIndexOnDisk::GetAllTrackerIDs() const { |
| std::vector<std::string> |
| MetadataDatabaseIndexOnDisk::GetAllMetadataIDs() const { |
| std::vector<std::string> file_ids; |
| - scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions())); |
| + scoped_ptr<LevelDBWrapper::Iterator> itr(db_->NewIterator()); |
| for (itr->Seek(kFileMetadataKeyPrefix); itr->Valid(); itr->Next()) { |
| std::string file_id; |
| if (!RemovePrefix(itr->key().ToString(), kFileMetadataKeyPrefix, &file_id)) |
| @@ -555,9 +552,8 @@ MetadataDatabaseIndexOnDisk::GetAllMetadataIDs() const { |
| return file_ids; |
| } |
| -void MetadataDatabaseIndexOnDisk::BuildTrackerIndexes( |
| - leveldb::WriteBatch* batch) { |
| - scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions())); |
| +void MetadataDatabaseIndexOnDisk::BuildTrackerIndexes() { |
| + scoped_ptr<LevelDBWrapper::Iterator> itr(db_->NewIterator()); |
| for (itr->Seek(kFileTrackerKeyPrefix); itr->Valid(); itr->Next()) { |
| if (!RemovePrefix(itr->key().ToString(), kFileTrackerKeyPrefix, NULL)) |
| break; |
| @@ -569,14 +565,14 @@ void MetadataDatabaseIndexOnDisk::BuildTrackerIndexes( |
| continue; |
| } |
| - AddToAppIDIndex(tracker, batch); |
| - AddToFileIDIndexes(tracker, batch); |
| - AddToPathIndexes(tracker, batch); |
| - AddToDirtyTrackerIndexes(tracker, batch); |
| + AddToAppIDIndex(tracker); |
| + AddToFileIDIndexes(tracker); |
| + AddToPathIndexes(tracker); |
| + AddToDirtyTrackerIndexes(tracker); |
| } |
| } |
| -MetadataDatabaseIndexOnDisk::MetadataDatabaseIndexOnDisk(leveldb::DB* db) |
| +MetadataDatabaseIndexOnDisk::MetadataDatabaseIndexOnDisk(LevelDBWrapper* db) |
| : db_(db) { |
| // TODO(peria): Add UMA to measure the number of FileMetadata, FileTracker, |
| // and AppRootId. |
| @@ -584,10 +580,9 @@ MetadataDatabaseIndexOnDisk::MetadataDatabaseIndexOnDisk(leveldb::DB* db) |
| service_metadata_ = InitializeServiceMetadata(db_); |
| } |
| -void MetadataDatabaseIndexOnDisk::AddToAppIDIndex( |
| - const FileTracker& tracker, leveldb::WriteBatch* batch) { |
| +void MetadataDatabaseIndexOnDisk::AddToAppIDIndex(const FileTracker& tracker) { |
| if (!IsAppRoot(tracker)) { |
| - DVLOG(3) << " Tracker for " << tracker.file_id() << " is not an App root."; |
| + DVLOG(1) << " Tracker for " << tracker.file_id() << " is not an App root."; |
|
nhiroki
2014/08/01 09:43:39
ditto.
peria
2014/08/04 03:13:43
Done.
|
| return; |
| } |
| @@ -596,13 +591,12 @@ void MetadataDatabaseIndexOnDisk::AddToAppIDIndex( |
| const std::string db_key = GenerateAppRootIDByAppIDKey(tracker.app_id()); |
| DCHECK(tracker.active()); |
| DCHECK(!DBHasKey(db_key)); |
| - batch->Put(db_key, base::Int64ToString(tracker.tracker_id())); |
| + db_->Put(db_key, base::Int64ToString(tracker.tracker_id())); |
| } |
| void MetadataDatabaseIndexOnDisk::UpdateInAppIDIndex( |
| const FileTracker& old_tracker, |
| - const FileTracker& new_tracker, |
| - leveldb::WriteBatch* batch) { |
| + const FileTracker& new_tracker) { |
| DCHECK_EQ(old_tracker.tracker_id(), new_tracker.tracker_id()); |
| if (IsAppRoot(old_tracker) && !IsAppRoot(new_tracker)) { |
| @@ -612,7 +606,7 @@ void MetadataDatabaseIndexOnDisk::UpdateInAppIDIndex( |
| DCHECK(DBHasKey(key)); |
| DVLOG(1) << " Remove from App root by App ID: " << old_tracker.app_id(); |
| - batch->Delete(key); |
| + db_->Delete(key); |
| } else if (!IsAppRoot(old_tracker) && IsAppRoot(new_tracker)) { |
| DCHECK(!old_tracker.active()); |
| DCHECK(new_tracker.active()); |
| @@ -620,14 +614,14 @@ void MetadataDatabaseIndexOnDisk::UpdateInAppIDIndex( |
| DCHECK(!DBHasKey(key)); |
| DVLOG(1) << " Add to App root by App ID: " << new_tracker.app_id(); |
| - batch->Put(key, base::Int64ToString(new_tracker.tracker_id())); |
| + db_->Put(key, base::Int64ToString(new_tracker.tracker_id())); |
| } |
| } |
| void MetadataDatabaseIndexOnDisk::RemoveFromAppIDIndex( |
| - const FileTracker& tracker, leveldb::WriteBatch* batch) { |
| + const FileTracker& tracker) { |
| if (!IsAppRoot(tracker)) { |
| - DVLOG(3) << " Tracker for " << tracker.file_id() << " is not an App root."; |
| + DVLOG(1) << " Tracker for " << tracker.file_id() << " is not an App root."; |
|
nhiroki
2014/08/01 09:43:39
ditto.
peria
2014/08/04 03:13:43
Done.
|
| return; |
| } |
| @@ -636,58 +630,59 @@ void MetadataDatabaseIndexOnDisk::RemoveFromAppIDIndex( |
| DCHECK(DBHasKey(key)); |
| DVLOG(1) << " Remove from App root by App ID: " << tracker.app_id(); |
| - batch->Delete(key); |
| + db_->Delete(key); |
| } |
| void MetadataDatabaseIndexOnDisk::AddToFileIDIndexes( |
| - const FileTracker& new_tracker, leveldb::WriteBatch* batch) { |
| + const FileTracker& new_tracker) { |
| const std::string& file_id = new_tracker.file_id(); |
| DVLOG(1) << " Add to trackers by file ID: " << file_id; |
| const std::string prefix = GenerateTrackerIDByFileIDKeyPrefix(file_id); |
| AddToTrackerIDSetWithPrefix( |
| GenerateActiveTrackerIDByFileIDKey(file_id), |
| - prefix, new_tracker, batch); |
| + prefix, new_tracker); |
| const std::string multi_tracker_key = GenerateMultiTrackerKey(file_id); |
| if (!DBHasKey(multi_tracker_key) && |
| CountWithPrefix(prefix, new_tracker.tracker_id()) != NONE) { |
| DVLOG(1) << " Add to multi-tracker file IDs: " << file_id; |
| - batch->Put(multi_tracker_key, std::string()); |
| + db_->Put(multi_tracker_key, std::string()); |
| } |
| } |
| void MetadataDatabaseIndexOnDisk::UpdateInFileIDIndexes( |
| const FileTracker& old_tracker, |
| - const FileTracker& new_tracker, |
| - leveldb::WriteBatch* batch) { |
| + const FileTracker& new_tracker) { |
| DCHECK_EQ(old_tracker.tracker_id(), new_tracker.tracker_id()); |
| DCHECK_EQ(old_tracker.file_id(), new_tracker.file_id()); |
| const std::string& file_id = new_tracker.file_id(); |
| const std::string prefix = GenerateTrackerIDByFileIDKeyPrefix(file_id); |
| - DCHECK(DBHasKey(prefix + base::Int64ToString(new_tracker.tracker_id()))); |
| + DCHECK(DBHasKey(prefix + base::Int64ToString(new_tracker.tracker_id()))) |
| + << "Not found: " << prefix + base::Int64ToString(new_tracker.tracker_id()) |
| + << db_->DumpAsString(); |
| if (old_tracker.active() && !new_tracker.active()) { |
| DeactivateInTrackerIDSetWithPrefix( |
| GenerateActiveTrackerIDByFileIDKey(file_id), prefix, |
| - new_tracker.tracker_id(), batch); |
| + new_tracker.tracker_id()); |
| } else if (!old_tracker.active() && new_tracker.active()) { |
| ActivateInTrackerIDSetWithPrefix( |
| GenerateActiveTrackerIDByFileIDKey(file_id), prefix, |
| - new_tracker.tracker_id(), batch); |
| + new_tracker.tracker_id()); |
| } |
| } |
| void MetadataDatabaseIndexOnDisk::RemoveFromFileIDIndexes( |
| - const FileTracker& tracker, leveldb::WriteBatch* batch) { |
| + const FileTracker& tracker) { |
| const std::string& file_id = tracker.file_id(); |
| const std::string prefix = |
| GenerateTrackerIDByFileIDKeyPrefix(file_id); |
| if (!EraseInTrackerIDSetWithPrefix( |
| GenerateActiveTrackerIDByFileIDKey(file_id), |
| - prefix, tracker.tracker_id(), batch)) |
| + prefix, tracker.tracker_id())) |
| return; |
| DVLOG(1) << " Remove from trackers by file ID: " << tracker.tracker_id(); |
| @@ -696,12 +691,12 @@ void MetadataDatabaseIndexOnDisk::RemoveFromFileIDIndexes( |
| if (DBHasKey(multi_key) && |
| CountWithPrefix(prefix, tracker.tracker_id()) != MULTIPLE) { |
| DVLOG(1) << " Remove from multi-tracker file IDs: " << file_id; |
| - batch->Delete(multi_key); |
| + db_->Delete(multi_key); |
| } |
| } |
| void MetadataDatabaseIndexOnDisk::AddToPathIndexes( |
| - const FileTracker& new_tracker, leveldb::WriteBatch* batch) { |
| + const FileTracker& new_tracker) { |
| int64 parent_id = new_tracker.parent_tracker_id(); |
| std::string title = GetTrackerTitle(new_tracker); |
| @@ -710,11 +705,7 @@ void MetadataDatabaseIndexOnDisk::AddToPathIndexes( |
| const std::string prefix = |
| GenerateTrackerIDByParentAndTitleKeyPrefix(parent_id, title); |
| - AddToTrackerIDSetWithPrefix( |
| - GenerateActiveTrackerIDByParentAndTitleKey(parent_id, title), |
| - prefix, new_tracker, batch); |
| - |
| - scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions())); |
| + scoped_ptr<LevelDBWrapper::Iterator> itr(db_->NewIterator()); |
| for (itr->Seek(prefix); itr->Valid(); itr->Next()) { |
| std::string id_str; |
| if (!RemovePrefix(itr->key().ToString(), prefix, &id_str)) |
| @@ -732,16 +723,19 @@ void MetadataDatabaseIndexOnDisk::AddToPathIndexes( |
| GenerateMultiBackingParentAndTitleKey(parent_id, title); |
| DVLOG_IF(1, !DBHasKey(multi_key)) |
| << " Add to multi backing file paths: " << parent_id << " " << title; |
| - batch->Put(GenerateMultiBackingParentAndTitleKey(parent_id, title), |
| + db_->Put(GenerateMultiBackingParentAndTitleKey(parent_id, title), |
| std::string()); |
|
nhiroki
2014/08/01 09:43:39
nit: indent
peria
2014/08/04 03:13:43
Done.
|
| break; |
| } |
| + |
| + AddToTrackerIDSetWithPrefix( |
| + GenerateActiveTrackerIDByParentAndTitleKey(parent_id, title), |
| + prefix, new_tracker); |
| } |
| void MetadataDatabaseIndexOnDisk::UpdateInPathIndexes( |
| const FileTracker& old_tracker, |
| - const FileTracker& new_tracker, |
| - leveldb::WriteBatch* batch) { |
| + const FileTracker& new_tracker) { |
| DCHECK_EQ(old_tracker.tracker_id(), new_tracker.tracker_id()); |
| DCHECK_EQ(old_tracker.parent_tracker_id(), new_tracker.parent_tracker_id()); |
| DCHECK(GetTrackerTitle(old_tracker) == GetTrackerTitle(new_tracker) || |
| @@ -757,7 +751,7 @@ void MetadataDatabaseIndexOnDisk::UpdateInPathIndexes( |
| GenerateTrackerIDByParentAndTitleKeyPrefix(parent_id, old_title); |
| EraseInTrackerIDSetWithPrefix( |
| GenerateActiveTrackerIDByParentAndTitleKey(parent_id, old_title), |
| - old_prefix, tracker_id, batch); |
| + old_prefix, tracker_id); |
| if (!old_title.empty() && |
| CountWithPrefix(old_prefix, tracker_id) != MULTIPLE) { |
| @@ -766,7 +760,7 @@ void MetadataDatabaseIndexOnDisk::UpdateInPathIndexes( |
| DVLOG_IF(1, DBHasKey(old_multi_backing_key)) |
| << " Remove from multi backing file paths: " |
| << parent_id << " " << old_title; |
| - batch->Delete(old_multi_backing_key); |
| + db_->Delete(old_multi_backing_key); |
| } |
| DVLOG(1) << " Add to trackers by parent and title: " |
| @@ -776,7 +770,7 @@ void MetadataDatabaseIndexOnDisk::UpdateInPathIndexes( |
| GenerateTrackerIDByParentAndTitleKeyPrefix(parent_id, title); |
| AddToTrackerIDSetWithPrefix( |
| GenerateActiveTrackerIDByParentAndTitleKey(parent_id, title), |
| - prefix, new_tracker, batch); |
| + prefix, new_tracker); |
| if (CountWithPrefix(prefix, tracker_id) != NONE) { |
| const std::string multi_backing_key = |
| @@ -784,7 +778,7 @@ void MetadataDatabaseIndexOnDisk::UpdateInPathIndexes( |
| DVLOG_IF(1, !DBHasKey(multi_backing_key)) |
| << " Add to multi backing file_paths: " |
| << parent_id << " " << title; |
| - batch->Put(multi_backing_key, std::string()); |
| + db_->Put(multi_backing_key, std::string()); |
| } |
| return; |
| @@ -796,15 +790,15 @@ void MetadataDatabaseIndexOnDisk::UpdateInPathIndexes( |
| GenerateTrackerIDByParentAndTitleKeyPrefix(parent_id, title); |
| if (old_tracker.active() && !new_tracker.active()) { |
| DeactivateInTrackerIDSetWithPrefix( |
| - active_tracker_key, prefix, tracker_id, batch); |
| + active_tracker_key, prefix, tracker_id); |
| } else if (!old_tracker.active() && new_tracker.active()) { |
| ActivateInTrackerIDSetWithPrefix( |
| - active_tracker_key, prefix, tracker_id, batch); |
| + active_tracker_key, prefix, tracker_id); |
| } |
| } |
| void MetadataDatabaseIndexOnDisk::RemoveFromPathIndexes( |
| - const FileTracker& tracker, leveldb::WriteBatch* batch) { |
| + const FileTracker& tracker) { |
| int64 tracker_id = tracker.tracker_id(); |
| int64 parent_id = tracker.parent_tracker_id(); |
| std::string title = GetTrackerTitle(tracker); |
| @@ -817,7 +811,7 @@ void MetadataDatabaseIndexOnDisk::RemoveFromPathIndexes( |
| const std::string key_prefix = |
| GenerateTrackerIDByParentAndTitleKeyPrefix(parent_id, title); |
| if (!EraseInTrackerIDSetWithPrefix( |
| - active_tracker_key, key_prefix, tracker_id, batch)) |
| + active_tracker_key, key_prefix, tracker_id)) |
| return; |
| const std::string multi_key = |
| @@ -826,27 +820,25 @@ void MetadataDatabaseIndexOnDisk::RemoveFromPathIndexes( |
| CountWithPrefix(key_prefix, tracker_id) != MULTIPLE) { |
| DVLOG(1) << " Remove from multi backing file paths: " |
| << parent_id << " " << title; |
| - batch->Delete(multi_key); |
| + db_->Delete(multi_key); |
| } |
| } |
| void MetadataDatabaseIndexOnDisk::AddToDirtyTrackerIndexes( |
| - const FileTracker& new_tracker, |
| - leveldb::WriteBatch* batch) { |
| + const FileTracker& new_tracker) { |
| const std::string dirty_key = GenerateDirtyIDKey(new_tracker.tracker_id()); |
| DCHECK(!DBHasKey(dirty_key)); |
| DCHECK(!DBHasKey(GenerateDemotedDirtyIDKey(new_tracker.tracker_id()))); |
| if (new_tracker.dirty()) { |
| DVLOG(1) << " Add to dirty tracker IDs: " << new_tracker.tracker_id(); |
| - batch->Put(dirty_key, std::string()); |
| + db_->Put(dirty_key, std::string()); |
| } |
| } |
| void MetadataDatabaseIndexOnDisk::UpdateInDirtyTrackerIndexes( |
| const FileTracker& old_tracker, |
| - const FileTracker& new_tracker, |
| - leveldb::WriteBatch* batch) { |
| + const FileTracker& new_tracker) { |
| DCHECK_EQ(old_tracker.tracker_id(), new_tracker.tracker_id()); |
| int64 tracker_id = new_tracker.tracker_id(); |
| @@ -857,20 +849,20 @@ void MetadataDatabaseIndexOnDisk::UpdateInDirtyTrackerIndexes( |
| DVLOG(1) << " Remove from dirty trackers IDs: " << tracker_id; |
| - batch->Delete(dirty_key); |
| - batch->Delete(demoted_key); |
| + db_->Delete(dirty_key); |
| + db_->Delete(demoted_key); |
| } else if (!old_tracker.dirty() && new_tracker.dirty()) { |
| DCHECK(!DBHasKey(dirty_key)); |
| DCHECK(!DBHasKey(demoted_key)); |
| DVLOG(1) << " Add to dirty tracker IDs: " << tracker_id; |
| - batch->Put(dirty_key, std::string()); |
| + db_->Put(dirty_key, std::string()); |
| } |
| } |
| void MetadataDatabaseIndexOnDisk::RemoveFromDirtyTrackerIndexes( |
| - const FileTracker& tracker, leveldb::WriteBatch* batch) { |
| + const FileTracker& tracker) { |
| if (tracker.dirty()) { |
| int64 tracker_id = tracker.tracker_id(); |
| const std::string dirty_key = GenerateDirtyIDKey(tracker_id); |
| @@ -878,8 +870,8 @@ void MetadataDatabaseIndexOnDisk::RemoveFromDirtyTrackerIndexes( |
| DCHECK(DBHasKey(dirty_key) || DBHasKey(demoted_key)); |
| DVLOG(1) << " Remove from dirty tracker IDs: " << tracker_id; |
| - batch->Delete(dirty_key); |
| - batch->Delete(demoted_key); |
| + db_->Delete(dirty_key); |
| + db_->Delete(demoted_key); |
| } |
| } |
| @@ -889,7 +881,7 @@ TrackerIDSet MetadataDatabaseIndexOnDisk::GetTrackerIDSetByPrefix( |
| TrackerIDSet trackers; |
| // Seek IDs. |
| - scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions())); |
| + scoped_ptr<LevelDBWrapper::Iterator> itr(db_->NewIterator()); |
| for (itr->Seek(ids_prefix); itr->Valid(); itr->Next()) { |
| const std::string& key(itr->key().ToString()); |
| std::string id_str; |
| @@ -904,8 +896,7 @@ TrackerIDSet MetadataDatabaseIndexOnDisk::GetTrackerIDSetByPrefix( |
| // Set an active tracker ID, if available. |
| std::string value; |
| - leveldb::Status status = db_->Get(leveldb::ReadOptions(), |
| - active_tracker_key, &value); |
| + leveldb::Status status = db_->Get(active_tracker_key, &value); |
| int64 active_tracker; |
| if (status.ok() && base::StringToInt64(value, &active_tracker) && |
| active_tracker != kInvalidTrackerID) { |
| @@ -917,28 +908,28 @@ TrackerIDSet MetadataDatabaseIndexOnDisk::GetTrackerIDSetByPrefix( |
| void MetadataDatabaseIndexOnDisk::AddToTrackerIDSetWithPrefix( |
| const std::string& active_tracker_key, const std::string& key_prefix, |
| - const FileTracker& tracker, leveldb::WriteBatch* batch) { |
| + const FileTracker& tracker) { |
| DCHECK(tracker.tracker_id()); |
| const std::string id_str = base::Int64ToString(tracker.tracker_id()); |
| - batch->Put(key_prefix + id_str, std::string()); |
| + db_->Put(key_prefix + id_str, std::string()); |
| if (tracker.active()) |
| - batch->Put(active_tracker_key, id_str); |
| + db_->Put(active_tracker_key, id_str); |
| } |
| bool MetadataDatabaseIndexOnDisk::EraseInTrackerIDSetWithPrefix( |
| const std::string& active_tracker_key, const std::string& key_prefix, |
| - int64 tracker_id, leveldb::WriteBatch* batch) { |
| + int64 tracker_id) { |
| std::string value; |
| const std::string del_key = key_prefix + base::Int64ToString(tracker_id); |
| - leveldb::Status status = db_->Get(leveldb::ReadOptions(), del_key, &value); |
| + leveldb::Status status = db_->Get(del_key, &value); |
| if (status.IsNotFound()) |
| return false; |
| - batch->Delete(del_key); |
| + db_->Delete(del_key); |
| size_t count = 0; |
| - scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions())); |
| + scoped_ptr<LevelDBWrapper::Iterator> itr(db_->NewIterator()); |
| for (itr->Seek(key_prefix); itr->Valid(); itr->Next()) { |
| const std::string key = itr->key().ToString(); |
| if (!StartsWithASCII(key, key_prefix, true)) |
| @@ -953,15 +944,15 @@ bool MetadataDatabaseIndexOnDisk::EraseInTrackerIDSetWithPrefix( |
| if (count > 0) { |
| // TrackerIDSet is still alive. Deactivate if the tracker is active. |
| leveldb::Status status = |
| - db_->Get(leveldb::ReadOptions(), active_tracker_key, &value); |
| + db_->Get(active_tracker_key, &value); |
| int64 active_tracker_id; |
| if (status.ok() && base::StringToInt64(value, &active_tracker_id) && |
| active_tracker_id == tracker_id) { |
| - batch->Put(active_tracker_key, base::Int64ToString(kInvalidTrackerID)); |
| + db_->Put(active_tracker_key, base::Int64ToString(kInvalidTrackerID)); |
| } |
| } else { |
| // TrackerIDSet is no longer alive. Erase active tracker entry. |
| - batch->Delete(active_tracker_key); |
| + db_->Delete(active_tracker_key); |
| } |
| return true; |
| @@ -969,36 +960,34 @@ bool MetadataDatabaseIndexOnDisk::EraseInTrackerIDSetWithPrefix( |
| void MetadataDatabaseIndexOnDisk::ActivateInTrackerIDSetWithPrefix( |
| const std::string& active_tracker_key, const std::string& key_prefix, |
| - int64 tracker_id, leveldb::WriteBatch* batch) { |
| + int64 tracker_id) { |
| DCHECK(DBHasKey(key_prefix + base::Int64ToString(tracker_id))); |
| std::string value; |
| - leveldb::Status status = db_->Get(leveldb::ReadOptions(), |
| - active_tracker_key, &value); |
| + leveldb::Status status = db_->Get(active_tracker_key, &value); |
| int64 active_tracker_id; |
| if (status.ok() && base::StringToInt64(value, &active_tracker_id)) { |
| DCHECK(active_tracker_id != tracker_id); |
| - batch->Put(active_tracker_key, base::Int64ToString(tracker_id)); |
| + db_->Put(active_tracker_key, base::Int64ToString(tracker_id)); |
| } |
| } |
| void MetadataDatabaseIndexOnDisk::DeactivateInTrackerIDSetWithPrefix( |
| const std::string& active_tracker_key, const std::string& key_prefix, |
| - int64 tracker_id, leveldb::WriteBatch* batch) { |
| + int64 tracker_id) { |
| DCHECK(DBHasKey(key_prefix + base::Int64ToString(tracker_id))); |
| std::string value; |
| - leveldb::Status status = db_->Get(leveldb::ReadOptions(), |
| - active_tracker_key, &value); |
| + leveldb::Status status = db_->Get(active_tracker_key, &value); |
| int64 active_tracker_id; |
| if (status.ok() && base::StringToInt64(value, &active_tracker_id)) { |
| DCHECK(active_tracker_id == tracker_id); |
| - batch->Put(active_tracker_key, base::Int64ToString(kInvalidTrackerID)); |
| + db_->Put(active_tracker_key, base::Int64ToString(kInvalidTrackerID)); |
| } |
| } |
| bool MetadataDatabaseIndexOnDisk::DBHasKey(const std::string& key) { |
| - scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions())); |
| + scoped_ptr<LevelDBWrapper::Iterator> itr(db_->NewIterator()); |
| itr->Seek(key); |
| return itr->Valid() && (itr->key() == key); |
| } |
| @@ -1009,7 +998,7 @@ MetadataDatabaseIndexOnDisk::CountWithPrefix( |
| const std::string ignored = base::Int64ToString(ignored_id); |
| size_t count = 0; |
| - scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions())); |
| + scoped_ptr<LevelDBWrapper::Iterator> itr(db_->NewIterator()); |
| for (itr->Seek(prefix); itr->Valid() && count <= 1; itr->Next()) { |
| std::string value; |
| if (!RemovePrefix(itr->key().ToString(), prefix, &value)) |