From 7e0d21de387aee304dcd85cd85d13ff18ce429b5 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Fri, 7 Aug 2020 12:06:03 +0100 Subject: [PATCH] Add tags for wake lock holders. --- .../api/system/AndroidWakeLockManager.java | 6 ++--- .../AndroidBluetoothTransportConnection.java | 2 +- .../bramble/plugin/tor/AndroidTorPlugin.java | 2 +- .../bramble/system/AndroidTaskScheduler.java | 8 +++---- .../bramble/system/AndroidWakeLockImpl.java | 22 ++++++++++++++----- .../system/AndroidWakeLockManagerImpl.java | 12 +++++----- 6 files changed, 32 insertions(+), 20 deletions(-) diff --git a/bramble-android/src/main/java/org/briarproject/bramble/api/system/AndroidWakeLockManager.java b/bramble-android/src/main/java/org/briarproject/bramble/api/system/AndroidWakeLockManager.java index d1e9beff4..66f7c4b44 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/api/system/AndroidWakeLockManager.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/api/system/AndroidWakeLockManager.java @@ -7,9 +7,9 @@ import java.util.concurrent.Executor; @NotNullByDefault public interface AndroidWakeLockManager { - AndroidWakeLock createWakeLock(); + AndroidWakeLock createWakeLock(String tag); - void runWakefully(Runnable r); + void runWakefully(Runnable r, String tag); - void executeWakefully(Runnable r, Executor executor); + void executeWakefully(Runnable r, Executor executor, String tag); } diff --git a/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothTransportConnection.java b/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothTransportConnection.java index 3d500cbd7..b6a695116 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothTransportConnection.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothTransportConnection.java @@ -35,7 +35,7 @@ class AndroidBluetoothTransportConnection this.socket = socket; in = timeoutMonitor.createTimeoutInputStream( socket.getInputStream(), plugin.getMaxIdleTime() * 2); - wakeLock = wakeLockManager.createWakeLock(); + wakeLock = wakeLockManager.createWakeLock("BluetoothConnection"); wakeLock.acquire(); String address = socket.getRemoteDevice().getAddress(); if (isValidBluetoothAddress(address)) remote.put(PROP_ADDRESS, address); diff --git a/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPlugin.java b/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPlugin.java index a6bc002e5..79e35151c 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPlugin.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPlugin.java @@ -53,7 +53,7 @@ class AndroidTorPlugin extends TorPlugin { maxLatency, maxIdleTime, appContext.getDir("tor", MODE_PRIVATE)); this.appContext = appContext; - wakeLock = wakeLockManager.createWakeLock(); + wakeLock = wakeLockManager.createWakeLock("TorPlugin"); } @Override diff --git a/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidTaskScheduler.java b/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidTaskScheduler.java index 773fbc09e..3af47ebee 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidTaskScheduler.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidTaskScheduler.java @@ -73,8 +73,8 @@ class AndroidTaskScheduler implements TaskScheduler, Service, AlarmListener { @Override public void startService() { scheduledExecutorService.scheduleAtFixedRate( - () -> wakeLockManager.runWakefully(this::runDueTasks), - TICK_MS, TICK_MS, MILLISECONDS); + () -> wakeLockManager.runWakefully(this::runDueTasks, + "TaskTicker"), TICK_MS, TICK_MS, MILLISECONDS); scheduleAlarm(); } @@ -89,7 +89,7 @@ class AndroidTaskScheduler implements TaskScheduler, Service, AlarmListener { long now = SystemClock.elapsedRealtime(); long dueMillis = now + MILLISECONDS.convert(delay, unit); Runnable wakeful = () -> - wakeLockManager.executeWakefully(task, executor); + wakeLockManager.executeWakefully(task, executor, "TaskHandoff"); ScheduledTask s = new ScheduledTask(wakeful, dueMillis); if (dueMillis <= now) { scheduledExecutorService.execute(s); @@ -124,7 +124,7 @@ class AndroidTaskScheduler implements TaskScheduler, Service, AlarmListener { LOG.info("Ignoring alarm with PID " + extraPid + ", current PID is " + currentPid); } - }); + }, "TaskAlarm"); } private void runDueTasks() { 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 0efd352a0..ecd3136d9 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 @@ -8,6 +8,7 @@ import java.util.logging.Logger; import javax.annotation.concurrent.GuardedBy; import javax.annotation.concurrent.ThreadSafe; +import static java.util.logging.Level.FINE; import static java.util.logging.Logger.getLogger; /** @@ -23,21 +24,28 @@ class AndroidWakeLockImpl implements AndroidWakeLock { getLogger(AndroidWakeLockImpl.class.getName()); private final SharedWakeLock sharedWakeLock; + private final String tag; + private final Object lock = new Object(); @GuardedBy("lock") private boolean held = false; - AndroidWakeLockImpl(SharedWakeLock sharedWakeLock) { + AndroidWakeLockImpl(SharedWakeLock sharedWakeLock, String tag) { this.sharedWakeLock = sharedWakeLock; + this.tag = tag; } @Override public void acquire() { synchronized (lock) { if (held) { - LOG.fine("Already acquired"); + if (LOG.isLoggable(FINE)) { + LOG.fine(tag + " already acquired"); + } } else { - LOG.fine("Acquiring shared wake lock"); + if (LOG.isLoggable(FINE)) { + LOG.fine(tag + " acquiring shared wake lock"); + } held = true; sharedWakeLock.acquire(); } @@ -48,11 +56,15 @@ class AndroidWakeLockImpl implements AndroidWakeLock { public void release() { synchronized (lock) { if (held) { - LOG.fine("Releasing shared wake lock"); + if (LOG.isLoggable(FINE)) { + LOG.fine(tag + " releasing shared wake lock"); + } held = false; sharedWakeLock.release(); } else { - LOG.fine("Already released"); + if (LOG.isLoggable(FINE)) { + LOG.fine(tag + " already released"); + } } } } diff --git a/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidWakeLockManagerImpl.java b/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidWakeLockManagerImpl.java index 1500d148b..323bb9bc9 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidWakeLockManagerImpl.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/system/AndroidWakeLockManagerImpl.java @@ -51,13 +51,13 @@ class AndroidWakeLockManagerImpl implements AndroidWakeLockManager { } @Override - public AndroidWakeLock createWakeLock() { - return new AndroidWakeLockImpl(sharedWakeLock); + public AndroidWakeLock createWakeLock(String tag) { + return new AndroidWakeLockImpl(sharedWakeLock, tag); } @Override - public void runWakefully(Runnable r) { - AndroidWakeLock wakeLock = createWakeLock(); + public void runWakefully(Runnable r, String tag) { + AndroidWakeLock wakeLock = createWakeLock(tag); wakeLock.acquire(); try { r.run(); @@ -67,8 +67,8 @@ class AndroidWakeLockManagerImpl implements AndroidWakeLockManager { } @Override - public void executeWakefully(Runnable r, Executor executor) { - AndroidWakeLock wakeLock = createWakeLock(); + public void executeWakefully(Runnable r, Executor executor, String tag) { + AndroidWakeLock wakeLock = createWakeLock(tag); wakeLock.acquire(); try { executor.execute(() -> {