diff options
author | haitaol@chromium.org <haitaol@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-17 19:42:10 +0000 |
---|---|---|
committer | haitaol@chromium.org <haitaol@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-17 19:42:10 +0000 |
commit | 1b909d357fa576d260e686fe5121edef270f1ae7 (patch) | |
tree | 00ce6b9701c7558a7b3a1bcc721ecf91df4fabe3 | |
parent | 2ef32354021c840043d7b213d1f220c7d2942e90 (diff) | |
download | chromium_src-1b909d357fa576d260e686fe5121edef270f1ae7.zip chromium_src-1b909d357fa576d260e686fe5121edef270f1ae7.tar.gz chromium_src-1b909d357fa576d260e686fe5121edef270f1ae7.tar.bz2 |
Add model version to association stats and client debug info.
BUG=249978
Review URL: https://chromiumcodereview.appspot.com/16854019
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@206774 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/sync/glue/bookmark_model_associator.cc | 16 | ||||
-rw-r--r-- | chrome/browser/sync/glue/bookmark_model_associator.h | 3 | ||||
-rw-r--r-- | chrome/browser/sync/glue/model_association_manager.cc | 4 | ||||
-rw-r--r-- | sync/api/sync_merge_result.cc | 11 | ||||
-rw-r--r-- | sync/api/sync_merge_result.h | 5 | ||||
-rw-r--r-- | sync/internal_api/debug_info_event_listener.cc | 4 | ||||
-rw-r--r-- | sync/internal_api/public/data_type_association_stats.cc | 2 | ||||
-rw-r--r-- | sync/internal_api/public/data_type_association_stats.h | 4 | ||||
-rw-r--r-- | sync/protocol/client_debug_info.proto | 6 | ||||
-rw-r--r-- | sync/protocol/proto_value_conversions.cc | 2 |
10 files changed, 51 insertions, 6 deletions
diff --git a/chrome/browser/sync/glue/bookmark_model_associator.cc b/chrome/browser/sync/glue/bookmark_model_associator.cc index b214f2d..846d3e2 100644 --- a/chrome/browser/sync/glue/bookmark_model_associator.cc +++ b/chrome/browser/sync/glue/bookmark_model_associator.cc @@ -364,7 +364,7 @@ bool BookmarkModelAssociator::GetSyncIdForTaggedNode(const std::string& tag, syncer::SyncError BookmarkModelAssociator::AssociateModels( syncer::SyncMergeResult* local_merge_result, syncer::SyncMergeResult* syncer_merge_result) { - CheckModelSyncState(); + CheckModelSyncState(local_merge_result, syncer_merge_result); scoped_ptr<ScopedAssociationUpdater> association_updater( new ScopedAssociationUpdater(bookmark_model_)); @@ -702,14 +702,22 @@ bool BookmarkModelAssociator::CryptoReadyIfNecessary() { trans.GetCryptographer()->is_ready(); } -void BookmarkModelAssociator::CheckModelSyncState() const { +void BookmarkModelAssociator::CheckModelSyncState( + syncer::SyncMergeResult* local_merge_result, + syncer::SyncMergeResult* syncer_merge_result) const { std::string version_str; if (bookmark_model_->root_node()->GetMetaInfo(kBookmarkTransactionVersionKey, &version_str)) { syncer::ReadTransaction trans(FROM_HERE, user_share_); int64 native_version; - if (base::StringToInt64(version_str, &native_version) && - native_version != trans.GetModelVersion(syncer::BOOKMARKS)) { + if (!base::StringToInt64(version_str, &native_version)) + return; + local_merge_result->set_pre_association_version(native_version); + + int64 sync_version = trans.GetModelVersion(syncer::BOOKMARKS); + syncer_merge_result->set_pre_association_version(sync_version); + + if (native_version != sync_version) { UMA_HISTOGRAM_ENUMERATION("Sync.LocalModelOutOfSync", ModelTypeToHistogramInt(syncer::BOOKMARKS), syncer::MODEL_TYPE_COUNT); diff --git a/chrome/browser/sync/glue/bookmark_model_associator.h b/chrome/browser/sync/glue/bookmark_model_associator.h index b37bb25..8a0ff5f 100644 --- a/chrome/browser/sync/glue/bookmark_model_associator.h +++ b/chrome/browser/sync/glue/bookmark_model_associator.h @@ -141,7 +141,8 @@ class BookmarkModelAssociator // Check whether bookmark model and sync model are synced by comparing // their transaction versions. - void CheckModelSyncState() const; + void CheckModelSyncState(syncer::SyncMergeResult* local_merge_result, + syncer::SyncMergeResult* syncer_merge_result) const; BookmarkModel* bookmark_model_; Profile* profile_; diff --git a/chrome/browser/sync/glue/model_association_manager.cc b/chrome/browser/sync/glue/model_association_manager.cc index 4c68714..4049523 100644 --- a/chrome/browser/sync/glue/model_association_manager.cc +++ b/chrome/browser/sync/glue/model_association_manager.cc @@ -99,12 +99,16 @@ syncer::DataTypeAssociationStats BuildAssociationStatsFromMergeResults( local_merge_result.num_items_deleted(); stats.num_local_items_modified = local_merge_result.num_items_modified(); + stats.local_version_pre_association = + local_merge_result.pre_association_version(); stats.num_sync_items_added = syncer_merge_result.num_items_added(); stats.num_sync_items_deleted = syncer_merge_result.num_items_deleted(); stats.num_sync_items_modified = syncer_merge_result.num_items_modified(); + stats.sync_version_pre_association = + syncer_merge_result.pre_association_version(); stats.association_wait_time = association_wait_time; stats.association_time = association_time; return stats; diff --git a/sync/api/sync_merge_result.cc b/sync/api/sync_merge_result.cc index 0caf57b..0c2fb83 100644 --- a/sync/api/sync_merge_result.cc +++ b/sync/api/sync_merge_result.cc @@ -12,7 +12,8 @@ SyncMergeResult::SyncMergeResult(ModelType type) num_items_after_association_(0), num_items_added_(0), num_items_deleted_(0), - num_items_modified_(0) { + num_items_modified_(0), + pre_association_version_(0) { } SyncMergeResult::~SyncMergeResult() { @@ -46,6 +47,10 @@ void SyncMergeResult::set_num_items_modified(int num_items_modified) { num_items_modified_ = num_items_modified; } +void SyncMergeResult::set_pre_association_version(int64 version) { + pre_association_version_ = version; +} + ModelType SyncMergeResult::model_type() const { return model_type_; } @@ -74,4 +79,8 @@ int SyncMergeResult::num_items_modified() const { return num_items_modified_; } +int64 SyncMergeResult::pre_association_version() const { + return pre_association_version_; +} + } // namespace syncer diff --git a/sync/api/sync_merge_result.h b/sync/api/sync_merge_result.h index 4ffd474..712f4bd 100644 --- a/sync/api/sync_merge_result.h +++ b/sync/api/sync_merge_result.h @@ -34,6 +34,7 @@ class SYNC_EXPORT SyncMergeResult { void set_num_items_added(int num_items_added); void set_num_items_deleted(int num_items_deleted); void set_num_items_modified(int num_items_modified); + void set_pre_association_version(int64 version); // Getters. ModelType model_type() const; @@ -43,6 +44,7 @@ class SYNC_EXPORT SyncMergeResult { int num_items_added() const; int num_items_deleted() const; int num_items_modified() const; + int64 pre_association_version() const; private: // Make |this| into a copy of |other|. @@ -66,6 +68,9 @@ class SYNC_EXPORT SyncMergeResult { int num_items_added_; int num_items_deleted_; int num_items_modified_; + + // Version of model before association. + int64 pre_association_version_; }; } // namespace syncer diff --git a/sync/internal_api/debug_info_event_listener.cc b/sync/internal_api/debug_info_event_listener.cc index ae02a7c..d0c9be0 100644 --- a/sync/internal_api/debug_info_event_listener.cc +++ b/sync/internal_api/debug_info_event_listener.cc @@ -204,6 +204,10 @@ void DebugInfoEventListener::OnSingleDataTypeConfigureComplete( association_stats.num_sync_items_deleted); datatype_stats->set_num_sync_items_modified( association_stats.num_sync_items_modified); + datatype_stats->set_local_version_pre_association( + association_stats.local_version_pre_association); + datatype_stats->set_sync_version_pre_association( + association_stats.sync_version_pre_association); datatype_stats->set_had_error(association_stats.had_error); datatype_stats->set_association_wait_time_for_same_priority_us( association_stats.association_wait_time.InMicroseconds()); diff --git a/sync/internal_api/public/data_type_association_stats.cc b/sync/internal_api/public/data_type_association_stats.cc index 4ae4bd1..4988de1 100644 --- a/sync/internal_api/public/data_type_association_stats.cc +++ b/sync/internal_api/public/data_type_association_stats.cc @@ -17,6 +17,8 @@ DataTypeAssociationStats::DataTypeAssociationStats() num_sync_items_added(0), num_sync_items_deleted(0), num_sync_items_modified(0), + local_version_pre_association(0), + sync_version_pre_association(0), had_error(false) { } diff --git a/sync/internal_api/public/data_type_association_stats.h b/sync/internal_api/public/data_type_association_stats.h index bda8ff3..ddddb94 100644 --- a/sync/internal_api/public/data_type_association_stats.h +++ b/sync/internal_api/public/data_type_association_stats.h @@ -32,6 +32,10 @@ struct SYNC_EXPORT DataTypeAssociationStats { int num_sync_items_deleted; int num_sync_items_modified; + // Model versions before association. + int64 local_version_pre_association; + int64 sync_version_pre_association; + // Whether a datatype unrecoverable error was encountered during association. bool had_error; diff --git a/sync/protocol/client_debug_info.proto b/sync/protocol/client_debug_info.proto index 7ae5a3c..171909f 100644 --- a/sync/protocol/client_debug_info.proto +++ b/sync/protocol/client_debug_info.proto @@ -86,6 +86,12 @@ message DatatypeAssociationStats { optional int32 num_sync_items_deleted = 10; optional int32 num_sync_items_modified = 11; + // Model versions before association. Ideally local and sync model should + // have same version if models were persisted properly in last session. + // Note: currently version is only set on bookmark model. + optional int64 local_version_pre_association = 20; + optional int64 sync_version_pre_association = 21; + // The data type ran into an error during model association. optional bool had_error = 12; diff --git a/sync/protocol/proto_value_conversions.cc b/sync/protocol/proto_value_conversions.cc index 868fd37..bd9a205 100644 --- a/sync/protocol/proto_value_conversions.cc +++ b/sync/protocol/proto_value_conversions.cc @@ -800,6 +800,8 @@ base::DictionaryValue* DatatypeAssociationStatsToValue( SET_INT32(num_sync_items_added); SET_INT32(num_sync_items_deleted); SET_INT32(num_sync_items_modified); + SET_INT64(local_version_pre_association); + SET_INT64(sync_version_pre_association) SET_BOOL(had_error); SET_INT64(download_wait_time_us); SET_INT64(download_time_us); |