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

Issue 843554 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Jun 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug

Blocked on:
issue 851905

Blocking:
issue 840722



Sign in to add a comment

Many duplicate session sync IDs on Android

Project Member Reported by mastiz@chromium.org, May 16 2018

Issue description

As reported by our UMA metric Sync.SesssionsDuplicateSyncId, way too many clients are affected by the duplicated-sync-id issue.

This means clients are missing synced tabs.

It also suggests the fix in https://chromium-review.googlesource.com/862394 is ineffective.
 

Comment 1 by mastiz@chromium.org, May 17 2018

Blocking: 840722
Project Member

Comment 2 by bugdroid1@chromium.org, May 23 2018

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

commit 87d0207fea94e8f64ca053c813b96e2ddcd3da27
Author: Mikel Astiz <mastiz@chromium.org>
Date: Wed May 23 11:37:24 2018

Simplify remapping of obsolete session IDs

The new implementation removes some dead code (instead use DCHECKs) and
avoids unnecessary remappings when no tabbed windows exist (e.g.
multiple custom tabs exist without native data).

Bug:  843554 
Change-Id: I595516158cc8e5aafb13346a962bf92f70ea6aad
Reviewed-on: https://chromium-review.googlesource.com/1068674
Commit-Queue: Mikel Astiz <mastiz@chromium.org>
Reviewed-by: Marc Treib <treib@chromium.org>
Cr-Commit-Position: refs/heads/master@{#561036}
[modify] https://crrev.com/87d0207fea94e8f64ca053c813b96e2ddcd3da27/components/sync_sessions/local_session_event_handler_impl.cc
[modify] https://crrev.com/87d0207fea94e8f64ca053c813b96e2ddcd3da27/components/sync_sessions/local_session_event_handler_impl_unittest.cc
[modify] https://crrev.com/87d0207fea94e8f64ca053c813b96e2ddcd3da27/components/sync_sessions/session_sync_bridge_unittest.cc

Project Member

Comment 3 by bugdroid1@chromium.org, May 23 2018

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

commit ba63cf5afddc51d7a6c54252c536b068f66c39db
Author: Mikel Astiz <mastiz@chromium.org>
Date: Wed May 23 14:01:05 2018

Simplify delegate for LocalSessionEventHandlerImpl

The distinction between Update and Add is needed in the directory world
only, prior to USS. Instead, let's unify the delegate's interface and
put the burden on SessionsSyncManager's side.

Bug:  843554 
Change-Id: Ifeeb10a2543f0f501adb554df34a98131a77dff9
Reviewed-on: https://chromium-review.googlesource.com/1067920
Commit-Queue: Mikel Astiz <mastiz@chromium.org>
Reviewed-by: Marc Treib <treib@chromium.org>
Cr-Commit-Position: refs/heads/master@{#561059}
[modify] https://crrev.com/ba63cf5afddc51d7a6c54252c536b068f66c39db/components/sync_sessions/local_session_event_handler_impl.cc
[modify] https://crrev.com/ba63cf5afddc51d7a6c54252c536b068f66c39db/components/sync_sessions/local_session_event_handler_impl.h
[modify] https://crrev.com/ba63cf5afddc51d7a6c54252c536b068f66c39db/components/sync_sessions/local_session_event_handler_impl_unittest.cc
[modify] https://crrev.com/ba63cf5afddc51d7a6c54252c536b068f66c39db/components/sync_sessions/session_sync_bridge.cc
[modify] https://crrev.com/ba63cf5afddc51d7a6c54252c536b068f66c39db/components/sync_sessions/sessions_sync_manager.cc

Project Member

Comment 4 by bugdroid1@chromium.org, May 23 2018

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

commit bc775d6bc40d224d56108fc62b83cd0d89f638db
Author: Mikel Astiz <mastiz@chromium.org>
Date: Wed May 23 14:49:21 2018

Fix session sync ID duplicates on Android

Because the writes to the two databases (sync and tab restore) on
Android are not atomic, it's possible that tabs contain sync IDs that
have been generated by sync, but sync itself wasn't able to persist.

During window association, unless we handle sync IDs reported by the
delegate (UI) earlier, it's possible that AssociateTab() generates
"new" sync IDs that in fact are not new, because the delegate will
expose those sync IDs, if the tabs happen to be iterated in the wrong
order (i.e. AssociateTab() can generate a tab node ID that conflicts
with a later tab delegate).

Bug:  843554 
Change-Id: I7dc0b01ee2481bc2b7c1e7c4fc47f345b9594ed7
Reviewed-on: https://chromium-review.googlesource.com/1062030
Commit-Queue: Mikel Astiz <mastiz@chromium.org>
Reviewed-by: Sky Malice <skym@chromium.org>
Reviewed-by: Marc Treib <treib@chromium.org>
Cr-Commit-Position: refs/heads/master@{#561078}
[modify] https://crrev.com/bc775d6bc40d224d56108fc62b83cd0d89f638db/components/sync_sessions/local_session_event_handler_impl.cc
[modify] https://crrev.com/bc775d6bc40d224d56108fc62b83cd0d89f638db/components/sync_sessions/local_session_event_handler_impl.h
[modify] https://crrev.com/bc775d6bc40d224d56108fc62b83cd0d89f638db/components/sync_sessions/local_session_event_handler_impl_unittest.cc
[modify] https://crrev.com/bc775d6bc40d224d56108fc62b83cd0d89f638db/components/sync_sessions/session_sync_bridge_unittest.cc
[modify] https://crrev.com/bc775d6bc40d224d56108fc62b83cd0d89f638db/components/sync_sessions/sessions_sync_manager_unittest.cc
[modify] https://crrev.com/bc775d6bc40d224d56108fc62b83cd0d89f638db/components/sync_sessions/synced_session_tracker.cc
[modify] https://crrev.com/bc775d6bc40d224d56108fc62b83cd0d89f638db/components/sync_sessions/synced_session_tracker.h
[modify] https://crrev.com/bc775d6bc40d224d56108fc62b83cd0d89f638db/components/sync_sessions/synced_session_tracker_unittest.cc

Project Member

Comment 5 by bugdroid1@chromium.org, May 24 2018

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

commit cb491c4cb294b8b0862e59f0b34a4f702d473e69
Author: Mikel Astiz <mastiz@chromium.org>
Date: Thu May 24 13:08:26 2018

Make vending of sync IDs (tab_node_id) more explicit

Prior to this patch, it was buried in GetTabNodeFromLocalTabId() which
sometimes made a lookup only (if the tab ID was already associated) and
some other times vended a new sync ID (via
TabNodePool::AssociateWithFreeTabNode()).

We refactor the APIs to surface this logic more explicitly in the only
calling site, in LocalSessionEventHandlerImpl.

As a bonus point, a related test is added to SessionSyncBridgeTest,
which also passes prior to this patch.

Bug:  843554 
Change-Id: Ie9a2b136dbfb631e43d3abf2c345c07036670eb9
Reviewed-on: https://chromium-review.googlesource.com/1071572
Reviewed-by: Marc Treib <treib@chromium.org>
Commit-Queue: Mikel Astiz <mastiz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#561478}
[modify] https://crrev.com/cb491c4cb294b8b0862e59f0b34a4f702d473e69/components/sync_sessions/local_session_event_handler_impl.cc
[modify] https://crrev.com/cb491c4cb294b8b0862e59f0b34a4f702d473e69/components/sync_sessions/session_sync_bridge_unittest.cc
[modify] https://crrev.com/cb491c4cb294b8b0862e59f0b34a4f702d473e69/components/sync_sessions/synced_session_tracker.cc
[modify] https://crrev.com/cb491c4cb294b8b0862e59f0b34a4f702d473e69/components/sync_sessions/synced_session_tracker.h
[modify] https://crrev.com/cb491c4cb294b8b0862e59f0b34a4f702d473e69/components/sync_sessions/synced_session_tracker_unittest.cc
[modify] https://crrev.com/cb491c4cb294b8b0862e59f0b34a4f702d473e69/components/sync_sessions/tab_node_pool.cc
[modify] https://crrev.com/cb491c4cb294b8b0862e59f0b34a4f702d473e69/components/sync_sessions/tab_node_pool.h
[modify] https://crrev.com/cb491c4cb294b8b0862e59f0b34a4f702d473e69/components/sync_sessions/tab_node_pool_unittest.cc

Project Member

Comment 6 by bugdroid1@chromium.org, May 28 2018

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

commit 76b9b42d9fb720abc7a59c71e4f0147695110e9f
Author: Mikel Astiz <mastiz@chromium.org>
Date: Mon May 28 15:49:03 2018

Restrict deduping logic to syncable windows

Partial revert of https://chromium-review.googlesource.com/c/chromium/src/+/1062030

We've seen a recent spike in UMA metric Sync.SesssionsDuplicateSyncId
due to recent changes in components/sync_sessions, which can by explain
by a) an actual regression in the deduping logic or b) the broader
counting of duplicates introduced in the patch.

We revert the latter here to investigate further.

Bug:  843554 
Change-Id: I509662956f54f755388605dc0c55bb889e0fbe37
Reviewed-on: https://chromium-review.googlesource.com/1075333
Reviewed-by: Marc Treib <treib@chromium.org>
Commit-Queue: Mikel Astiz <mastiz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#562269}
[modify] https://crrev.com/76b9b42d9fb720abc7a59c71e4f0147695110e9f/components/sync_sessions/local_session_event_handler_impl.cc

Comment 7 by mastiz@chromium.org, May 29 2018

Cc: yus...@chromium.org

Comment 8 by mastiz@chromium.org, May 30 2018

yusufo@: any chance you took a look at this problem?

I've come up with a hypothesis: we use BroadcastSessionRestoreComplete() to keep sync on hold while session restore is ongoing, which presumably works well during startup.

However, are you familiar with the transition from *not* having a tabbed activity (CCT running) and suddenly Chrome being started? Is that notified as ression restore starting again and completing?

Even if that was the case, I don't think sync handles it correctly.
I believe so.

So what calls BroadcastSessionRestoreComplete is TabModelSelectorImpl calling markTabStateInitialized which happens with no exceptions after the selector has loaded tab state. So should be true for CCT and also for Tabbed mode independently for each of their corresponding models.
Project Member

Comment 10 by bugdroid1@chromium.org, Jun 1 2018

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

commit f726a69e26062de30395dba30f654120268572c4
Author: Mikel Astiz <mastiz@chromium.org>
Date: Fri Jun 01 14:29:57 2018

Revert remapping of obsolete session IDs to run always

Partial revert of:
https://chromium-review.googlesource.com/1068674

Speculative fix for a regression observed in UMA metric
Sync.SesssionsDuplicateSyncId.

TBR: treib@chromium.org
Bug:  843554 
Change-Id: Ifabbe8c33f6553cc6486d00544c75c318eaba258
Reviewed-on: https://chromium-review.googlesource.com/1082293
Commit-Queue: Mikel Astiz <mastiz@chromium.org>
Reviewed-by: Mikel Astiz <mastiz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#563621}
[modify] https://crrev.com/f726a69e26062de30395dba30f654120268572c4/components/sync_sessions/local_session_event_handler_impl.cc
[modify] https://crrev.com/f726a69e26062de30395dba30f654120268572c4/components/sync_sessions/local_session_event_handler_impl_unittest.cc

Project Member

Comment 11 by bugdroid1@chromium.org, Jun 5 2018

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

commit 2d7d690ebaf369da71e9fb10167e8769385181a7
Author: Mikel Astiz <mastiz@chromium.org>
Date: Tue Jun 05 19:20:38 2018

Prefer placeholder tabs when resolving sync ID conflicts

When a conflict is encountered (on Android), its best to amend the ones
in non-placeholder tabs (if possible), because that is a lot more likely
to get persisted by Android session/tab restore. Otherwise, the sync ID
collision will remain there.

TBR=treib@chromium.org

Bug:  843554 
Change-Id: I7ded45ee01abbbfb5a013743ac775e75032ce403
Reviewed-on: https://chromium-review.googlesource.com/1087453
Reviewed-by: Mikel Astiz <mastiz@chromium.org>
Commit-Queue: Mikel Astiz <mastiz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#564611}
[modify] https://crrev.com/2d7d690ebaf369da71e9fb10167e8769385181a7/components/sync_sessions/local_session_event_handler_impl.cc
[modify] https://crrev.com/2d7d690ebaf369da71e9fb10167e8769385181a7/components/sync_sessions/local_session_event_handler_impl_unittest.cc
[modify] https://crrev.com/2d7d690ebaf369da71e9fb10167e8769385181a7/components/sync_sessions/sessions_sync_manager_unittest.cc

Project Member

Comment 12 by bugdroid1@chromium.org, Jun 7 2018

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

commit beeed8b10734f1c616ef2846134c98fbbf7ed674
Author: Mikel Astiz <mastiz@chromium.org>
Date: Thu Jun 07 06:55:46 2018

Fix handling of late session restore on Android

Prior to this patch, sessions sync code assumed that session restore can
be triggered at most once, early during startup. On Android, however,
with Custom Tabs, it's possible that the browser has no tabbed activity
during startup (e.g. CCT was loaded but no browser app), and later
session restore is triggered for the remaining tabs, once the browser is
launched.

One problem this has is that, during such late session restore scenario,
sync would process tabs one by one as they get restored. For each, it
will also consider that a tabbed window exists and hence all tabs must
have been loaded (precisely what ScanForTabbedWindow() is for). That
also means, if an open tab has no sync ID, a new one will be vended and
assigned, which can collide with a sync ID from a tab that is pending
restore.

One user flow where this scenario is likely is the CCT's feature to
"Open in Browser". The tab may well contain no sync ID at that time, and
session restore must be completed before a new sync ID is vended.

Implementation-wise, the event is now plumbed via interface
LocalSessionEventHandler where it fits naturally and avoids polluting
a number of APIs including ProfileSyncService. Intermediate layers
(SessionSyncBridge, SessionDataTypeController) no longer care and
instead LocalSessionEventHandlerImpl is now responsible for putting
associations on hold if there is an ongoing session restore (either
early or late).

Bug:  843554 
Change-Id: I2fa9e9ef3159fcfd1b42e2e0110528dce7607fa7
Reviewed-on: https://chromium-review.googlesource.com/1084472
Commit-Queue: Mikel Astiz <mastiz@chromium.org>
Reviewed-by: David Trainor <dtrainor@chromium.org>
Reviewed-by: Marc Treib <treib@chromium.org>
Cr-Commit-Position: refs/heads/master@{#565203}
[modify] https://crrev.com/beeed8b10734f1c616ef2846134c98fbbf7ed674/chrome/browser/sync/sessions/browser_list_router_helper_unittest.cc
[modify] https://crrev.com/beeed8b10734f1c616ef2846134c98fbbf7ed674/chrome/browser/sync/sessions/sync_sessions_router_tab_helper_unittest.cc
[modify] https://crrev.com/beeed8b10734f1c616ef2846134c98fbbf7ed674/chrome/browser/sync/sessions/sync_sessions_web_contents_router.cc
[modify] https://crrev.com/beeed8b10734f1c616ef2846134c98fbbf7ed674/chrome/browser/sync/sessions/sync_sessions_web_contents_router.h
[modify] https://crrev.com/beeed8b10734f1c616ef2846134c98fbbf7ed674/chrome/browser/ui/android/tab_model/tab_model.cc
[modify] https://crrev.com/beeed8b10734f1c616ef2846134c98fbbf7ed674/components/browser_sync/profile_sync_service.cc
[modify] https://crrev.com/beeed8b10734f1c616ef2846134c98fbbf7ed674/components/browser_sync/profile_sync_service.h
[modify] https://crrev.com/beeed8b10734f1c616ef2846134c98fbbf7ed674/components/browser_sync/profile_sync_service_unittest.cc
[modify] https://crrev.com/beeed8b10734f1c616ef2846134c98fbbf7ed674/components/sync_sessions/abstract_sessions_sync_manager.h
[modify] https://crrev.com/beeed8b10734f1c616ef2846134c98fbbf7ed674/components/sync_sessions/local_session_event_handler_impl.cc
[modify] https://crrev.com/beeed8b10734f1c616ef2846134c98fbbf7ed674/components/sync_sessions/local_session_event_handler_impl.h
[modify] https://crrev.com/beeed8b10734f1c616ef2846134c98fbbf7ed674/components/sync_sessions/local_session_event_handler_impl_unittest.cc
[modify] https://crrev.com/beeed8b10734f1c616ef2846134c98fbbf7ed674/components/sync_sessions/local_session_event_router.h
[modify] https://crrev.com/beeed8b10734f1c616ef2846134c98fbbf7ed674/components/sync_sessions/session_data_type_controller.cc
[modify] https://crrev.com/beeed8b10734f1c616ef2846134c98fbbf7ed674/components/sync_sessions/session_data_type_controller.h
[modify] https://crrev.com/beeed8b10734f1c616ef2846134c98fbbf7ed674/components/sync_sessions/session_data_type_controller_unittest.cc
[modify] https://crrev.com/beeed8b10734f1c616ef2846134c98fbbf7ed674/components/sync_sessions/session_sync_bridge.cc
[modify] https://crrev.com/beeed8b10734f1c616ef2846134c98fbbf7ed674/components/sync_sessions/session_sync_bridge.h
[modify] https://crrev.com/beeed8b10734f1c616ef2846134c98fbbf7ed674/components/sync_sessions/session_sync_bridge_unittest.cc
[modify] https://crrev.com/beeed8b10734f1c616ef2846134c98fbbf7ed674/components/sync_sessions/sessions_sync_manager.cc
[modify] https://crrev.com/beeed8b10734f1c616ef2846134c98fbbf7ed674/components/sync_sessions/sessions_sync_manager.h
[modify] https://crrev.com/beeed8b10734f1c616ef2846134c98fbbf7ed674/components/sync_sessions/test_synced_window_delegates_getter.cc
[modify] https://crrev.com/beeed8b10734f1c616ef2846134c98fbbf7ed674/components/sync_sessions/test_synced_window_delegates_getter.h

Project Member

Comment 13 by bugdroid1@chromium.org, Jun 8 2018

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

commit c0e559a22c8e10a1436fbf7daacf9ce9c17303fd
Author: Mikel Astiz <mastiz@chromium.org>
Date: Fri Jun 08 09:58:44 2018

Revert "Restrict deduping logic to syncable windows"

This reverts commit 76b9b42d9fb720abc7a59c71e4f0147695110e9f.

Reason for revert: no improvement observed via UMA.

Original change's description:
> Restrict deduping logic to syncable windows
> 
> Partial revert of https://chromium-review.googlesource.com/c/chromium/src/+/1062030
> 
> We've seen a recent spike in UMA metric Sync.SesssionsDuplicateSyncId
> due to recent changes in components/sync_sessions, which can by explain
> by a) an actual regression in the deduping logic or b) the broader
> counting of duplicates introduced in the patch.
> 
> We revert the latter here to investigate further.
> 
> Bug:  843554 
> Change-Id: I509662956f54f755388605dc0c55bb889e0fbe37
> Reviewed-on: https://chromium-review.googlesource.com/1075333
> Reviewed-by: Marc Treib <treib@chromium.org>
> Commit-Queue: Mikel Astiz <mastiz@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#562269}

