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)) |