From 473f391baad0c5c25a5d82ccda0b31825b11d7be Mon Sep 17 00:00:00 2001 From: Oliver Nguyen Date: Thu, 6 Jan 2022 23:03:51 +0000 Subject: Always recreate the Agent instead of storing a singleton. Fixes an issue where new classes were not included in coverage data when added after an Agent has already been created. Test: local testing Bug: 203236809 Change-Id: I3928ff99a50e4a106749dc96f93d8472c74d4a70 --- .../src/org/jacoco/agent/rt/internal/Agent.java | 26 +++++++++------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java index 45b7ccdd..c4bf874a 100644 --- a/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java +++ b/org.jacoco.agent.rt/src/org/jacoco/agent/rt/internal/Agent.java @@ -34,8 +34,6 @@ import org.jacoco.core.runtime.RuntimeData; */ public class Agent implements IAgent { - private static Agent singleton; - /** * Returns a global instance which is already started. If the method is * called the first time the instance is created with the given options. @@ -63,18 +61,15 @@ public class Agent implements IAgent { * @return global instance */ public static synchronized Agent getInstance(final AgentOptions options, RuntimeData data) { - if (singleton == null) { - final Agent agent = new Agent(options, IExceptionLogger.SYSTEM_ERR, data); - agent.startup(); - Runtime.getRuntime().addShutdownHook(new Thread() { - @Override - public void run() { - agent.shutdown(); - } - }); - singleton = agent; - } - return singleton; + final Agent agent = new Agent(options, IExceptionLogger.SYSTEM_ERR, data); + agent.startup(); + Runtime.getRuntime().addShutdownHook(new Thread() { + @Override + public void run() { + agent.shutdown(); + } + }); + return agent; } // END android-change @@ -93,9 +88,8 @@ public class Agent implements IAgent { public static synchronized Agent getInstance() throws IllegalStateException { // BEGIN android-change // throw new IllegalStateException("JaCoCo agent not started."); - singleton = Offline.createAgent(); + return Offline.createAgent(); // END android-change - return singleton; } private final AgentOptions options; -- cgit v1.2.3