Merge "Fix missing IpConnectivity metrics" into nyc-mr1-dev

This commit is contained in:
TreeHugger Robot
2016-07-29 09:38:26 +00:00
committed by Android (Google) Code Review
2 changed files with 17 additions and 4 deletions

View File

@ -46,11 +46,12 @@ public class ConnectivityMetricsLogger {
public static final String DATA_KEY_EVENTS_COUNT = "count"; public static final String DATA_KEY_EVENTS_COUNT = "count";
/** {@hide} */ protected final IConnectivityMetricsLogger mService; /** {@hide} */ protected IConnectivityMetricsLogger mService;
/** {@hide} */ protected volatile long mServiceUnblockedTimestampMillis; /** {@hide} */ protected volatile long mServiceUnblockedTimestampMillis;
private int mNumSkippedEvents; private int mNumSkippedEvents;
public ConnectivityMetricsLogger() { public ConnectivityMetricsLogger() {
// TODO: consider not initializing mService in constructor
this(IConnectivityMetricsLogger.Stub.asInterface( this(IConnectivityMetricsLogger.Stub.asInterface(
ServiceManager.getService(CONNECTIVITY_METRICS_LOGGER_SERVICE))); ServiceManager.getService(CONNECTIVITY_METRICS_LOGGER_SERVICE)));
} }
@ -61,6 +62,18 @@ public class ConnectivityMetricsLogger {
mService = service; mService = service;
} }
/** {@hide} */
protected boolean checkLoggerService() {
if (mService != null) {
return true;
}
// Two threads racing here will write the same pointer because getService
// is idempotent once MetricsLoggerService is initialized.
mService = IConnectivityMetricsLogger.Stub.asInterface(
ServiceManager.getService(CONNECTIVITY_METRICS_LOGGER_SERVICE));
return mService != null;
}
/** /**
* Log a ConnectivityMetricsEvent. * Log a ConnectivityMetricsEvent.
* *

View File

@ -31,7 +31,7 @@ import com.android.internal.annotations.VisibleForTesting;
*/ */
public class IpConnectivityLog extends ConnectivityMetricsLogger { public class IpConnectivityLog extends ConnectivityMetricsLogger {
private static String TAG = "IpConnectivityMetricsLogger"; private static String TAG = "IpConnectivityMetricsLogger";
private static final boolean DBG = false; private static final boolean DBG = true;
public IpConnectivityLog() { public IpConnectivityLog() {
// mService initialized in super constructor. // mService initialized in super constructor.
@ -52,9 +52,9 @@ public class IpConnectivityLog extends ConnectivityMetricsLogger {
* @return true if the event was successfully logged. * @return true if the event was successfully logged.
*/ */
public boolean log(long timestamp, Parcelable data) { public boolean log(long timestamp, Parcelable data) {
if (mService == null) { if (!checkLoggerService()) {
if (DBG) { if (DBG) {
Log.d(TAG, CONNECTIVITY_METRICS_LOGGER_SERVICE + " service not ready"); Log.d(TAG, CONNECTIVITY_METRICS_LOGGER_SERVICE + " service was not ready");
} }
return false; return false;
} }