Skip to content

Bridge log body any value #12204

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Sep 12, 2024
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion dependencyManagement/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ val dependencyVersions = hashMapOf<String, String>()
rootProject.extra["versions"] = dependencyVersions

// this line is managed by .github/scripts/update-sdk-version.sh
val otelSdkVersion = "1.41.0"
val otelSdkVersion = "1.42.0"
val otelContribVersion = "1.38.0-alpha"
val otelSdkAlphaVersion = otelSdkVersion.replaceFirst("(-SNAPSHOT)?$".toRegex(), "-alpha$1")

Expand Down
2 changes: 1 addition & 1 deletion examples/distro/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ subprojects {
ext {
versions = [
// this line is managed by .github/scripts/update-sdk-version.sh
opentelemetrySdk : "1.41.0",
opentelemetrySdk : "1.42.0",

// these lines are managed by .github/scripts/update-version.sh
opentelemetryJavaagent : "2.8.0-SNAPSHOT",
Expand Down
2 changes: 1 addition & 1 deletion examples/extension/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ version '1.0'
ext {
versions = [
// this line is managed by .github/scripts/update-sdk-version.sh
opentelemetrySdk : "1.41.0",
opentelemetrySdk : "1.42.0",

// these lines are managed by .github/scripts/update-version.sh
opentelemetryJavaagent : "2.8.0-SNAPSHOT",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import static java.util.concurrent.TimeUnit.MILLISECONDS;

import io.opentelemetry.api.common.AttributeKey;
import io.opentelemetry.api.common.Value;
import io.opentelemetry.api.logs.Severity;
import io.opentelemetry.api.trace.SpanContext;
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
Expand Down Expand Up @@ -173,7 +174,7 @@ void testStringMapMessage() {
testing.waitAndAssertLogRecords(
logRecord ->
logRecord
.hasBody("")
.hasBody((Value<?>) null)
.hasInstrumentationScope(InstrumentationScopeInfo.builder("abc").build())
.hasSeverity(Severity.INFO)
.hasSeverityText("INFO")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class ApplicationDoubleGaugeBuilder implements DoubleGaugeBuilder {

private final io.opentelemetry.api.metrics.DoubleGaugeBuilder agentBuilder;

public ApplicationDoubleGaugeBuilder(
protected ApplicationDoubleGaugeBuilder(
io.opentelemetry.api.metrics.DoubleGaugeBuilder agentBuilder) {
this.agentBuilder = agentBuilder;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public class ApplicationDoubleHistogramBuilder implements DoubleHistogramBuilder

private final io.opentelemetry.api.metrics.DoubleHistogramBuilder agentBuilder;

public ApplicationDoubleHistogramBuilder(
protected ApplicationDoubleHistogramBuilder(
io.opentelemetry.api.metrics.DoubleHistogramBuilder agentBuilder) {
this.agentBuilder = agentBuilder;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public class ApplicationLongCounterBuilder implements LongCounterBuilder {

private final io.opentelemetry.api.metrics.LongCounterBuilder agentBuilder;

public ApplicationLongCounterBuilder(
protected ApplicationLongCounterBuilder(
io.opentelemetry.api.metrics.LongCounterBuilder agentBuilder) {
this.agentBuilder = agentBuilder;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public class ApplicationLongUpDownCounterBuilder implements LongUpDownCounterBui

private final io.opentelemetry.api.metrics.LongUpDownCounterBuilder agentBuilder;

public ApplicationLongUpDownCounterBuilder(
protected ApplicationLongUpDownCounterBuilder(
io.opentelemetry.api.metrics.LongUpDownCounterBuilder agentBuilder) {
this.agentBuilder = agentBuilder;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ configurations.configureEach {
if (name == "testRuntimeClasspath" || name == "testCompileClasspath") {
resolutionStrategy {
force("io.opentelemetry:opentelemetry-api:1.27.0")
force("io.opentelemetry:opentelemetry-sdk-logs:1.27.0")
force("io.opentelemetry:opentelemetry-sdk-testing:1.27.0")
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationMeterFactory;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationMeterProvider;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.metrics.ApplicationMeterFactory115;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLoggerFactory;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLoggerFactory127;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs.ApplicationLoggerProvider;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_4.trace.ApplicationTracerProvider14;
import java.lang.reflect.InvocationTargetException;
Expand All @@ -39,7 +41,8 @@ private ApplicationOpenTelemetry127() {
new ApplicationContextPropagators(agentOpenTelemetry.getPropagators());
applicationMeterProvider =
new ApplicationMeterProvider(getMeterFactory(), agentOpenTelemetry.getMeterProvider());
applicationLoggerProvider = new ApplicationLoggerProvider(agentOpenTelemetry.getLogsBridge());
applicationLoggerProvider =
new ApplicationLoggerProvider(getLoggerFactory(), agentOpenTelemetry.getLogsBridge());
}

@Override
Expand Down Expand Up @@ -105,9 +108,29 @@ private static ApplicationMeterFactory getMeterFactory() {
}

private static ApplicationMeterFactory getMeterFactory(String className) {
return getFactory(className, ApplicationMeterFactory.class);
}

private static ApplicationLoggerFactory getLoggerFactory() {
// this class is defined in opentelemetry-api-1.42
ApplicationLoggerFactory loggerFactory =
getLoggerFactory(
"io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_42.logs.ApplicationLoggerFactory142");
if (loggerFactory == null) {
loggerFactory = new ApplicationLoggerFactory127();
}

return loggerFactory;
}

private static ApplicationLoggerFactory getLoggerFactory(String className) {
return getFactory(className, ApplicationLoggerFactory.class);
}

private static <T> T getFactory(String className, Class<T> factoryClass) {
try {
Class<?> clazz = Class.forName(className);
return (ApplicationMeterFactory) clazz.getConstructor().newInstance();
return factoryClass.cast(clazz.getConstructor().newInstance());
} catch (ClassNotFoundException
| NoSuchMethodException
| InstantiationException
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,12 @@
import java.time.Instant;
import java.util.concurrent.TimeUnit;

class ApplicationLogRecordBuilder implements LogRecordBuilder {
public class ApplicationLogRecordBuilder implements LogRecordBuilder {

private final io.opentelemetry.api.logs.LogRecordBuilder agentLogRecordBuilder;

ApplicationLogRecordBuilder(io.opentelemetry.api.logs.LogRecordBuilder agentLogRecordBuilder) {
protected ApplicationLogRecordBuilder(
io.opentelemetry.api.logs.LogRecordBuilder agentLogRecordBuilder) {
this.agentLogRecordBuilder = agentLogRecordBuilder;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@
import application.io.opentelemetry.api.logs.LogRecordBuilder;
import application.io.opentelemetry.api.logs.Logger;

class ApplicationLogger implements Logger {
public class ApplicationLogger implements Logger {

private final io.opentelemetry.api.logs.Logger agentLogger;

ApplicationLogger(io.opentelemetry.api.logs.Logger agentLogger) {
protected ApplicationLogger(io.opentelemetry.api.logs.Logger agentLogger) {
this.agentLogger = agentLogger;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,13 @@

final class ApplicationLoggerBuilder implements LoggerBuilder {

private final ApplicationLoggerFactory loggerFactory;
private final io.opentelemetry.api.logs.LoggerBuilder agentBuilder;

ApplicationLoggerBuilder(io.opentelemetry.api.logs.LoggerBuilder agentBuilder) {
ApplicationLoggerBuilder(
ApplicationLoggerFactory loggerFactory,
io.opentelemetry.api.logs.LoggerBuilder agentBuilder) {
this.loggerFactory = loggerFactory;
this.agentBuilder = agentBuilder;
}

Expand All @@ -33,6 +37,6 @@ public LoggerBuilder setInstrumentationVersion(String version) {

@Override
public Logger build() {
return new ApplicationLogger(agentBuilder.build());
return loggerFactory.newLogger(agentBuilder.build());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs;

public interface ApplicationLoggerFactory {

ApplicationLogger newLogger(io.opentelemetry.api.logs.Logger agentLogger);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_27.logs;

import io.opentelemetry.api.logs.Logger;

public class ApplicationLoggerFactory127 implements ApplicationLoggerFactory {

@Override
public ApplicationLogger newLogger(Logger agentLogger) {
return new ApplicationLogger(agentLogger);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,19 @@
@SuppressWarnings("UnnecessarilyFullyQualified")
public class ApplicationLoggerProvider implements LoggerProvider {

private final ApplicationLoggerFactory loggerFactory;
private final io.opentelemetry.api.logs.LoggerProvider agentLoggerProvider;

public ApplicationLoggerProvider(io.opentelemetry.api.logs.LoggerProvider agentLoggerProvider) {
public ApplicationLoggerProvider(
ApplicationLoggerFactory loggerFactory,
io.opentelemetry.api.logs.LoggerProvider agentLoggerProvider) {
this.loggerFactory = loggerFactory;
this.agentLoggerProvider = agentLoggerProvider;
}

@Override
public LoggerBuilder loggerBuilder(String instrumentationName) {
return new ApplicationLoggerBuilder(agentLoggerProvider.loggerBuilder(instrumentationName));
return new ApplicationLoggerBuilder(
loggerFactory, agentLoggerProvider.loggerBuilder(instrumentationName));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,6 @@
import application.io.opentelemetry.api.metrics.DoubleHistogramBuilder;
import application.io.opentelemetry.api.metrics.LongCounterBuilder;
import application.io.opentelemetry.api.metrics.LongUpDownCounterBuilder;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationDoubleGaugeBuilder;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationDoubleHistogramBuilder;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationLongCounterBuilder;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationLongUpDownCounterBuilder;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_15.metrics.ApplicationMeter115;

public class ApplicationMeter131 extends ApplicationMeter115 {
Expand All @@ -26,39 +22,21 @@ protected ApplicationMeter131(io.opentelemetry.api.metrics.Meter agentMeter) {

@Override
public LongCounterBuilder counterBuilder(String name) {
io.opentelemetry.api.metrics.LongCounterBuilder builder = agentMeter.counterBuilder(name);
if (builder instanceof io.opentelemetry.api.incubator.metrics.ExtendedLongCounterBuilder) {
return new ApplicationLongCounterBuilder131(builder);
}
return new ApplicationLongCounterBuilder(builder);
return new ApplicationLongCounterBuilder131(agentMeter.counterBuilder(name));
}

@Override
public LongUpDownCounterBuilder upDownCounterBuilder(String name) {
io.opentelemetry.api.metrics.LongUpDownCounterBuilder builder =
agentMeter.upDownCounterBuilder(name);
if (builder
instanceof io.opentelemetry.api.incubator.metrics.ExtendedLongUpDownCounterBuilder) {
return new ApplicationLongUpDownCounterBuilder131(builder);
}
return new ApplicationLongUpDownCounterBuilder(builder);
return new ApplicationLongUpDownCounterBuilder131(agentMeter.upDownCounterBuilder(name));
}

@Override
public DoubleHistogramBuilder histogramBuilder(String name) {
io.opentelemetry.api.metrics.DoubleHistogramBuilder builder = agentMeter.histogramBuilder(name);
if (builder instanceof io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogramBuilder) {
return new ApplicationDoubleHistogramBuilder131(builder);
}
return new ApplicationDoubleHistogramBuilder(builder);
return new ApplicationDoubleHistogramBuilder131(agentMeter.histogramBuilder(name));
}

@Override
public DoubleGaugeBuilder gaugeBuilder(String name) {
io.opentelemetry.api.metrics.DoubleGaugeBuilder builder = agentMeter.gaugeBuilder(name);
if (builder instanceof io.opentelemetry.api.incubator.metrics.ExtendedDoubleGaugeBuilder) {
return new ApplicationDoubleGaugeBuilder131(builder);
}
return new ApplicationDoubleGaugeBuilder(builder);
return new ApplicationDoubleGaugeBuilder131(agentMeter.gaugeBuilder(name));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_31.metrics;

import static java.util.Collections.emptyList;
import static org.assertj.core.api.Assertions.assertThat;

import io.opentelemetry.api.metrics.DoubleGaugeBuilder;
Expand All @@ -29,15 +30,19 @@ void noopInstance() {
Meter meter = testing.getOpenTelemetry().getMeter("test");

LongCounterBuilder counterBuilder = meter.counterBuilder("test");
assertThat(counterBuilder).isNotInstanceOf(ExtendedLongCounterBuilder.class);
assertThat(counterBuilder).isInstanceOf(ExtendedLongCounterBuilder.class);
((ExtendedLongCounterBuilder) counterBuilder).setAttributesAdvice(emptyList());

LongUpDownCounterBuilder upDownCounterBuilder = meter.upDownCounterBuilder("test");
assertThat(upDownCounterBuilder).isNotInstanceOf(ExtendedLongUpDownCounterBuilder.class);
assertThat(upDownCounterBuilder).isInstanceOf(ExtendedLongUpDownCounterBuilder.class);
((ExtendedLongUpDownCounterBuilder) upDownCounterBuilder).setAttributesAdvice(emptyList());

DoubleGaugeBuilder gaugeBuilder = meter.gaugeBuilder("test");
assertThat(gaugeBuilder).isNotInstanceOf(ExtendedDoubleGaugeBuilder.class);
assertThat(gaugeBuilder).isInstanceOf(ExtendedDoubleGaugeBuilder.class);
((ExtendedDoubleGaugeBuilder) gaugeBuilder).setAttributesAdvice(emptyList());

DoubleHistogramBuilder histogramBuilder = meter.histogramBuilder("test");
assertThat(histogramBuilder).isNotInstanceOf(ExtendedDoubleHistogramBuilder.class);
assertThat(histogramBuilder).isInstanceOf(ExtendedDoubleHistogramBuilder.class);
((ExtendedDoubleHistogramBuilder) histogramBuilder).setAttributesAdvice(emptyList());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.incubator.metrics;

import application.io.opentelemetry.api.metrics.DoubleHistogramBuilder;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_10.metrics.ApplicationDoubleHistogramBuilder;
import io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_31.incubator.metrics.ApplicationMeter131;

class ApplicationMeter132Incubator extends ApplicationMeter131 {
Expand All @@ -20,10 +19,6 @@ class ApplicationMeter132Incubator extends ApplicationMeter131 {

@Override
public DoubleHistogramBuilder histogramBuilder(String name) {
io.opentelemetry.api.metrics.DoubleHistogramBuilder builder = agentMeter.histogramBuilder(name);
if (builder instanceof io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogramBuilder) {
return new ApplicationDoubleHistogramBuilder132Incubator(builder);
}
return new ApplicationDoubleHistogramBuilder(builder);
return new ApplicationDoubleHistogramBuilder132Incubator(agentMeter.histogramBuilder(name));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

package io.opentelemetry.javaagent.instrumentation.opentelemetryapi.v1_32.incubator.metrics;

import static java.util.Collections.emptyList;
import static org.assertj.core.api.Assertions.assertThat;

import io.opentelemetry.api.metrics.DoubleGaugeBuilder;
Expand All @@ -29,15 +30,19 @@ void noopInstance() {
Meter meter = testing.getOpenTelemetry().getMeter("test");

LongCounterBuilder counterBuilder = meter.counterBuilder("test");
assertThat(counterBuilder).isNotInstanceOf(ExtendedLongCounterBuilder.class);
assertThat(counterBuilder).isInstanceOf(ExtendedLongCounterBuilder.class);
((ExtendedLongCounterBuilder) counterBuilder).setAttributesAdvice(emptyList());

LongUpDownCounterBuilder upDownCounterBuilder = meter.upDownCounterBuilder("test");
assertThat(upDownCounterBuilder).isNotInstanceOf(ExtendedLongUpDownCounterBuilder.class);
assertThat(upDownCounterBuilder).isInstanceOf(ExtendedLongUpDownCounterBuilder.class);
((ExtendedLongUpDownCounterBuilder) upDownCounterBuilder).setAttributesAdvice(emptyList());

DoubleGaugeBuilder gaugeBuilder = meter.gaugeBuilder("test");
assertThat(gaugeBuilder).isNotInstanceOf(ExtendedDoubleGaugeBuilder.class);
assertThat(gaugeBuilder).isInstanceOf(ExtendedDoubleGaugeBuilder.class);
((ExtendedDoubleGaugeBuilder) gaugeBuilder).setAttributesAdvice(emptyList());

DoubleHistogramBuilder histogramBuilder = meter.histogramBuilder("test");
assertThat(histogramBuilder).isNotInstanceOf(ExtendedDoubleHistogramBuilder.class);
assertThat(histogramBuilder).isInstanceOf(ExtendedDoubleHistogramBuilder.class);
((ExtendedDoubleHistogramBuilder) histogramBuilder).setAttributesAdvice(emptyList());
}
}
Loading
Loading