From 5002aedd6d85ff1900947e845c593c94bf8fca97 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Fri, 9 Feb 2024 19:27:10 +0200 Subject: [PATCH 1/5] Fix JarAnalyzer warnings on Payara --- .../runtimemetrics/java8/JarAnalyzer.java | 40 ++++++++++++++++--- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzer.java b/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzer.java index ad3f2ea8cda0..7b01c3bbea74 100644 --- a/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzer.java +++ b/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzer.java @@ -8,6 +8,7 @@ import static io.opentelemetry.instrumentation.javaagent.runtimemetrics.java8.JarDetails.EAR_EXTENSION; import static io.opentelemetry.instrumentation.javaagent.runtimemetrics.java8.JarDetails.JAR_EXTENSION; import static io.opentelemetry.instrumentation.javaagent.runtimemetrics.java8.JarDetails.WAR_EXTENSION; +import static java.util.logging.Level.FINE; import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.api.common.AttributeKey; @@ -18,6 +19,7 @@ import io.opentelemetry.instrumentation.runtimemetrics.java8.internal.JmxRuntimeMetricsUtil; import io.opentelemetry.sdk.common.Clock; import io.opentelemetry.sdk.internal.DaemonThreadFactory; +import java.io.File; import java.io.IOException; import java.lang.instrument.ClassFileTransformer; import java.net.URI; @@ -108,7 +110,9 @@ private void handle(ProtectionDomain protectionDomain) { try { locationUri = archiveUrl.toURI(); } catch (URISyntaxException e) { - logger.log(Level.WARNING, "Unable to get URI for code location URL: " + archiveUrl, e); + if (logger.isLoggable(FINE)) { + logger.log(Level.WARNING, "Unable to get URI for code location URL: " + archiveUrl, e); + } return; } @@ -127,10 +131,30 @@ private void handle(ProtectionDomain protectionDomain) { if (!file.endsWith(JAR_EXTENSION) && !file.endsWith(WAR_EXTENSION) && !file.endsWith(EAR_EXTENSION)) { - logger.log(Level.INFO, "Skipping processing unrecognized code location: {0}", archiveUrl); + if (logger.isLoggable(FINE)) { + logger.log(Level.INFO, "Skipping processing unrecognized code location: {0}", archiveUrl); + } return; } + // Payara 5 and 6 have url with file protocol that fail on openStream with + // java.io.IOException: no entry name specified + // at + // java.base/sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:160) + // To avoid this here we recreate the URL when it points to a file. + if ("file".equals(archiveUrl.getProtocol())) { + try { + File archiveFile = new File(archiveUrl.toURI().getSchemeSpecificPart()); + if (archiveFile.exists() && archiveFile.isFile()) { + archiveUrl = archiveFile.toURI().toURL(); + } + } catch (Exception e) { + if (logger.isLoggable(FINE)) { + logger.log(Level.WARNING, "Unable to normalize location URL: " + archiveUrl, e); + } + } + } + // Only code locations with .jar and .war extension should make it here toProcess.add(archiveUrl); } @@ -174,10 +198,14 @@ public void run() { // events processUrl(eventEmitter, archiveUrl); } catch (Throwable e) { - logger.log(Level.WARNING, "Unexpected error processing archive URL: " + archiveUrl, e); + if (logger.isLoggable(FINE)) { + logger.log(Level.WARNING, "Unexpected error processing archive URL: " + archiveUrl, e); + } } } - logger.warning("JarAnalyzer stopped"); + if (logger.isLoggable(FINE)) { + logger.warning("JarAnalyzer stopped"); + } } } @@ -190,7 +218,9 @@ static void processUrl(EventEmitter eventEmitter, URL archiveUrl) { try { jarDetails = JarDetails.forUrl(archiveUrl); } catch (IOException e) { - logger.log(Level.WARNING, "Error reading package for archive URL: " + archiveUrl, e); + if (logger.isLoggable(FINE)) { + logger.log(Level.WARNING, "Error reading package for archive URL: " + archiveUrl, e); + } return; } AttributesBuilder builder = Attributes.builder(); From b6943da536b9f55a1e783a9ebc6b9e07bceb717e Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Fri, 9 Feb 2024 21:29:03 +0200 Subject: [PATCH 2/5] change log level based on whether agent debug is enabled or not --- .../runtimemetrics/java8/JarAnalyzer.java | 50 +++++++++---------- .../java8/JarAnalyzerInstaller.java | 6 ++- .../runtimemetrics/java8/JarAnalyzerTest.java | 2 +- 3 files changed, 30 insertions(+), 28 deletions(-) diff --git a/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzer.java b/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzer.java index 7b01c3bbea74..8cf221ca4dcc 100644 --- a/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzer.java +++ b/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzer.java @@ -9,6 +9,8 @@ import static io.opentelemetry.instrumentation.javaagent.runtimemetrics.java8.JarDetails.JAR_EXTENSION; import static io.opentelemetry.instrumentation.javaagent.runtimemetrics.java8.JarDetails.WAR_EXTENSION; import static java.util.logging.Level.FINE; +import static java.util.logging.Level.INFO; +import static java.util.logging.Level.WARNING; import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.api.common.AttributeKey; @@ -56,10 +58,12 @@ final class JarAnalyzer implements ClassFileTransformer { AttributeKey.stringKey("package.checksum_algorithm"); static final AttributeKey PACKAGE_PATH = AttributeKey.stringKey("package.path"); + private final boolean debug; private final Set seenUris = new HashSet<>(); private final BlockingQueue toProcess = new LinkedBlockingDeque<>(); - private JarAnalyzer(OpenTelemetry unused, int jarsPerSecond) { + private JarAnalyzer(OpenTelemetry unused, int jarsPerSecond, boolean debug) { + this.debug = debug; // TODO(jack-berg): Use OpenTelemetry to obtain EventEmitter when event API is stable EventEmitter eventEmitter = GlobalEventEmitterProvider.get() @@ -67,7 +71,7 @@ private JarAnalyzer(OpenTelemetry unused, int jarsPerSecond) { .setInstrumentationVersion(JmxRuntimeMetricsUtil.getInstrumentationVersion()) .setEventDomain(EVENT_DOMAIN_PACKAGE) .build(); - Worker worker = new Worker(eventEmitter, toProcess, jarsPerSecond); + Worker worker = new Worker(eventEmitter, toProcess, jarsPerSecond, debug); Thread workerThread = new DaemonThreadFactory(JarAnalyzer.class.getSimpleName() + "_WorkerThread") .newThread(worker); @@ -75,8 +79,8 @@ private JarAnalyzer(OpenTelemetry unused, int jarsPerSecond) { } /** Create {@link JarAnalyzer} and start the worker thread. */ - public static JarAnalyzer create(OpenTelemetry unused, int jarsPerSecond) { - return new JarAnalyzer(unused, jarsPerSecond); + public static JarAnalyzer create(OpenTelemetry unused, int jarsPerSecond, boolean debug) { + return new JarAnalyzer(unused, jarsPerSecond, debug); } /** @@ -110,9 +114,8 @@ private void handle(ProtectionDomain protectionDomain) { try { locationUri = archiveUrl.toURI(); } catch (URISyntaxException e) { - if (logger.isLoggable(FINE)) { - logger.log(Level.WARNING, "Unable to get URI for code location URL: " + archiveUrl, e); - } + logger.log( + debug ? WARNING : FINE, "Unable to get URI for code location URL: " + archiveUrl, e); return; } @@ -131,9 +134,8 @@ private void handle(ProtectionDomain protectionDomain) { if (!file.endsWith(JAR_EXTENSION) && !file.endsWith(WAR_EXTENSION) && !file.endsWith(EAR_EXTENSION)) { - if (logger.isLoggable(FINE)) { - logger.log(Level.INFO, "Skipping processing unrecognized code location: {0}", archiveUrl); - } + logger.log( + debug ? INFO : FINE, "Skipping processing unrecognized code location: {0}", archiveUrl); return; } @@ -149,9 +151,7 @@ private void handle(ProtectionDomain protectionDomain) { archiveUrl = archiveFile.toURI().toURL(); } } catch (Exception e) { - if (logger.isLoggable(FINE)) { - logger.log(Level.WARNING, "Unable to normalize location URL: " + archiveUrl, e); - } + logger.log(debug ? WARNING : FINE, "Unable to normalize location URL: " + archiveUrl, e); } } @@ -164,18 +164,21 @@ private static final class Worker implements Runnable { private final EventEmitter eventEmitter; private final BlockingQueue toProcess; private final io.opentelemetry.sdk.internal.RateLimiter rateLimiter; + private final boolean debug; - private Worker(EventEmitter eventEmitter, BlockingQueue toProcess, int jarsPerSecond) { + private Worker( + EventEmitter eventEmitter, BlockingQueue toProcess, int jarsPerSecond, boolean debug) { this.eventEmitter = eventEmitter; this.toProcess = toProcess; this.rateLimiter = new io.opentelemetry.sdk.internal.RateLimiter( jarsPerSecond, jarsPerSecond, Clock.getDefault()); + this.debug = debug; } /** * Continuously poll the {@link #toProcess} for archive {@link URL}s, and process each wit - * {@link #processUrl(EventEmitter, URL)}. + * {@link #processUrl(EventEmitter, URL, boolean)}. */ @Override public void run() { @@ -196,16 +199,13 @@ public void run() { try { // TODO(jack-berg): add ability to optionally re-process urls periodically to re-emit // events - processUrl(eventEmitter, archiveUrl); + processUrl(eventEmitter, archiveUrl, debug); } catch (Throwable e) { - if (logger.isLoggable(FINE)) { - logger.log(Level.WARNING, "Unexpected error processing archive URL: " + archiveUrl, e); - } + logger.log( + debug ? WARNING : FINE, "Unexpected error processing archive URL: " + archiveUrl, e); } } - if (logger.isLoggable(FINE)) { - logger.warning("JarAnalyzer stopped"); - } + logger.log(debug ? WARNING : FINE, "JarAnalyzer stopped"); } } @@ -213,14 +213,12 @@ public void run() { * Process the {@code archiveUrl}, extracting metadata from it and emitting an event with the * content. */ - static void processUrl(EventEmitter eventEmitter, URL archiveUrl) { + static void processUrl(EventEmitter eventEmitter, URL archiveUrl, boolean debug) { JarDetails jarDetails; try { jarDetails = JarDetails.forUrl(archiveUrl); } catch (IOException e) { - if (logger.isLoggable(FINE)) { - logger.log(Level.WARNING, "Error reading package for archive URL: " + archiveUrl, e); - } + logger.log(debug ? WARNING : FINE, "Error reading package for archive URL: " + archiveUrl, e); return; } AttributesBuilder builder = Attributes.builder(); diff --git a/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzerInstaller.java b/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzerInstaller.java index ec12fa81c2f1..84897bb23bbf 100644 --- a/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzerInstaller.java +++ b/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzerInstaller.java @@ -8,6 +8,7 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.bootstrap.InstrumentationHolder; import io.opentelemetry.javaagent.tooling.BeforeAgentListener; +import io.opentelemetry.javaagent.tooling.config.AgentConfig; import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk; import io.opentelemetry.sdk.autoconfigure.internal.AutoConfigureUtil; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; @@ -32,7 +33,10 @@ public void beforeAgent(AutoConfiguredOpenTelemetrySdk autoConfiguredOpenTelemet int jarsPerSecond = config.getInt("otel.instrumentation.runtime-telemetry.package-emitter.jars-per-second", 10); JarAnalyzer jarAnalyzer = - JarAnalyzer.create(autoConfiguredOpenTelemetrySdk.getOpenTelemetrySdk(), jarsPerSecond); + JarAnalyzer.create( + autoConfiguredOpenTelemetrySdk.getOpenTelemetrySdk(), + jarsPerSecond, + AgentConfig.isDebugModeEnabled(config)); inst.addTransformer(jarAnalyzer); } } diff --git a/instrumentation/runtime-telemetry/runtime-telemetry-java8/testing/src/test/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzerTest.java b/instrumentation/runtime-telemetry/runtime-telemetry-java8/testing/src/test/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzerTest.java index 04778527a4ab..276b0156b1f0 100644 --- a/instrumentation/runtime-telemetry/runtime-telemetry-java8/testing/src/test/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzerTest.java +++ b/instrumentation/runtime-telemetry/runtime-telemetry-java8/testing/src/test/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzerTest.java @@ -40,7 +40,7 @@ class JarAnalyzerTest { @MethodSource("processUrlArguments") void processUrl_EmitsEvents(URL archiveUrl, Consumer attributesConsumer) { EventEmitter eventEmitter = mock(EventEmitter.class); - JarAnalyzer.processUrl(eventEmitter, archiveUrl); + JarAnalyzer.processUrl(eventEmitter, archiveUrl, false); ArgumentCaptor attributesArgumentCaptor = ArgumentCaptor.forClass(Attributes.class); verify(eventEmitter).emit(eq("info"), attributesArgumentCaptor.capture()); From 6f013ff6ba6d11f2223a7c4b947224e52f4b7a20 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Mon, 12 Feb 2024 14:20:00 +0200 Subject: [PATCH 3/5] change log level back to warning --- .../runtimemetrics/java8/JarAnalyzer.java | 39 +++++++------------ .../java8/JarAnalyzerInstaller.java | 6 +-- 2 files changed, 15 insertions(+), 30 deletions(-) diff --git a/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzer.java b/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzer.java index 8cf221ca4dcc..4404afcc63a5 100644 --- a/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzer.java +++ b/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzer.java @@ -8,9 +8,6 @@ import static io.opentelemetry.instrumentation.javaagent.runtimemetrics.java8.JarDetails.EAR_EXTENSION; import static io.opentelemetry.instrumentation.javaagent.runtimemetrics.java8.JarDetails.JAR_EXTENSION; import static io.opentelemetry.instrumentation.javaagent.runtimemetrics.java8.JarDetails.WAR_EXTENSION; -import static java.util.logging.Level.FINE; -import static java.util.logging.Level.INFO; -import static java.util.logging.Level.WARNING; import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.api.common.AttributeKey; @@ -58,12 +55,10 @@ final class JarAnalyzer implements ClassFileTransformer { AttributeKey.stringKey("package.checksum_algorithm"); static final AttributeKey PACKAGE_PATH = AttributeKey.stringKey("package.path"); - private final boolean debug; private final Set seenUris = new HashSet<>(); private final BlockingQueue toProcess = new LinkedBlockingDeque<>(); - private JarAnalyzer(OpenTelemetry unused, int jarsPerSecond, boolean debug) { - this.debug = debug; + private JarAnalyzer(OpenTelemetry unused, int jarsPerSecond) { // TODO(jack-berg): Use OpenTelemetry to obtain EventEmitter when event API is stable EventEmitter eventEmitter = GlobalEventEmitterProvider.get() @@ -71,7 +66,7 @@ private JarAnalyzer(OpenTelemetry unused, int jarsPerSecond, boolean debug) { .setInstrumentationVersion(JmxRuntimeMetricsUtil.getInstrumentationVersion()) .setEventDomain(EVENT_DOMAIN_PACKAGE) .build(); - Worker worker = new Worker(eventEmitter, toProcess, jarsPerSecond, debug); + Worker worker = new Worker(eventEmitter, toProcess, jarsPerSecond); Thread workerThread = new DaemonThreadFactory(JarAnalyzer.class.getSimpleName() + "_WorkerThread") .newThread(worker); @@ -79,8 +74,8 @@ private JarAnalyzer(OpenTelemetry unused, int jarsPerSecond, boolean debug) { } /** Create {@link JarAnalyzer} and start the worker thread. */ - public static JarAnalyzer create(OpenTelemetry unused, int jarsPerSecond, boolean debug) { - return new JarAnalyzer(unused, jarsPerSecond, debug); + public static JarAnalyzer create(OpenTelemetry unused, int jarsPerSecond) { + return new JarAnalyzer(unused, jarsPerSecond); } /** @@ -114,8 +109,7 @@ private void handle(ProtectionDomain protectionDomain) { try { locationUri = archiveUrl.toURI(); } catch (URISyntaxException e) { - logger.log( - debug ? WARNING : FINE, "Unable to get URI for code location URL: " + archiveUrl, e); + logger.log(Level.WARNING, "Unable to get URI for code location URL: " + archiveUrl, e); return; } @@ -134,8 +128,7 @@ private void handle(ProtectionDomain protectionDomain) { if (!file.endsWith(JAR_EXTENSION) && !file.endsWith(WAR_EXTENSION) && !file.endsWith(EAR_EXTENSION)) { - logger.log( - debug ? INFO : FINE, "Skipping processing unrecognized code location: {0}", archiveUrl); + logger.log(Level.INFO, "Skipping processing unrecognized code location: {0}", archiveUrl); return; } @@ -151,7 +144,7 @@ private void handle(ProtectionDomain protectionDomain) { archiveUrl = archiveFile.toURI().toURL(); } } catch (Exception e) { - logger.log(debug ? WARNING : FINE, "Unable to normalize location URL: " + archiveUrl, e); + logger.log(Level.WARNING, "Unable to normalize location URL: " + archiveUrl, e); } } @@ -164,21 +157,18 @@ private static final class Worker implements Runnable { private final EventEmitter eventEmitter; private final BlockingQueue toProcess; private final io.opentelemetry.sdk.internal.RateLimiter rateLimiter; - private final boolean debug; - private Worker( - EventEmitter eventEmitter, BlockingQueue toProcess, int jarsPerSecond, boolean debug) { + private Worker(EventEmitter eventEmitter, BlockingQueue toProcess, int jarsPerSecond) { this.eventEmitter = eventEmitter; this.toProcess = toProcess; this.rateLimiter = new io.opentelemetry.sdk.internal.RateLimiter( jarsPerSecond, jarsPerSecond, Clock.getDefault()); - this.debug = debug; } /** * Continuously poll the {@link #toProcess} for archive {@link URL}s, and process each wit - * {@link #processUrl(EventEmitter, URL, boolean)}. + * {@link #processUrl(EventEmitter, URL)}. */ @Override public void run() { @@ -199,13 +189,12 @@ public void run() { try { // TODO(jack-berg): add ability to optionally re-process urls periodically to re-emit // events - processUrl(eventEmitter, archiveUrl, debug); + processUrl(eventEmitter, archiveUrl); } catch (Throwable e) { - logger.log( - debug ? WARNING : FINE, "Unexpected error processing archive URL: " + archiveUrl, e); + logger.log(Level.WARNING, "Unexpected error processing archive URL: " + archiveUrl, e); } } - logger.log(debug ? WARNING : FINE, "JarAnalyzer stopped"); + logger.log(Level.WARNING, "JarAnalyzer stopped"); } } @@ -213,12 +202,12 @@ public void run() { * Process the {@code archiveUrl}, extracting metadata from it and emitting an event with the * content. */ - static void processUrl(EventEmitter eventEmitter, URL archiveUrl, boolean debug) { + static void processUrl(EventEmitter eventEmitter, URL archiveUrl) { JarDetails jarDetails; try { jarDetails = JarDetails.forUrl(archiveUrl); } catch (IOException e) { - logger.log(debug ? WARNING : FINE, "Error reading package for archive URL: " + archiveUrl, e); + logger.log(Level.WARNING, "Error reading package for archive URL: " + archiveUrl, e); return; } AttributesBuilder builder = Attributes.builder(); diff --git a/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzerInstaller.java b/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzerInstaller.java index 84897bb23bbf..ec12fa81c2f1 100644 --- a/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzerInstaller.java +++ b/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzerInstaller.java @@ -8,7 +8,6 @@ import com.google.auto.service.AutoService; import io.opentelemetry.javaagent.bootstrap.InstrumentationHolder; import io.opentelemetry.javaagent.tooling.BeforeAgentListener; -import io.opentelemetry.javaagent.tooling.config.AgentConfig; import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk; import io.opentelemetry.sdk.autoconfigure.internal.AutoConfigureUtil; import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties; @@ -33,10 +32,7 @@ public void beforeAgent(AutoConfiguredOpenTelemetrySdk autoConfiguredOpenTelemet int jarsPerSecond = config.getInt("otel.instrumentation.runtime-telemetry.package-emitter.jars-per-second", 10); JarAnalyzer jarAnalyzer = - JarAnalyzer.create( - autoConfiguredOpenTelemetrySdk.getOpenTelemetrySdk(), - jarsPerSecond, - AgentConfig.isDebugModeEnabled(config)); + JarAnalyzer.create(autoConfiguredOpenTelemetrySdk.getOpenTelemetrySdk(), jarsPerSecond); inst.addTransformer(jarAnalyzer); } } From 4839abf93d7707d8bc5442a8306bdc93baefade4 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Mon, 12 Feb 2024 14:20:51 +0200 Subject: [PATCH 4/5] revert change --- .../javaagent/runtimemetrics/java8/JarAnalyzer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzer.java b/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzer.java index 4404afcc63a5..9f48d5610f9e 100644 --- a/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzer.java +++ b/instrumentation/runtime-telemetry/runtime-telemetry-java8/javaagent/src/main/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzer.java @@ -194,7 +194,7 @@ public void run() { logger.log(Level.WARNING, "Unexpected error processing archive URL: " + archiveUrl, e); } } - logger.log(Level.WARNING, "JarAnalyzer stopped"); + logger.warning("JarAnalyzer stopped"); } } From 16a933b44aab2426868eee69d10d82c36637c4c7 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Mon, 12 Feb 2024 15:02:50 +0200 Subject: [PATCH 5/5] fix test --- .../javaagent/runtimemetrics/java8/JarAnalyzerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instrumentation/runtime-telemetry/runtime-telemetry-java8/testing/src/test/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzerTest.java b/instrumentation/runtime-telemetry/runtime-telemetry-java8/testing/src/test/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzerTest.java index 276b0156b1f0..04778527a4ab 100644 --- a/instrumentation/runtime-telemetry/runtime-telemetry-java8/testing/src/test/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzerTest.java +++ b/instrumentation/runtime-telemetry/runtime-telemetry-java8/testing/src/test/java/io/opentelemetry/instrumentation/javaagent/runtimemetrics/java8/JarAnalyzerTest.java @@ -40,7 +40,7 @@ class JarAnalyzerTest { @MethodSource("processUrlArguments") void processUrl_EmitsEvents(URL archiveUrl, Consumer attributesConsumer) { EventEmitter eventEmitter = mock(EventEmitter.class); - JarAnalyzer.processUrl(eventEmitter, archiveUrl, false); + JarAnalyzer.processUrl(eventEmitter, archiveUrl); ArgumentCaptor attributesArgumentCaptor = ArgumentCaptor.forClass(Attributes.class); verify(eventEmitter).emit(eq("info"), attributesArgumentCaptor.capture());