Commit 3103f219 authored by calvinlo@chromium.org's avatar calvinlo@chromium.org

Deprecate DriveMetadataStore.batch_sync_origins

Deprecate batch_sync_origins from DriveMetadataStore so batch
origins are no longer duplicated in both
DriveFileSyncService.pending_batch_sync_origins and
DriveMetadataStore.batch_sync_origins_;

BUG=229764
TEST=DriveMetadataStoreTest.DeprecateBatchSyncOrigins
+ Existing unit_tests --gtest_filter=DriveFileSync*
+ Existing unit_tests --gtest_filter=DriveMeta*

Review URL: https://chromiumcodereview.appspot.com/15410005

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@202502 0039d316-1c4b-4281-b951-d872f2087c98
parent 61d271f3
...@@ -381,19 +381,6 @@ void DriveFileSyncService::DidInitializeMetadataStore( ...@@ -381,19 +381,6 @@ void DriveFileSyncService::DidInitializeMetadataStore(
return; return;
} }
// TODO(calvinlo): Move the code to delete legacy batch_sync_origin keys from
// DB into DriveMetadataStore.InitializeDBOnFileThread.
std::vector<GURL> batch_origins_to_delete;
typedef std::map<GURL, std::string>::const_iterator origin_itr;
for (origin_itr itr = metadata_store_->batch_sync_origins().begin();
itr != metadata_store_->batch_sync_origins().end(); ++itr) {
batch_origins_to_delete.push_back(itr->first);
}
for (std::vector<GURL>::const_iterator itr = batch_origins_to_delete.begin();
itr != batch_origins_to_delete.end(); ++itr) {
metadata_store_->RemoveOrigin(*itr, base::Bind(&EmptyStatusCallback));
}
DCHECK(pending_batch_sync_origins_.empty()); DCHECK(pending_batch_sync_origins_.empty());
UpdateRegisteredOrigins(); UpdateRegisteredOrigins();
...@@ -615,8 +602,7 @@ void DriveFileSyncService::DoApplyLocalChange( ...@@ -615,8 +602,7 @@ void DriveFileSyncService::DoApplyLocalChange(
return; return;
} }
if (!metadata_store_->IsIncrementalSyncOrigin(url.origin()) && if (!metadata_store_->IsIncrementalSyncOrigin(url.origin())) {
!metadata_store_->IsBatchSyncOrigin(url.origin())) {
// We may get called by LocalFileSyncService to sync local changes // We may get called by LocalFileSyncService to sync local changes
// for the origins that are disabled. // for the origins that are disabled.
DVLOG(1) << "Got request for stray origin: " << url.origin().spec(); DVLOG(1) << "Got request for stray origin: " << url.origin().spec();
...@@ -636,7 +622,6 @@ void DriveFileSyncService::UpdateRegisteredOrigins() { ...@@ -636,7 +622,6 @@ void DriveFileSyncService::UpdateRegisteredOrigins() {
ExtensionService* extension_service = ExtensionService* extension_service =
extensions::ExtensionSystem::Get(profile_)->extension_service(); extensions::ExtensionSystem::Get(profile_)->extension_service();
DCHECK(pending_batch_sync_origins_.empty()); DCHECK(pending_batch_sync_origins_.empty());
DCHECK(metadata_store_->batch_sync_origins().empty());
if (!extension_service) if (!extension_service)
return; return;
...@@ -1653,8 +1638,7 @@ bool DriveFileSyncService::GetOriginForEntry( ...@@ -1653,8 +1638,7 @@ bool DriveFileSyncService::GetOriginForEntry(
} }
DCHECK(origin.is_valid()); DCHECK(origin.is_valid());
if (!metadata_store_->IsBatchSyncOrigin(origin) && if (!metadata_store_->IsIncrementalSyncOrigin(origin))
!metadata_store_->IsIncrementalSyncOrigin(origin))
continue; continue;
std::string resource_id(metadata_store_->GetResourceIdForOrigin(origin)); std::string resource_id(metadata_store_->GetResourceIdForOrigin(origin));
if (resource_id.empty()) if (resource_id.empty())
......
...@@ -24,6 +24,10 @@ namespace base { ...@@ -24,6 +24,10 @@ namespace base {
class SequencedTaskRunner; class SequencedTaskRunner;
} }
namespace leveldb {
class DB;
}
class GURL; class GURL;
namespace sync_file_system { namespace sync_file_system {
...@@ -79,14 +83,9 @@ class DriveMetadataStore ...@@ -79,14 +83,9 @@ class DriveMetadataStore
void AddIncrementalSyncOrigin(const GURL& origin, void AddIncrementalSyncOrigin(const GURL& origin,
const std::string& resource_id); const std::string& resource_id);
// Returns true if |origin| is a batch sync origin, a incremental sync origin // Returns true if |origin| is an incremental sync or disabled origin.
// or a disabled origin.
bool IsKnownOrigin(const GURL& origin) const; bool IsKnownOrigin(const GURL& origin) const;
// Returns true if |origin| is a batch sync origin, i.e. the origin's entire
// file list hasn't been fully fetched and processed yet.
bool IsBatchSyncOrigin(const GURL& origin) const;
// Returns true if |origin| is an incremental sync origin, i.e. the origin's // Returns true if |origin| is an incremental sync origin, i.e. the origin's
// entire file list has been cached and is ready to apply changes // entire file list has been cached and is ready to apply changes
// incrementally. // incrementally.
...@@ -118,8 +117,8 @@ class DriveMetadataStore ...@@ -118,8 +117,8 @@ class DriveMetadataStore
SyncStatusCode GetToBeFetchedFiles(URLAndDriveMetadataList* list) const; SyncStatusCode GetToBeFetchedFiles(URLAndDriveMetadataList* list) const;
// Returns resource id for |origin|. // Returns resource id for |origin|.
// This may return an empty string if |origin| is not a batch, incremental // This may return an empty string if |origin| is not a incremental or
// or disabled origin. // disabled origin.
std::string GetResourceIdForOrigin(const GURL& origin) const; std::string GetResourceIdForOrigin(const GURL& origin) const;
const std::string& sync_root_directory() const { const std::string& sync_root_directory() const {
...@@ -127,11 +126,6 @@ class DriveMetadataStore ...@@ -127,11 +126,6 @@ class DriveMetadataStore
return sync_root_directory_resource_id_; return sync_root_directory_resource_id_;
} }
const ResourceIdByOrigin& batch_sync_origins() const {
DCHECK(CalledOnValidThread());
return batch_sync_origins_;
}
const ResourceIdByOrigin& incremental_sync_origins() const { const ResourceIdByOrigin& incremental_sync_origins() const {
DCHECK(CalledOnValidThread()); DCHECK(CalledOnValidThread());
return incremental_sync_origins_; return incremental_sync_origins_;
...@@ -142,8 +136,8 @@ class DriveMetadataStore ...@@ -142,8 +136,8 @@ class DriveMetadataStore
return disabled_origins_; return disabled_origins_;
} }
// Returns all tracked origins. i.e. Union of batch_sync_origins_, // Returns all tracked origins. i.e. incremental_sync_origins_ and
// incremental_sync_origins_ and disabled_origins_. // disabled_origins_.
void GetAllOrigins(std::vector<GURL>* origins); void GetAllOrigins(std::vector<GURL>* origins);
// Maps |resource_id| to corresponding |origin|. // Maps |resource_id| to corresponding |origin|.
...@@ -155,15 +149,6 @@ class DriveMetadataStore ...@@ -155,15 +149,6 @@ class DriveMetadataStore
private: private:
friend class DriveMetadataStoreTest; friend class DriveMetadataStoreTest;
// Marks |origin| as a batch sync origin and associates it with the directory
// identified by |resource_id|.
// |origin| must not be a batch sync origin nor an incremental sync origin.
void AddBatchSyncOrigin(const GURL& origin, const std::string& resource_id);
// Marks |origin| as an incremental sync origin.
// |origin| must be a batch sync origin.
void MoveBatchSyncOriginToIncremental(const GURL& origin);
void UpdateDBStatus(SyncStatusCode status); void UpdateDBStatus(SyncStatusCode status);
void UpdateDBStatusAndInvokeCallback(const SyncStatusCallback& callback, void UpdateDBStatusAndInvokeCallback(const SyncStatusCallback& callback,
SyncStatusCode status); SyncStatusCode status);
...@@ -180,10 +165,10 @@ class DriveMetadataStore ...@@ -180,10 +165,10 @@ class DriveMetadataStore
SyncStatusCode status); SyncStatusCode status);
void RestoreOrigins(const SyncStatusCallback& callback); void RestoreOrigins(const SyncStatusCallback& callback);
void DidRestoreOrigins(const SyncStatusCallback& callback, void DidRestoreOrigins(const SyncStatusCallback& callback,
ResourceIdByOrigin* batch_sync_origins,
ResourceIdByOrigin* incremental_sync_origins, ResourceIdByOrigin* incremental_sync_origins,
ResourceIdByOrigin* disabled_origins, ResourceIdByOrigin* disabled_origins,
SyncStatusCode status); SyncStatusCode status);
leveldb::DB* GetDBInstanceForTesting();
scoped_refptr<base::SequencedTaskRunner> file_task_runner_; scoped_refptr<base::SequencedTaskRunner> file_task_runner_;
scoped_ptr<DriveMetadataDB> db_; scoped_ptr<DriveMetadataDB> db_;
...@@ -193,7 +178,6 @@ class DriveMetadataStore ...@@ -193,7 +178,6 @@ class DriveMetadataStore
MetadataMap metadata_map_; MetadataMap metadata_map_;
std::string sync_root_directory_resource_id_; std::string sync_root_directory_resource_id_;
ResourceIdByOrigin batch_sync_origins_;
ResourceIdByOrigin incremental_sync_origins_; ResourceIdByOrigin incremental_sync_origins_;
ResourceIdByOrigin disabled_origins_; ResourceIdByOrigin disabled_origins_;
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "base/message_loop.h" #include "base/message_loop.h"
#include "base/single_thread_task_runner.h" #include "base/single_thread_task_runner.h"
#include "base/stl_util.h" #include "base/stl_util.h"
#include "base/string_util.h"
#include "base/threading/thread.h" #include "base/threading/thread.h"
#include "chrome/browser/sync_file_system/drive_file_sync_service.h" #include "chrome/browser/sync_file_system/drive_file_sync_service.h"
#include "chrome/browser/sync_file_system/sync_file_system.pb.h" #include "chrome/browser/sync_file_system/sync_file_system.pb.h"
...@@ -132,10 +133,8 @@ class DriveMetadataStoreTest : public testing::Test { ...@@ -132,10 +133,8 @@ class DriveMetadataStoreTest : public testing::Test {
void DropSyncOriginsInStore() { void DropSyncOriginsInStore() {
EXPECT_TRUE(ui_task_runner_->RunsTasksOnCurrentThread()); EXPECT_TRUE(ui_task_runner_->RunsTasksOnCurrentThread());
drive_metadata_store_->batch_sync_origins_.clear();
drive_metadata_store_->incremental_sync_origins_.clear(); drive_metadata_store_->incremental_sync_origins_.clear();
drive_metadata_store_->disabled_origins_.clear(); drive_metadata_store_->disabled_origins_.clear();
EXPECT_TRUE(drive_metadata_store_->batch_sync_origins().empty());
EXPECT_TRUE(drive_metadata_store_->incremental_sync_origins().empty()); EXPECT_TRUE(drive_metadata_store_->incremental_sync_origins().empty());
EXPECT_TRUE(drive_metadata_store_->disabled_origins().empty()); EXPECT_TRUE(drive_metadata_store_->disabled_origins().empty());
} }
...@@ -216,14 +215,12 @@ class DriveMetadataStoreTest : public testing::Test { ...@@ -216,14 +215,12 @@ class DriveMetadataStoreTest : public testing::Test {
} }
void VerifyUntrackedOrigin(const GURL& origin) { void VerifyUntrackedOrigin(const GURL& origin) {
EXPECT_FALSE(metadata_store()->IsBatchSyncOrigin(origin));
EXPECT_FALSE(metadata_store()->IsIncrementalSyncOrigin(origin)); EXPECT_FALSE(metadata_store()->IsIncrementalSyncOrigin(origin));
EXPECT_FALSE(metadata_store()->IsOriginDisabled(origin)); EXPECT_FALSE(metadata_store()->IsOriginDisabled(origin));
} }
void VerifyIncrementalSyncOrigin(const GURL& origin, void VerifyIncrementalSyncOrigin(const GURL& origin,
const std::string& resource_id) { const std::string& resource_id) {
EXPECT_FALSE(metadata_store()->IsBatchSyncOrigin(origin));
EXPECT_TRUE(metadata_store()->IsIncrementalSyncOrigin(origin)); EXPECT_TRUE(metadata_store()->IsIncrementalSyncOrigin(origin));
EXPECT_FALSE(metadata_store()->IsOriginDisabled(origin)); EXPECT_FALSE(metadata_store()->IsOriginDisabled(origin));
EXPECT_EQ(resource_id, EXPECT_EQ(resource_id,
...@@ -233,7 +230,6 @@ class DriveMetadataStoreTest : public testing::Test { ...@@ -233,7 +230,6 @@ class DriveMetadataStoreTest : public testing::Test {
void VerifyDisabledOrigin(const GURL& origin, void VerifyDisabledOrigin(const GURL& origin,
const std::string& resource_id) { const std::string& resource_id) {
EXPECT_FALSE(metadata_store()->IsBatchSyncOrigin(origin));
EXPECT_FALSE(metadata_store()->IsIncrementalSyncOrigin(origin)); EXPECT_FALSE(metadata_store()->IsIncrementalSyncOrigin(origin));
EXPECT_TRUE(metadata_store()->IsOriginDisabled(origin)); EXPECT_TRUE(metadata_store()->IsOriginDisabled(origin));
EXPECT_EQ(resource_id, EXPECT_EQ(resource_id,
...@@ -248,13 +244,15 @@ class DriveMetadataStoreTest : public testing::Test { ...@@ -248,13 +244,15 @@ class DriveMetadataStoreTest : public testing::Test {
return drive_metadata_store_.get(); return drive_metadata_store_.get();
} }
leveldb::DB* metadata_db() {
return drive_metadata_store_->GetDBInstanceForTesting();
}
const DriveMetadataStore::MetadataMap& metadata_map() { const DriveMetadataStore::MetadataMap& metadata_map() {
return drive_metadata_store_->metadata_map_; return drive_metadata_store_->metadata_map_;
} }
void VerifyReverseMap() { void VerifyReverseMap() {
const ResourceIdByOrigin& batch_sync_origins =
drive_metadata_store_->batch_sync_origins_;
const ResourceIdByOrigin& incremental_sync_origins = const ResourceIdByOrigin& incremental_sync_origins =
drive_metadata_store_->incremental_sync_origins_; drive_metadata_store_->incremental_sync_origins_;
const ResourceIdByOrigin& disabled_origins = const ResourceIdByOrigin& disabled_origins =
...@@ -262,13 +260,10 @@ class DriveMetadataStoreTest : public testing::Test { ...@@ -262,13 +260,10 @@ class DriveMetadataStoreTest : public testing::Test {
const OriginByResourceId& origin_by_resource_id = const OriginByResourceId& origin_by_resource_id =
drive_metadata_store_->origin_by_resource_id_; drive_metadata_store_->origin_by_resource_id_;
size_t expected_size = size_t expected_size = incremental_sync_origins.size() +
batch_sync_origins.size() + incremental_sync_origins.size() + disabled_origins.size();
disabled_origins.size();
size_t actual_size = origin_by_resource_id.size(); size_t actual_size = origin_by_resource_id.size();
EXPECT_EQ(expected_size, actual_size); EXPECT_EQ(expected_size, actual_size);
EXPECT_TRUE(VerifyReverseMapInclusion(batch_sync_origins,
origin_by_resource_id));
EXPECT_TRUE(VerifyReverseMapInclusion(incremental_sync_origins, EXPECT_TRUE(VerifyReverseMapInclusion(incremental_sync_origins,
origin_by_resource_id)); origin_by_resource_id));
EXPECT_TRUE(VerifyReverseMapInclusion(disabled_origins, EXPECT_TRUE(VerifyReverseMapInclusion(disabled_origins,
...@@ -534,7 +529,6 @@ TEST_F(DriveMetadataStoreTest, RemoveOrigin) { ...@@ -534,7 +529,6 @@ TEST_F(DriveMetadataStoreTest, RemoveOrigin) {
InitializeDatabase(); InitializeDatabase();
// kOrigin1 should be the only one left. // kOrigin1 should be the only one left.
EXPECT_EQ(0u, metadata_store()->batch_sync_origins().size());
EXPECT_EQ(1u, metadata_store()->incremental_sync_origins().size()); EXPECT_EQ(1u, metadata_store()->incremental_sync_origins().size());
EXPECT_EQ(0u, metadata_store()->disabled_origins().size()); EXPECT_EQ(0u, metadata_store()->disabled_origins().size());
EXPECT_TRUE(metadata_store()->IsIncrementalSyncOrigin(kOrigin1)); EXPECT_TRUE(metadata_store()->IsIncrementalSyncOrigin(kOrigin1));
...@@ -652,7 +646,6 @@ TEST_F(DriveMetadataStoreTest, MigrationFromV0) { ...@@ -652,7 +646,6 @@ TEST_F(DriveMetadataStoreTest, MigrationFromV0) {
EXPECT_EQ(1, metadata_store()->GetLargestChangeStamp()); EXPECT_EQ(1, metadata_store()->GetLargestChangeStamp());
EXPECT_EQ(kSyncRootResourceId, metadata_store()->sync_root_directory()); EXPECT_EQ(kSyncRootResourceId, metadata_store()->sync_root_directory());
EXPECT_EQ(kResourceId1, metadata_store()->GetResourceIdForOrigin(kOrigin1));
EXPECT_EQ(kResourceId2, metadata_store()->GetResourceIdForOrigin(kOrigin2)); EXPECT_EQ(kResourceId2, metadata_store()->GetResourceIdForOrigin(kOrigin2));
DriveMetadata metadata; DriveMetadata metadata;
...@@ -668,6 +661,42 @@ TEST_F(DriveMetadataStoreTest, MigrationFromV0) { ...@@ -668,6 +661,42 @@ TEST_F(DriveMetadataStoreTest, MigrationFromV0) {
VerifyReverseMap(); VerifyReverseMap();
} }
TEST_F(DriveMetadataStoreTest, DeprecateBatchSyncOrigins) {
// Make sure that previously saved batch sync origins were deleted from the DB
// as they are no longer used.
const char kDriveBatchSyncOriginKeyPrefix[] = "BSYNC_ORIGIN: ";
const GURL kOrigin1("chrome-extension://example1");
const std::string kResourceId1("hoge");
// Purposely add in an old batch sync origin (from previous DB version).
{
leveldb::Options options;
options.create_if_missing = true;
leveldb::DB* db_ptr = NULL;
std::string db_dir = fileapi::FilePathToString(
base_dir().Append(DriveMetadataStore::kDatabaseName));
leveldb::DB::Open(options, db_dir, &db_ptr);
scoped_ptr<leveldb::DB> db(db_ptr);
leveldb::WriteOptions write_options;
db->Put(write_options,
kDriveBatchSyncOriginKeyPrefix + kOrigin1.spec(), kResourceId1);
}
InitializeDatabase();
// Confirm no batch sync origins remain after InitializeDatabase.
scoped_ptr<leveldb::Iterator> itr(metadata_db()->NewIterator(
leveldb::ReadOptions()));
int batch_origins_found = 0;
for (itr->Seek(kDriveBatchSyncOriginKeyPrefix); itr->Valid(); itr->Next()) {
std::string key = itr->key().ToString();
if (!StartsWithASCII(key, kDriveBatchSyncOriginKeyPrefix, true))
break;
batch_origins_found++;
}
EXPECT_EQ(0, batch_origins_found);
}
TEST_F(DriveMetadataStoreTest, ResetOriginRootDirectory) { TEST_F(DriveMetadataStoreTest, ResetOriginRootDirectory) {
const GURL kOrigin1("chrome-extension://example1"); const GURL kOrigin1("chrome-extension://example1");
const std::string kResourceId1("hoge"); const std::string kResourceId1("hoge");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment