Add fine logging for wake locks.

This commit is contained in:
akwizgran
2020-08-07 11:57:35 +01:00
parent af1a91c819
commit 1bab15baaf
2 changed files with 22 additions and 1 deletions

View File

@@ -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");
}
}
}

View File

@@ -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");
}
}
}