diff --git a/observability-kit-agent/pom.xml b/observability-kit-agent/pom.xml index 1879dced..16514e1b 100644 --- a/observability-kit-agent/pom.xml +++ b/observability-kit-agent/pom.xml @@ -15,7 +15,7 @@ opentelemetry-vaadin-observability-instrumentation-extension 1.1.1 - 1.17.7 + 1.18.7 diff --git a/observability-kit-agent/src/main/java/com/vaadin/extension/VaadinObservabilityInstrumentationModule.java b/observability-kit-agent/src/main/java/com/vaadin/extension/VaadinObservabilityInstrumentationModule.java index aa09bec8..826f07da 100644 --- a/observability-kit-agent/src/main/java/com/vaadin/extension/VaadinObservabilityInstrumentationModule.java +++ b/observability-kit-agent/src/main/java/com/vaadin/extension/VaadinObservabilityInstrumentationModule.java @@ -69,9 +69,9 @@ public ElementMatcher.Junction classLoaderMatcher() { @Override public boolean isHelperClass(String className) { - // TODO: check if helper classes can be included by convention return className != null - && className.startsWith("com.vaadin.extension"); + && className.startsWith("com.vaadin.extension") + && !className.startsWith("com.vaadin.extension.conf.ConfigurationDefaults"); } private boolean classExists(String className) { diff --git a/observability-kit-agent/src/main/java/com/vaadin/extension/conf/Configuration.java b/observability-kit-agent/src/main/java/com/vaadin/extension/conf/Configuration.java index 5b680349..bb8d1986 100644 --- a/observability-kit-agent/src/main/java/com/vaadin/extension/conf/Configuration.java +++ b/observability-kit-agent/src/main/java/com/vaadin/extension/conf/Configuration.java @@ -1,23 +1,30 @@ package com.vaadin.extension.conf; -import com.vaadin.extension.Constants; - -import io.opentelemetry.javaagent.bootstrap.internal.AgentInstrumentationConfig; +import java.util.function.Function; /** * Provides the effective configuration for the Vaadin observability extension. + * Initialized by {@code ConfigurationDefaults} from the agent classloader + * during auto-configuration, before any instrumentation is applied. */ public class Configuration { - public static final TraceLevel TRACE_LEVEL = determineTraceLevel(); - private static TraceLevel determineTraceLevel() { - String traceLevelString = AgentInstrumentationConfig.get().getString( - Constants.CONFIG_TRACE_LEVEL, TraceLevel.DEFAULT.name()); + private static TraceLevel traceLevel = TraceLevel.DEFAULT; + private static Function propertyLookup = key -> null; + + /** + * Called by {@code ConfigurationDefaults} during agent initialization to + * provide resolved configuration values. Uses only standard Java types to + * avoid references to OTel SDK classes in this helper class. + */ + static void initialize(String traceLevelValue, + Function lookup) { try { - return TraceLevel.valueOf(traceLevelString.toUpperCase()); + traceLevel = TraceLevel.valueOf(traceLevelValue.toUpperCase()); } catch (IllegalArgumentException ignored) { - return TraceLevel.DEFAULT; + traceLevel = TraceLevel.DEFAULT; } + propertyLookup = lookup; } /** @@ -29,6 +36,17 @@ private static TraceLevel determineTraceLevel() { * @return true if the trace level is enabled, false if not */ public static boolean isEnabled(TraceLevel traceLevel) { - return TRACE_LEVEL.includes(traceLevel); + return Configuration.traceLevel.includes(traceLevel); + } + + /** + * Looks up a configuration property by key. + * + * @param key + * the property key + * @return the property value, or null if not set + */ + public static String getProperty(String key) { + return propertyLookup.apply(key); } } diff --git a/observability-kit-agent/src/main/java/com/vaadin/extension/conf/ConfigurationDefaults.java b/observability-kit-agent/src/main/java/com/vaadin/extension/conf/ConfigurationDefaults.java index 2912eaf3..819e05aa 100644 --- a/observability-kit-agent/src/main/java/com/vaadin/extension/conf/ConfigurationDefaults.java +++ b/observability-kit-agent/src/main/java/com/vaadin/extension/conf/ConfigurationDefaults.java @@ -58,7 +58,7 @@ public class ConfigurationDefaults static final String CONFIGURATION_FILE_PROPERTY = "otel.javaagent.configuration-file"; - public static ConfigProperties configProperties; + static ConfigProperties configProperties; public static SpanExporter spanExporter; @Override @@ -77,6 +77,10 @@ private SpanExporter setSpanExporter(SpanExporter spanExporter, ConfigProperties configProperties) { ConfigurationDefaults.configProperties = configProperties; ConfigurationDefaults.spanExporter = spanExporter; + Configuration.initialize( + configProperties.getString(Constants.CONFIG_TRACE_LEVEL, + TraceLevel.DEFAULT.name()), + configProperties::getString); return spanExporter; } diff --git a/observability-kit-agent/src/main/java/com/vaadin/extension/instrumentation/client/ClientInstrumentation.java b/observability-kit-agent/src/main/java/com/vaadin/extension/instrumentation/client/ClientInstrumentation.java index d18abfc9..fc94839c 100644 --- a/observability-kit-agent/src/main/java/com/vaadin/extension/instrumentation/client/ClientInstrumentation.java +++ b/observability-kit-agent/src/main/java/com/vaadin/extension/instrumentation/client/ClientInstrumentation.java @@ -22,7 +22,7 @@ import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; -import com.vaadin.extension.conf.ConfigurationDefaults; +import com.vaadin.extension.conf.Configuration; import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed; import static net.bytebuddy.matcher.ElementMatchers.isConstructor; @@ -80,8 +80,7 @@ public void transform(TypeTransformer transformer) { Field functionField = helperClazz.getField("configHolder"); AtomicReference> functionHolder = (AtomicReference>) functionField.get(null); - functionHolder.set((key) -> - ConfigurationDefaults.configProperties.getString(key)); + functionHolder.set(Configuration::getProperty); Field consumerField = helperClazz.getField("exportHolder"); AtomicReference + http://127.0.0.1:4318 http/protobuf 5000 ${otel.exporter} diff --git a/pom.xml b/pom.xml index c1b50b46..f3f49e04 100644 --- a/pom.xml +++ b/pom.xml @@ -65,8 +65,8 @@ UTF-8 6.0.0 2.1.1 - 1.54.1 - 2.20.1 + 1.60.1 + 2.26.1 11.0.26 5.9.2 5.20.0