Chrome should report GCM connection history to GCM as part of login. |
|||
Issue descriptionVersion: M54 OS: All Desktop The GCM connection management on Android keeps track of previous connection failures (and successes) and sends them to GCM as part of the LoginRequest. GCM then stores that data and it is available for connection debugging. Chrome's GCM driver should also support this behaviour, so that we can better diagnose failures. This support will require updating Chrome's LoginRequest protobuf to include the repeated ClientEvent proto supported by GCM, then saving and storing previous connection event information, and sending it to GCM as part of the LoginRequest.
,
Dec 6 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/1a49d60bd22ef9ccb97619ba3441bbd89f4b0c3e commit 1a49d60bd22ef9ccb97619ba3441bbd89f4b0c3e Author: harkness <harkness@chromium.org> Date: Tue Dec 06 14:12:38 2016 Added ClientEvent proto and structure for storing events in the factory. As part of the project to record GCM connection errors in Chrome, this CL adds the ClientEvent to the proto for the LoginRequest that goes to GCM. It also adds local structures to record previous connection attempts, although persisting the information and using it to construct the login request is in a subsequent CL. Tests were also updated to check that events were being recorded corectly in old test cases, and a new test case was added to check wrapping on the storage. BUG= 662983 Review-Url: https://codereview.chromium.org/2481873002 Cr-Commit-Position: refs/heads/master@{#436584} [modify] https://crrev.com/1a49d60bd22ef9ccb97619ba3441bbd89f4b0c3e/google_apis/gcm/BUILD.gn [add] https://crrev.com/1a49d60bd22ef9ccb97619ba3441bbd89f4b0c3e/google_apis/gcm/engine/connection_event_tracker.cc [add] https://crrev.com/1a49d60bd22ef9ccb97619ba3441bbd89f4b0c3e/google_apis/gcm/engine/connection_event_tracker.h [add] https://crrev.com/1a49d60bd22ef9ccb97619ba3441bbd89f4b0c3e/google_apis/gcm/engine/connection_event_tracker_unittest.cc [modify] https://crrev.com/1a49d60bd22ef9ccb97619ba3441bbd89f4b0c3e/google_apis/gcm/engine/connection_factory_impl.cc [modify] https://crrev.com/1a49d60bd22ef9ccb97619ba3441bbd89f4b0c3e/google_apis/gcm/engine/connection_factory_impl.h [modify] https://crrev.com/1a49d60bd22ef9ccb97619ba3441bbd89f4b0c3e/google_apis/gcm/engine/connection_factory_impl_unittest.cc [modify] https://crrev.com/1a49d60bd22ef9ccb97619ba3441bbd89f4b0c3e/google_apis/gcm/protocol/mcs.proto
,
Jan 12 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a21137ae0b53e26cde0941be1bf86f7bf4986b5d commit a21137ae0b53e26cde0941be1bf86f7bf4986b5d Author: harkness <harkness@chromium.org> Date: Thu Jan 12 11:35:16 2017 Add PendingEvents UMA to ConnectionEventTracker shutdown. Currently, the ConnectionEventTracker keeps a buffer in memory of events which still need to be sent to GCM. If there is a shutdown, those events are discarded without reaching GCM. This CL adds a metric to track the event count at shutdown to give an estimate of how many events are being lost and whether a persistence layer needs to be added. BUG= 662983 Review-Url: https://codereview.chromium.org/2594373002 Cr-Commit-Position: refs/heads/master@{#443208} [modify] https://crrev.com/a21137ae0b53e26cde0941be1bf86f7bf4986b5d/google_apis/gcm/engine/connection_event_tracker.cc [modify] https://crrev.com/a21137ae0b53e26cde0941be1bf86f7bf4986b5d/tools/metrics/histograms/histograms.xml
,
Jan 16 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/9d9e71b1d98b8a2ae88d8661cbf15ce23e6c3513 commit 9d9e71b1d98b8a2ae88d8661cbf15ce23e6c3513 Author: harkness <harkness@chromium.org> Date: Mon Jan 16 13:39:54 2017 Update ConnectionEventTracker to check if there is an in progress attempt. It is possible to get EndConnectionAttempt when there is not an in progress event, because EndConnectionAttempt is called from SignalConnectionReset, which will be called any time the network changes state. This CL modifies the code to only save the current_event_ if it has data. This also adds a test to validate that multiple SignalConnectionReset calls don't result in saving empty events. BUG= 662983 Review-Url: https://codereview.chromium.org/2628733004 Cr-Commit-Position: refs/heads/master@{#443885} [modify] https://crrev.com/9d9e71b1d98b8a2ae88d8661cbf15ce23e6c3513/google_apis/gcm/engine/connection_event_tracker.cc [modify] https://crrev.com/9d9e71b1d98b8a2ae88d8661cbf15ce23e6c3513/google_apis/gcm/engine/connection_event_tracker.h [modify] https://crrev.com/9d9e71b1d98b8a2ae88d8661cbf15ce23e6c3513/google_apis/gcm/engine/connection_factory_impl.cc [modify] https://crrev.com/9d9e71b1d98b8a2ae88d8661cbf15ce23e6c3513/google_apis/gcm/engine/connection_factory_impl_unittest.cc
,
Sep 6 2017
Assigning to Peter since he probably has most context on what is left to do here (if anything?)
,
Sep 6 2017
This is done :). Looking at this Monday's data, we're seeing that 60% of the connection failures are caused by the network disconnecting and 25% due to poor connectivity. More surprising is that 15% of failures are caused by proxies -- even though these users eventually establish connection. |
|||
►
Sign in to add a comment |
|||
Comment 1 by peter@chromium.org
, Nov 7 2016Components: Services>CloudMessaging