TBR=treib@chromium.org,mastiz@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug:  843554 
Change-Id: I6cb3f0361b0a614618c7dbdcfcde70f95f9c99d6
Reviewed-on: https://chromium-review.googlesource.com/1092471
Reviewed-by: Mikel Astiz <mastiz@chromium.org>
Commit-Queue: Mikel Astiz <mastiz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#565600}
[modify] https://crrev.com/c0e559a22c8e10a1436fbf7daacf9ce9c17303fd/components/sync_sessions/local_session_event_handler_impl.cc

Blockedon: 851905
Project Member

Comment 15 by bugdroid1@chromium.org, Jun 19 2018

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

commit 3308e2e3e37e369b68b09bc82a9df4f7c78af6d0
Author: Mikel Astiz <mastiz@chromium.org>
Date: Tue Jun 19 19:08:42 2018

Migrate from sync IDs to Android tab IDs

Intrusive patch that migrates session sync on Android to identify
tabs by a new ID type: Android tab IDs. No direct user-facing
changes expected except a) improved robustness due to reduced data
redundancy, and b) a one-off loss of placeholder tabs (because no
migration path is implemented) in "Tabs from other devices".

Design doc (Google employees only):
https://docs.google.com/document/d/1gMtPXTmvKnhJQpzSLYNoqBajWtOGYAoBNQ74XmmFe7I

