| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "sync/engine/directory_commit_contribution.h" | 5 #include "components/sync/engine_impl/directory_commit_contribution.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <algorithm> | 10 #include <algorithm> |
| 11 #include <set> | 11 #include <set> |
| 12 | 12 |
| 13 #include "sync/engine/commit_util.h" | 13 #include "components/sync/engine_impl/commit_util.h" |
| 14 #include "sync/engine/get_commit_ids.h" | 14 #include "components/sync/engine_impl/get_commit_ids.h" |
| 15 #include "sync/engine/syncer_util.h" | 15 #include "components/sync/engine_impl/syncer_util.h" |
| 16 #include "sync/internal_api/public/sessions/commit_counters.h" | 16 #include "components/sync/sessions/commit_counters.h" |
| 17 #include "sync/syncable/model_neutral_mutable_entry.h" | 17 #include "components/sync/syncable/model_neutral_mutable_entry.h" |
| 18 #include "sync/syncable/syncable_model_neutral_write_transaction.h" | 18 #include "components/sync/syncable/syncable_model_neutral_write_transaction.h" |
| 19 | 19 |
| 20 namespace syncer { | 20 namespace syncer { |
| 21 | 21 |
| 22 using syncable::GET_BY_HANDLE; | 22 using syncable::GET_BY_HANDLE; |
| 23 using syncable::SYNCER; | 23 using syncable::SYNCER; |
| 24 | 24 |
| 25 DirectoryCommitContribution::~DirectoryCommitContribution() { | 25 DirectoryCommitContribution::~DirectoryCommitContribution() { |
| 26 DCHECK(!syncing_bits_set_); | 26 DCHECK(!syncing_bits_set_); |
| 27 } | 27 } |
| 28 | 28 |
| (...skipping 28 matching lines...) Expand all Loading... |
| 57 return std::unique_ptr<DirectoryCommitContribution>( | 57 return std::unique_ptr<DirectoryCommitContribution>( |
| 58 new DirectoryCommitContribution(metahandles, entities, context, dir, | 58 new DirectoryCommitContribution(metahandles, entities, context, dir, |
| 59 debug_info_emitter)); | 59 debug_info_emitter)); |
| 60 } | 60 } |
| 61 | 61 |
| 62 void DirectoryCommitContribution::AddToCommitMessage( | 62 void DirectoryCommitContribution::AddToCommitMessage( |
| 63 sync_pb::ClientToServerMessage* msg) { | 63 sync_pb::ClientToServerMessage* msg) { |
| 64 DCHECK(syncing_bits_set_); | 64 DCHECK(syncing_bits_set_); |
| 65 sync_pb::CommitMessage* commit_message = msg->mutable_commit(); | 65 sync_pb::CommitMessage* commit_message = msg->mutable_commit(); |
| 66 entries_start_index_ = commit_message->entries_size(); | 66 entries_start_index_ = commit_message->entries_size(); |
| 67 std::copy(entities_.begin(), | 67 std::copy(entities_.begin(), entities_.end(), |
| 68 entities_.end(), | |
| 69 RepeatedPtrFieldBackInserter(commit_message->mutable_entries())); | 68 RepeatedPtrFieldBackInserter(commit_message->mutable_entries())); |
| 70 if (!context_.context().empty()) | 69 if (!context_.context().empty()) |
| 71 commit_message->add_client_contexts()->Swap(&context_); | 70 commit_message->add_client_contexts()->Swap(&context_); |
| 72 | 71 |
| 73 CommitCounters* counters = debug_info_emitter_->GetMutableCommitCounters(); | 72 CommitCounters* counters = debug_info_emitter_->GetMutableCommitCounters(); |
| 74 counters->num_commits_attempted += entities_.size(); | 73 counters->num_commits_attempted += entities_.size(); |
| 75 } | 74 } |
| 76 | 75 |
| 77 SyncerError DirectoryCommitContribution::ProcessCommitResponse( | 76 SyncerError DirectoryCommitContribution::ProcessCommitResponse( |
| 78 const sync_pb::ClientToServerResponse& response, | 77 const sync_pb::ClientToServerResponse& response, |
| 79 sessions::StatusController* status) { | 78 sessions::StatusController* status) { |
| 80 DCHECK(syncing_bits_set_); | 79 DCHECK(syncing_bits_set_); |
| 81 const sync_pb::CommitResponse& commit_response = response.commit(); | 80 const sync_pb::CommitResponse& commit_response = response.commit(); |
| 82 | 81 |
| 83 int transient_error_commits = 0; | 82 int transient_error_commits = 0; |
| 84 int conflicting_commits = 0; | 83 int conflicting_commits = 0; |
| 85 int error_commits = 0; | 84 int error_commits = 0; |
| 86 int successes = 0; | 85 int successes = 0; |
| 87 | 86 |
| 88 std::set<syncable::Id> deleted_folders; | 87 std::set<syncable::Id> deleted_folders; |
| 89 { | 88 { |
| 90 syncable::ModelNeutralWriteTransaction trans(FROM_HERE, SYNCER, dir_); | 89 syncable::ModelNeutralWriteTransaction trans(FROM_HERE, SYNCER, dir_); |
| 91 for (size_t i = 0; i < metahandles_.size(); ++i) { | 90 for (size_t i = 0; i < metahandles_.size(); ++i) { |
| 92 sync_pb::CommitResponse::ResponseType response_type = | 91 sync_pb::CommitResponse::ResponseType response_type = |
| 93 commit_util::ProcessSingleCommitResponse( | 92 commit_util::ProcessSingleCommitResponse( |
| 94 &trans, | 93 &trans, commit_response.entryresponse(entries_start_index_ + i), |
| 95 commit_response.entryresponse(entries_start_index_ + i), | 94 entities_.Get(i), metahandles_[i], &deleted_folders); |
| 96 entities_.Get(i), | |
| 97 metahandles_[i], | |
| 98 &deleted_folders); | |
| 99 switch (response_type) { | 95 switch (response_type) { |
| 100 case sync_pb::CommitResponse::INVALID_MESSAGE: | 96 case sync_pb::CommitResponse::INVALID_MESSAGE: |
| 101 ++error_commits; | 97 ++error_commits; |
| 102 break; | 98 break; |
| 103 case sync_pb::CommitResponse::CONFLICT: | 99 case sync_pb::CommitResponse::CONFLICT: |
| 104 ++conflicting_commits; | 100 ++conflicting_commits; |
| 105 status->increment_num_server_conflicts(); | 101 status->increment_num_server_conflicts(); |
| 106 break; | 102 break; |
| 107 case sync_pb::CommitResponse::SUCCESS: | 103 case sync_pb::CommitResponse::SUCCESS: |
| 108 ++successes; | 104 ++successes; |
| 109 { | 105 { |
| 110 syncable::Entry e(&trans, GET_BY_HANDLE, metahandles_[i]); | 106 syncable::Entry e(&trans, GET_BY_HANDLE, metahandles_[i]); |
| 111 if (e.GetModelType() == BOOKMARKS) | 107 if (e.GetModelType() == BOOKMARKS) |
| 112 status->increment_num_successful_bookmark_commits(); | 108 status->increment_num_successful_bookmark_commits(); |
| 113 } | 109 } |
| 114 status->increment_num_successful_commits(); | 110 status->increment_num_successful_commits(); |
| 115 break; | 111 break; |
| 116 case sync_pb::CommitResponse::OVER_QUOTA: | 112 case sync_pb::CommitResponse::OVER_QUOTA: |
| 117 // We handle over quota like a retry, which is same as transient. | 113 // We handle over quota like a retry, which is same as transient. |
| 118 case sync_pb::CommitResponse::RETRY: | 114 case sync_pb::CommitResponse::RETRY: |
| 119 case sync_pb::CommitResponse::TRANSIENT_ERROR: | 115 case sync_pb::CommitResponse::TRANSIENT_ERROR: |
| 120 ++transient_error_commits; | 116 ++transient_error_commits; |
| 121 break; | 117 break; |
| 122 default: | 118 default: |
| 123 LOG(FATAL) << "Bad return from ProcessSingleCommitResponse"; | 119 LOG(FATAL) << "Bad return from ProcessSingleCommitResponse"; |
| 124 } | 120 } |
| 125 } | 121 } |
| 126 MarkDeletedChildrenSynced(dir_, &trans, &deleted_folders); | 122 MarkDeletedChildrenSynced(dir_, &trans, &deleted_folders); |
| 127 } | 123 } |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 190 // complete but the Cleanup method is called anyways. It appears these are | 186 // complete but the Cleanup method is called anyways. It appears these are |
| 191 // unset on the assumption that the sync cycle must have finished properly, | 187 // unset on the assumption that the sync cycle must have finished properly, |
| 192 // although that's actually up to the commit response handling logic. | 188 // although that's actually up to the commit response handling logic. |
| 193 entry.PutDirtySync(false); | 189 entry.PutDirtySync(false); |
| 194 entry.PutSyncing(false); | 190 entry.PutSyncing(false); |
| 195 } | 191 } |
| 196 syncing_bits_set_ = false; | 192 syncing_bits_set_ = false; |
| 197 } | 193 } |
| 198 | 194 |
| 199 } // namespace syncer | 195 } // namespace syncer |
| OLD | NEW |