From 1bab15baaface2351a883b53c623c116deb8da4d Mon Sep 17 00:00:00 2001 From: akwizgran Date: Fri, 7 Aug 2020 11:57:35 +0100 Subject: [PATCH] Add fine logging for wake locks. --- .../bramble/system/AndroidWakeLockImpl.java | 15 ++++++++++++++- .../bramble/system/RenewableWakeLock.java | 8 ++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidWakeLockImpl.java b/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidWakeLockImpl.java index d3d9a7c4b..0efd352a0 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidWakeLockImpl.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidWakeLockImpl.java @@ -3,9 +3,13 @@ package org.briarproject.bramble.system; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.system.AndroidWakeLock; +import java.util.logging.Logger; + import javax.annotation.concurrent.GuardedBy; import javax.annotation.concurrent.ThreadSafe; +import static java.util.logging.Logger.getLogger; + /** * A wrapper around a {@link SharedWakeLock} that provides the more convenient * semantics of {@link AndroidWakeLock} (i.e. calls to acquire() and release() @@ -15,6 +19,9 @@ import javax.annotation.concurrent.ThreadSafe; @NotNullByDefault class AndroidWakeLockImpl implements AndroidWakeLock { + private static final Logger LOG = + getLogger(AndroidWakeLockImpl.class.getName()); + private final SharedWakeLock sharedWakeLock; private final Object lock = new Object(); @GuardedBy("lock") @@ -27,7 +34,10 @@ class AndroidWakeLockImpl implements AndroidWakeLock { @Override public void acquire() { synchronized (lock) { - if (!held) { + if (held) { + LOG.fine("Already acquired"); + } else { + LOG.fine("Acquiring shared wake lock"); held = true; sharedWakeLock.acquire(); } @@ -38,8 +48,11 @@ class AndroidWakeLockImpl implements AndroidWakeLock { public void release() { synchronized (lock) { if (held) { + LOG.fine("Releasing shared wake lock"); held = false; sharedWakeLock.release(); + } else { + LOG.fine("Already released"); } } } diff --git a/bramble-android/src/main/java/org/briarproject/bramble/system/RenewableWakeLock.java b/bramble-android/src/main/java/org/briarproject/bramble/system/RenewableWakeLock.java index c04212293..122180fd6 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/system/RenewableWakeLock.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/system/RenewableWakeLock.java @@ -14,6 +14,7 @@ import javax.annotation.concurrent.GuardedBy; import javax.annotation.concurrent.ThreadSafe; import static java.util.concurrent.TimeUnit.MILLISECONDS; +import static java.util.logging.Level.FINE; import static java.util.logging.Level.INFO; import static java.util.logging.Level.WARNING; import static java.util.logging.Logger.getLogger; @@ -75,6 +76,8 @@ class RenewableWakeLock implements SharedWakeLock { future = scheduledExecutorService.schedule(this::renew, durationMs, MILLISECONDS); acquired = android.os.SystemClock.elapsedRealtime(); + } else if (LOG.isLoggable(FINE)) { + LOG.fine("Wake lock " + tag + " has " + refCount + " holders"); } } } @@ -86,6 +89,9 @@ class RenewableWakeLock implements SharedWakeLock { LOG.info("Already released"); return; } + if (LOG.isLoggable(FINE)) { + LOG.fine("Wake lock " + tag + " has " + refCount + " holders"); + } long now = android.os.SystemClock.elapsedRealtime(); long expiry = acquired + durationMs + safetyMarginMs; if (now > expiry && LOG.isLoggable(WARNING)) { @@ -115,6 +121,8 @@ class RenewableWakeLock implements SharedWakeLock { requireNonNull(wakeLock).release(); wakeLock = null; acquired = 0; + } else if (LOG.isLoggable(FINE)) { + LOG.fine("Wake lock " + tag + " has " + refCount + " holders"); } } }