The proposed change is feasible after, recently with
crbug.com/823798, session IDs increase monotonically (i.e. are not
reused across restarts) on all platforms. This means
SyncedTabDelegate can now trivially guarantee that there will be no
collisions (even across browser restarts) across tab IDs (exposed by
SyncedTabDelegate::GetSessionId()), as documented in this patch.

On Android, there's yet another concept of tab IDs which adheres to
that property and in addition get restored. By migrating to these IDs
altogether (i.e. only expose Android tab IDs to sync), there's no need
to support sync IDs at all, because the whole purpose of sync IDs is to
be able to associate open placeholder tabs (without web contents
loaded).

Hence, let's simplify the code and avoid all issues related to data
redundancy.

Bug:  851905 , 843554 
Cq-Include-Trybots: luci.chromium.try:ios-simulator-full-configs;master.tryserver.chromium.mac:ios-simulator-cronet
Change-Id: Icda054906e654c18238b47e7788d4523790e09f3
Reviewed-on: https://chromium-review.googlesource.com/1096942
Commit-Queue: Mikel Astiz <mastiz@chromium.org>
Reviewed-by: Yusuf Ozuysal <yusufo@chromium.org>
Reviewed-by: Bernhard Bauer <bauerb@chromium.org>
Reviewed-by: Brian White <bcwhite@chromium.org>
Reviewed-by: Marc Treib <treib@chromium.org>
Cr-Commit-Position: refs/heads/master@{#568555}
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/android/java/src/org/chromium/chrome/browser/TabState.java
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/android/java/src/org/chromium/chrome/browser/tab/Tab.java
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/android/junit/src/org/chromium/chrome/browser/tabstate/TabStateUnitTest.java
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/OpenTabsTest.java
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/browser/android/tab_android.cc
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/browser/android/tab_android.h
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/browser/sync/glue/synced_tab_delegate_android.cc
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/browser/sync/glue/synced_tab_delegate_android.h
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/browser/ui/sync/browser_synced_tab_delegate.cc
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/browser/ui/sync/browser_synced_tab_delegate.h
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/browser/ui/sync/browser_synced_window_delegate.h
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/browser/ui/sync/tab_contents_synced_tab_delegate.cc
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/browser/ui/sync/tab_contents_synced_tab_delegate.h
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/chrome/browser/ui/sync/tab_contents_synced_tab_delegate_unittest.cc
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/components/sync_sessions/local_session_event_handler_impl.cc
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/components/sync_sessions/local_session_event_handler_impl.h
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/components/sync_sessions/local_session_event_handler_impl_unittest.cc
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/components/sync_sessions/session_sync_bridge_unittest.cc
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/components/sync_sessions/sessions_sync_manager_unittest.cc
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/components/sync_sessions/synced_tab_delegate.h
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/components/sync_sessions/test_synced_window_delegates_getter.cc
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/components/sync_sessions/test_synced_window_delegates_getter.h
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/ios/chrome/browser/sync/ios_chrome_synced_tab_delegate.h
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/ios/chrome/browser/sync/ios_chrome_synced_tab_delegate.mm
[modify] https://crrev.com/3308e2e3e37e369b68b09bc82a9df4f7c78af6d0/tools/metrics/histograms/histograms.xml

Status: Fixed (was: Assigned)
With the patch above, we fully migrated away from sync IDs at the interface level (which is what the UMA metric reflected), so there can't be any more duplicates by definition.

Sign in to add a comment