From 16636c30ec96632d023eed6986a31ae70cea4ce3 Mon Sep 17 00:00:00 2001 From: Janusz Baginski Date: Thu, 23 Nov 2023 16:24:37 +0000 Subject: [PATCH] Fixes a bug where Gradle daemon would keep a terminated instance of ADB causing it to be completely unusable --- .../src/main/java/com/shazam/fork/Fork.java | 4 ++-- .../shazam/fork/injector/system/AdbInjector.java | 15 +++++++++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/fork-runner/src/main/java/com/shazam/fork/Fork.java b/fork-runner/src/main/java/com/shazam/fork/Fork.java index 5badb937..86b40e3a 100755 --- a/fork-runner/src/main/java/com/shazam/fork/Fork.java +++ b/fork-runner/src/main/java/com/shazam/fork/Fork.java @@ -19,7 +19,7 @@ import static com.shazam.fork.injector.ConfigurationInjector.setConfiguration; import static com.shazam.fork.injector.ForkRunnerInjector.forkRunner; -import static com.shazam.fork.injector.system.AdbInjector.adb; +import static com.shazam.fork.injector.system.AdbInjector.releaseAdb; import static com.shazam.fork.utils.Utils.millisSinceNanoTime; import static java.lang.System.nanoTime; import static org.apache.commons.io.FileUtils.deleteDirectory; @@ -50,7 +50,7 @@ public boolean run() { } finally { long duration = millisSinceNanoTime(startOfTestsMs); logger.info(formatPeriod(0, duration, "'Total time taken:' H 'hours' m 'minutes' s 'seconds'")); - adb().terminate(); + releaseAdb(); } } } diff --git a/fork-runner/src/main/java/com/shazam/fork/injector/system/AdbInjector.java b/fork-runner/src/main/java/com/shazam/fork/injector/system/AdbInjector.java index 871ba317..170b2866 100644 --- a/fork-runner/src/main/java/com/shazam/fork/injector/system/AdbInjector.java +++ b/fork-runner/src/main/java/com/shazam/fork/injector/system/AdbInjector.java @@ -17,11 +17,22 @@ import static com.shazam.fork.injector.ConfigurationInjector.configuration; public class AdbInjector { - private static final Adb ADB = new Adb(configuration().getAndroidSdk()); + private static Adb ADB; - private AdbInjector() {} + private AdbInjector() { + } public static Adb adb() { + if (ADB == null) { + ADB = new Adb(configuration().getAndroidSdk()); + } return ADB; } + + public static void releaseAdb() { + if (ADB != null) { + ADB.terminate(); + } + ADB = null; + } }