From 9bcd624037b2a7b1de365385fbe5f9660e13a7d0 Mon Sep 17 00:00:00 2001 From: Andreas Stahlbauer Date: Wed, 31 Jul 2024 10:11:03 +0200 Subject: [PATCH] TS-31571 Daemonzie logging --- .../jacoco/agent/logging/LogToTeamscaleAppender.java | 12 ++++++++++-- .../TeamscaleProfilerConfigurationSystemTest.java | 5 +++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/agent/src/main/java/com/teamscale/jacoco/agent/logging/LogToTeamscaleAppender.java b/agent/src/main/java/com/teamscale/jacoco/agent/logging/LogToTeamscaleAppender.java index d5df72e5b..0d6ae3b84 100644 --- a/agent/src/main/java/com/teamscale/jacoco/agent/logging/LogToTeamscaleAppender.java +++ b/agent/src/main/java/com/teamscale/jacoco/agent/logging/LogToTeamscaleAppender.java @@ -21,7 +21,16 @@ public class LogToTeamscaleAppender extends AppenderBase { private int batchSize = 10; private Duration flushInterval = Duration.ofSeconds(3); private final List logBuffer = new ArrayList<>(); - private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); + private final ScheduledExecutorService scheduler; + + public LogToTeamscaleAppender() { + this.scheduler = Executors.newScheduledThreadPool(1, r -> { + // Make the thread a daemon so that it does not prevent the JVM from terminating. + Thread t = Executors.defaultThreadFactory().newThread(r); + t.setDaemon(true); + return t; + }); + } public void setTeamscaleClient(TeamscaleClient teamscaleClient) { this.teamscaleClient = teamscaleClient; @@ -114,5 +123,4 @@ public static void addTeamscaleAppenderTo(LoggerContext context, AgentOptions ag rootLogger.addAppender(logToTeamscaleAppender); } - } diff --git a/system-tests/teamscale-profiler-configuration-test/src/test/java/com/teamscale/client/TeamscaleProfilerConfigurationSystemTest.java b/system-tests/teamscale-profiler-configuration-test/src/test/java/com/teamscale/client/TeamscaleProfilerConfigurationSystemTest.java index 18efa524a..87ed40b71 100644 --- a/system-tests/teamscale-profiler-configuration-test/src/test/java/com/teamscale/client/TeamscaleProfilerConfigurationSystemTest.java +++ b/system-tests/teamscale-profiler-configuration-test/src/test/java/com/teamscale/client/TeamscaleProfilerConfigurationSystemTest.java @@ -36,8 +36,9 @@ public void systemTestRetrieveConfig() throws Exception { teamscaleMockServer.shutdown(); - assertThat(teamscaleMockServer.getProfilerEvents()).containsExactly( - "Profiler registered and requested configuration my-config", "Profiler 123 sent heartbeat", + assertThat(teamscaleMockServer.getProfilerEvents()).as("We expect a sequence of interactions with the mock. " + + "Note that unexpected interactions can be caused by old agent instances that have not been killed properly.") // + .containsExactly("Profiler registered and requested configuration my-config", "Profiler 123 sent heartbeat", "Profiler 123 unregistered"); }