Investigate Reading list ping pong if multiple devices change same entry at the same time |
||||
Issue descriptionContext from https://codereview.chromium.org/2451843002/ Important consideration about passing accepted sync change back to change_processor is to avoid ping-pong type scenarios: 1. Client A makes change 2. Client B receives it from server, accepts it, but passes it to change_processor 3. This change gets committed to server and client A does the same thing 4. Repeat from step 2. If the entry passed to change_processor is the same that was just received then change_processor will notice that specifics hash didn't change and will not schedule change for syncing, thus avoiding above situation.
,
Dec 7 2016
,
Dec 8 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/f623a8a02f98adfb943529b9b25a6824bc62a97d commit f623a8a02f98adfb943529b9b25a6824bc62a97d Author: olivierrobin <olivierrobin@chromium.org> Date: Thu Dec 08 15:48:16 2016 Create a strict order in ReadingListSpecifics To avoid sync ping-pong where two device disagree on the latest state, create a strict order for ReadingListSpecifice. // Entries are in increasing order if all the fields respect increasing order. // - URL must be the same. // - title must verify rhs.title.compare(lhs.title) >= 0 // - rhs.creation_time_us >= lhs.creation_time_us // - rhs.update_time_us >= lhs.update_time_us // - if rhs.update_time_us > lhs.update_time_us, rhs.state can be anything. // - if rhs.update_time_us == lhs.update_time_us, rhs.state >= lhs.state in // the order UNSEEN, UNREAD, READ. BUG= 666232 Review-Url: https://codereview.chromium.org/2553143002 Cr-Commit-Position: refs/heads/master@{#437251} [modify] https://crrev.com/f623a8a02f98adfb943529b9b25a6824bc62a97d/components/reading_list/ios/reading_list_entry.cc [modify] https://crrev.com/f623a8a02f98adfb943529b9b25a6824bc62a97d/components/reading_list/ios/reading_list_entry.h [modify] https://crrev.com/f623a8a02f98adfb943529b9b25a6824bc62a97d/components/reading_list/ios/reading_list_entry_unittest.cc [modify] https://crrev.com/f623a8a02f98adfb943529b9b25a6824bc62a97d/components/reading_list/ios/reading_list_model_impl.cc [modify] https://crrev.com/f623a8a02f98adfb943529b9b25a6824bc62a97d/components/reading_list/ios/reading_list_store.cc [modify] https://crrev.com/f623a8a02f98adfb943529b9b25a6824bc62a97d/components/reading_list/ios/reading_list_store.h [modify] https://crrev.com/f623a8a02f98adfb943529b9b25a6824bc62a97d/components/reading_list/ios/reading_list_store_unittest.mm
,
Dec 9 2016
,
Jan 17 2017
Verified in 57.0.2984.0 canary, iPhone 6 plus iOS 10.2, iPhone 6 9.3.5 Tested steps: Added entry in one device, made sure it is visible in second device, also read entry in one device made sure it is marked as read in second device. Looks good. |
||||
►
Sign in to add a comment |
||||
Comment 1 by olivierrobin@chromium.org
, Nov 30 2016