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

Issue 662983 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Sep 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Chrome , Mac
Pri: 1
Type: Bug



Sign in to add a comment

Chrome should report GCM connection history to GCM as part of login.

Project Member Reported by harkness@chromium.org, Nov 7 2016

Issue description

Version: 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.
 

Comment 1 by peter@chromium.org, Nov 7 2016

Cc: peter@chromium.org joh...@chromium.org zea@chromium.org
Components: Services>CloudMessaging
Project Member

Comment 2 by bugdroid1@chromium.org, 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

Project Member

Comment 3 by bugdroid1@chromium.org, 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

Project Member

Comment 4 by bugdroid1@chromium.org, 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

Comment 5 by awdf@chromium.org, Sep 6 2017

Owner: peter@chromium.org
Assigning to Peter since he probably has most context on what is left to do here (if anything?)

Comment 6 by peter@chromium.org, Sep 6 2017

Status: Fixed (was: Assigned)
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