New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 605708 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: May 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug



Sign in to add a comment

USS: Conflict resolution should ignore local and remote encryption changes

Project Member Reported by maxbogue@chromium.org, Apr 21 2016

Issue description

When a conflict is detected, we should be able to determine whether either entity is simply for encryption and choose the one that is a real change.

To do this we will need to maintain a base_specifics_hash that represents the last specifics data shared between the client and the server. To have this value always available we might have to pass a hash through the CommitContributor (so we know the hash of the data that is being acked in a CommitResponse), but even without that most cases should be coverable.
 
Project Member

Comment 1 by bugdroid1@chromium.org, Apr 27 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b964f3529773bd679d5604ac83f4ed367a60bb2c

commit b964f3529773bd679d5604ac83f4ed367a60bb2c
Author: maxbogue <maxbogue@chromium.org>
Date: Wed Apr 27 18:24:31 2016

[Sync] USS: Ignore encryption changes during conflict resolution 1/2

This change introduces the base_specifics_hash field of EntityMetadata
and uses it to detect local and remote encryption changes that can be
ignored during conflict resolution.

Part 2 will plumb the specifics_hash through the worker and commit
contribution so it can be returned in the CommitResponseData.

BUG= 605708 

Review-Url: https://codereview.chromium.org/1918923002
Cr-Commit-Position: refs/heads/master@{#390133}

[modify] https://crrev.com/b964f3529773bd679d5604ac83f4ed367a60bb2c/sync/api/conflict_resolution.h
[modify] https://crrev.com/b964f3529773bd679d5604ac83f4ed367a60bb2c/sync/internal_api/processor_entity_tracker.cc
[modify] https://crrev.com/b964f3529773bd679d5604ac83f4ed367a60bb2c/sync/internal_api/processor_entity_tracker_unittest.cc
[modify] https://crrev.com/b964f3529773bd679d5604ac83f4ed367a60bb2c/sync/internal_api/public/non_blocking_sync_common.cc
[modify] https://crrev.com/b964f3529773bd679d5604ac83f4ed367a60bb2c/sync/internal_api/public/non_blocking_sync_common.h
[modify] https://crrev.com/b964f3529773bd679d5604ac83f4ed367a60bb2c/sync/internal_api/public/processor_entity_tracker.h
[modify] https://crrev.com/b964f3529773bd679d5604ac83f4ed367a60bb2c/sync/internal_api/shared_model_type_processor.cc
[modify] https://crrev.com/b964f3529773bd679d5604ac83f4ed367a60bb2c/sync/internal_api/shared_model_type_processor_unittest.cc
[modify] https://crrev.com/b964f3529773bd679d5604ac83f4ed367a60bb2c/sync/protocol/entity_metadata.proto
[modify] https://crrev.com/b964f3529773bd679d5604ac83f4ed367a60bb2c/sync/test/engine/mock_model_type_worker.cc

Project Member

Comment 2 by bugdroid1@chromium.org, May 3 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/fdd1e5807dd62e08448012773750efe44ecd21bd

commit fdd1e5807dd62e08448012773750efe44ecd21bd
Author: maxbogue <maxbogue@chromium.org>
Date: Tue May 03 18:41:24 2016

[Sync] USS: Ignore encryption changes during conflict resolution 2/2

The change plumbs the specifics hash through the worker so it comes back
with the commit response. Originally I intended to pass it through the
commit contribution like the sequence number, but after some thought I
realized that wasn't even necessary for the sequence number so I've
modified the flow to simplify the commit contribution.

BUG= 605708 

Review-Url: https://codereview.chromium.org/1933803002
Cr-Commit-Position: refs/heads/master@{#391308}

[modify] https://crrev.com/fdd1e5807dd62e08448012773750efe44ecd21bd/sync/engine/model_type_worker.cc
[modify] https://crrev.com/fdd1e5807dd62e08448012773750efe44ecd21bd/sync/engine/model_type_worker.h
[modify] https://crrev.com/fdd1e5807dd62e08448012773750efe44ecd21bd/sync/engine/model_type_worker_unittest.cc
[modify] https://crrev.com/fdd1e5807dd62e08448012773750efe44ecd21bd/sync/engine/non_blocking_type_commit_contribution.cc
[modify] https://crrev.com/fdd1e5807dd62e08448012773750efe44ecd21bd/sync/engine/non_blocking_type_commit_contribution.h
[modify] https://crrev.com/fdd1e5807dd62e08448012773750efe44ecd21bd/sync/engine/worker_entity_tracker.cc
[modify] https://crrev.com/fdd1e5807dd62e08448012773750efe44ecd21bd/sync/engine/worker_entity_tracker.h
[modify] https://crrev.com/fdd1e5807dd62e08448012773750efe44ecd21bd/sync/engine/worker_entity_tracker_unittest.cc
[modify] https://crrev.com/fdd1e5807dd62e08448012773750efe44ecd21bd/sync/test/engine/mock_model_type_processor.cc

Status: Fixed (was: Started)

Sign in to add a comment