diff --git a/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/SecondEntryPoint.java b/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/SecondEntryPoint.java index d41405672bc..6160ff67919 100644 --- a/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/SecondEntryPoint.java +++ b/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/SecondEntryPoint.java @@ -236,7 +236,7 @@ public void customize(AutoConfigurationCustomizer autoConfiguration) { } // TODO (trask) add this method to AutoConfigurationCustomizer upstream? - ((AutoConfiguredOpenTelemetrySdkBuilder) autoConfiguration).registerShutdownHook(false); + ((AutoConfiguredOpenTelemetrySdkBuilder) autoConfiguration).disableShutdownHook(); QuickPulse quickPulse; if (configuration.preview.liveMetrics.enabled) { @@ -648,7 +648,7 @@ private static SdkLoggerProviderBuilder configureLogging( .setScheduleDelay(getBatchProcessorDelay()) .build(); - builder.addLogRecordProcessor(new TimestampingLogRecordProcessor(batchLogProcessor)); + builder.addLogRecordProcessor(batchLogProcessor); } return builder; diff --git a/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/TimestampingLogRecordProcessor.java b/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/TimestampingLogRecordProcessor.java deleted file mode 100644 index 0918cb471c0..00000000000 --- a/agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/TimestampingLogRecordProcessor.java +++ /dev/null @@ -1,164 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -package com.microsoft.applicationinsights.agent.internal.init; - -import static java.util.concurrent.TimeUnit.SECONDS; - -import io.opentelemetry.api.common.AttributeKey; -import io.opentelemetry.api.common.Attributes; -import io.opentelemetry.api.logs.Severity; -import io.opentelemetry.api.trace.SpanContext; -import io.opentelemetry.context.Context; -import io.opentelemetry.sdk.common.CompletableResultCode; -import io.opentelemetry.sdk.common.InstrumentationScopeInfo; -import io.opentelemetry.sdk.logs.LogRecordProcessor; -import io.opentelemetry.sdk.logs.ReadWriteLogRecord; -import io.opentelemetry.sdk.logs.data.Body; -import io.opentelemetry.sdk.logs.data.LogRecordData; -import io.opentelemetry.sdk.resources.Resource; -import java.time.Instant; -import javax.annotation.Nullable; - -// this is just needed temporarily until -// https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/8761 -class TimestampingLogRecordProcessor implements LogRecordProcessor { - - private final LogRecordProcessor delegate; - - public TimestampingLogRecordProcessor(LogRecordProcessor delegate) { - this.delegate = delegate; - } - - @Override - public void onEmit(Context context, ReadWriteLogRecord logRecord) { - delegate.onEmit(context, new TimestampingReadWriteLogRecord(logRecord, Instant.now())); - } - - @Override - public CompletableResultCode shutdown() { - return delegate.shutdown(); - } - - @Override - public CompletableResultCode forceFlush() { - return delegate.forceFlush(); - } - - @Override - public void close() { - delegate.close(); - } - - private static class TimestampingReadWriteLogRecord implements ReadWriteLogRecord { - - private final ReadWriteLogRecord delegate; - private final Instant timestamp; - - private TimestampingReadWriteLogRecord(ReadWriteLogRecord delegate, Instant timestamp) { - this.delegate = delegate; - this.timestamp = timestamp; - } - - @Override - public ReadWriteLogRecord setAttribute(AttributeKey key, T value) { - return delegate.setAttribute(key, value); - } - - @Override - public LogRecordData toLogRecordData() { - return new TimestampedLogRecordData(delegate.toLogRecordData(), timestamp); - } - } - - private static class TimestampedLogRecordData implements LogRecordData { - - private final LogRecordData delegate; - private final Instant timestamp; - - private TimestampedLogRecordData(LogRecordData delegate, Instant timestamp) { - this.delegate = delegate; - this.timestamp = timestamp; - } - - @Override - public Resource getResource() { - return delegate.getResource(); - } - - @Override - public InstrumentationScopeInfo getInstrumentationScopeInfo() { - return delegate.getInstrumentationScopeInfo(); - } - - @Override - public long getTimestampEpochNanos() { - long timestampEpochNanos = delegate.getTimestampEpochNanos(); - if (timestampEpochNanos == 0) { - return SECONDS.toNanos(timestamp.getEpochSecond()) + timestamp.getNano(); - } - return timestampEpochNanos; - } - - @Override - public long getObservedTimestampEpochNanos() { - return delegate.getObservedTimestampEpochNanos(); - } - - @Override - public SpanContext getSpanContext() { - return delegate.getSpanContext(); - } - - @Override - public Severity getSeverity() { - return delegate.getSeverity(); - } - - @Override - @Nullable - public String getSeverityText() { - return delegate.getSeverityText(); - } - - @Override - public Body getBody() { - return delegate.getBody(); - } - - @Override - public Attributes getAttributes() { - return delegate.getAttributes(); - } - - @Override - public int getTotalAttributeCount() { - return delegate.getTotalAttributeCount(); - } - - @Override - public String toString() { - return "SdkLogRecordData{resource=" - + this.getResource() - + ", instrumentationScopeInfo=" - + this.getInstrumentationScopeInfo() - + ", timestampEpochNanos=" - + this.getTimestampEpochNanos() - + ", observedTimestampEpochNanos=" - + this.getObservedTimestampEpochNanos() - + ", spanContext=" - + this.getSpanContext() - + ", severity=" - + this.getSeverity() - + ", severityText=" - + this.getSeverityText() - + ", body=" - + this.getBody() - + ", attributes=" - + this.getAttributes() - + ", totalAttributeCount=" - + this.getTotalAttributeCount() - + "}"; - } - } -} diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 93c3bfe6572..2f09991f11e 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -34,7 +34,7 @@ dependencies { implementation("org.owasp:dependency-check-gradle:8.3.1") - implementation("io.opentelemetry.instrumentation:gradle-plugins:1.27.0-alpha") + implementation("io.opentelemetry.instrumentation:gradle-plugins:1.28.0-alpha") implementation("net.ltgt.gradle:gradle-errorprone-plugin:3.1.0") implementation("net.ltgt.gradle:gradle-nullaway-plugin:1.6.0") diff --git a/dependencyManagement/build.gradle.kts b/dependencyManagement/build.gradle.kts index 9642c9cda5f..8b07b9fdfc3 100644 --- a/dependencyManagement/build.gradle.kts +++ b/dependencyManagement/build.gradle.kts @@ -11,9 +11,9 @@ data class DependencySet(val group: String, val version: String, val modules: Li val dependencyVersions = hashMapOf() rootProject.extra["versions"] = dependencyVersions -val otelVersion = "1.27.0" -val otelInstrumentationAlphaVersion = "1.27.0-alpha" -val otelInstrumentationVersion = "1.27.0" +val otelVersion = "1.28.0" +val otelInstrumentationAlphaVersion = "1.28.0-alpha" +val otelInstrumentationVersion = "1.28.0" val otelContribAlphaVersion = "1.18.0-alpha" rootProject.extra["otelVersion"] = otelVersion diff --git a/smoke-tests/apps/JMS/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/JmsControllerSpansEnabledTest.java b/smoke-tests/apps/JMS/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/JmsControllerSpansEnabledTest.java index b0721320651..2601ea38216 100644 --- a/smoke-tests/apps/JMS/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/JmsControllerSpansEnabledTest.java +++ b/smoke-tests/apps/JMS/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/JmsControllerSpansEnabledTest.java @@ -34,7 +34,7 @@ void doMostBasicTest() throws Exception { Envelope rdEnvelope2 = getRequestEnvelope(rdList, "message process"); Envelope rddEnvelope1 = getDependencyEnvelope(rddList, "HelloController.sendMessage"); - Envelope rddEnvelope2 = getDependencyEnvelope(rddList, "message send"); + Envelope rddEnvelope2 = getDependencyEnvelope(rddList, "message publish"); Envelope rddEnvelope3 = getDependencyEnvelope(rddList, "GET /"); assertThat(rdEnvelope1.getSampleRate()).isNull(); @@ -65,7 +65,7 @@ void doMostBasicTest() throws Exception { assertThat(rdd1.getProperties()).isEmpty(); assertThat(rdd1.getSuccess()).isTrue(); - assertThat(rdd2.getName()).isEqualTo("message send"); + assertThat(rdd2.getName()).isEqualTo("message publish"); assertThat(rdd2.getData()).isNull(); assertThat(rdd2.getType()).isEqualTo("Queue Message | jms"); assertThat(rdd2.getTarget()).isEqualTo("message"); diff --git a/smoke-tests/apps/JMS/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/JmsTest.java b/smoke-tests/apps/JMS/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/JmsTest.java index 7d7a9745467..95ea9c467ff 100644 --- a/smoke-tests/apps/JMS/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/JmsTest.java +++ b/smoke-tests/apps/JMS/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/JmsTest.java @@ -40,7 +40,7 @@ void doMostBasicTest() throws Exception { assertThat(testing.mockedIngestion.getCountForType("EventData")).isZero(); Envelope rdEnvelope2 = getRequestEnvelope(rdList, "message process"); - Envelope rddEnvelope1 = getDependencyEnvelope(rddList, "message send"); + Envelope rddEnvelope1 = getDependencyEnvelope(rddList, "message publish"); Envelope rddEnvelope2 = getDependencyEnvelope(rddList, "GET /"); assertThat(rdEnvelope1.getSampleRate()).isNull(); @@ -61,7 +61,7 @@ void doMostBasicTest() throws Exception { .containsExactly(entry("_MS.ProcessedByMetricExtractors", "True")); assertThat(rd1.getSuccess()).isTrue(); - assertThat(rdd1.getName()).isEqualTo("message send"); + assertThat(rdd1.getName()).isEqualTo("message publish"); assertThat(rdd1.getData()).isNull(); assertThat(rdd1.getType()).isEqualTo("Queue Message | jms"); assertThat(rdd1.getTarget()).isEqualTo("message"); diff --git a/smoke-tests/apps/Kafka/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/KafkaControllerSpansEnabledTest.java b/smoke-tests/apps/Kafka/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/KafkaControllerSpansEnabledTest.java index 69fcdb4d741..268aadd3e5f 100644 --- a/smoke-tests/apps/Kafka/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/KafkaControllerSpansEnabledTest.java +++ b/smoke-tests/apps/Kafka/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/KafkaControllerSpansEnabledTest.java @@ -41,7 +41,7 @@ void doMostBasicTest() throws Exception { Envelope rdEnvelope2 = getRequestEnvelope(rdList, "mytopic process"); Envelope rddEnvelope1 = getDependencyEnvelope(rddList, "HelloController.sendMessage"); - Envelope rddEnvelope2 = getDependencyEnvelope(rddList, "mytopic send"); + Envelope rddEnvelope2 = getDependencyEnvelope(rddList, "mytopic publish"); Envelope rddEnvelope3 = getDependencyEnvelope(rddList, "GET /"); assertThat(rdEnvelope1.getSampleRate()).isNull(); @@ -72,7 +72,7 @@ void doMostBasicTest() throws Exception { assertThat(rdd1.getProperties()).isEmpty(); assertThat(rdd1.getSuccess()).isTrue(); - assertThat(rdd2.getName()).isEqualTo("mytopic send"); + assertThat(rdd2.getName()).isEqualTo("mytopic publish"); assertThat(rdd2.getData()).isNull(); assertThat(rdd2.getType()).isEqualTo("Queue Message | kafka"); assertThat(rdd2.getTarget()).isEqualTo("mytopic"); diff --git a/smoke-tests/apps/Kafka/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/KafkaTest.java b/smoke-tests/apps/Kafka/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/KafkaTest.java index ac56d4cfe85..8549614a0c4 100644 --- a/smoke-tests/apps/Kafka/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/KafkaTest.java +++ b/smoke-tests/apps/Kafka/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/KafkaTest.java @@ -57,7 +57,7 @@ void doMostBasicTest() throws Exception { } Envelope rdEnvelope2 = getRequestEnvelope(rdList, "mytopic process"); - Envelope rddEnvelope1 = getDependencyEnvelope(rddList, "mytopic send"); + Envelope rddEnvelope1 = getDependencyEnvelope(rddList, "mytopic publish"); Envelope rddEnvelope2 = getDependencyEnvelope(rddList, "GET /"); assertThat(rdEnvelope1.getSampleRate()).isNull(); @@ -78,7 +78,7 @@ void doMostBasicTest() throws Exception { .containsExactly(entry("_MS.ProcessedByMetricExtractors", "True")); assertThat(rd1.getSuccess()).isTrue(); - assertThat(rdd1.getName()).isEqualTo("mytopic send"); + assertThat(rdd1.getName()).isEqualTo("mytopic publish"); assertThat(rdd1.getData()).isNull(); assertThat(rdd1.getType()).isEqualTo("Queue Message | kafka"); assertThat(rdd1.getTarget()).isEqualTo("mytopic"); diff --git a/smoke-tests/apps/Logback/src/main/resources/logback.xml b/smoke-tests/apps/Logback/src/main/resources/logback.xml index db6c634f627..3d580684d93 100644 --- a/smoke-tests/apps/Logback/src/main/resources/logback.xml +++ b/smoke-tests/apps/Logback/src/main/resources/logback.xml @@ -1,6 +1,9 @@ - + + + %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} - %msg%n + @@ -8,6 +11,6 @@ - + diff --git a/smoke-tests/apps/SpringCloudStream/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/SpringCloudStreamControllerSpansEnabledTest.java b/smoke-tests/apps/SpringCloudStream/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/SpringCloudStreamControllerSpansEnabledTest.java index 693e99334c3..5ea04709cc7 100644 --- a/smoke-tests/apps/SpringCloudStream/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/SpringCloudStreamControllerSpansEnabledTest.java +++ b/smoke-tests/apps/SpringCloudStream/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/SpringCloudStreamControllerSpansEnabledTest.java @@ -77,7 +77,7 @@ void doMostBasicTest() throws Exception { assertThat(rdd1.getProperties()).isEmpty(); assertThat(rdd1.getSuccess()).isTrue(); - assertThat(rdd2.getName()).isEqualTo("greetings send"); + assertThat(rdd2.getName()).isEqualTo("greetings publish"); assertThat(rdd2.getData()).isNull(); assertThat(rdd2.getType()).isEqualTo("Queue Message | kafka"); assertThat(rdd2.getTarget()).isEqualTo("greetings"); diff --git a/smoke-tests/apps/SpringCloudStream/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/SpringCloudStreamTest.java b/smoke-tests/apps/SpringCloudStream/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/SpringCloudStreamTest.java index e823ec66b7b..f2d03ee0374 100644 --- a/smoke-tests/apps/SpringCloudStream/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/SpringCloudStreamTest.java +++ b/smoke-tests/apps/SpringCloudStream/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/SpringCloudStreamTest.java @@ -63,7 +63,7 @@ void doMostBasicTest() throws Exception { .containsExactly(entry("_MS.ProcessedByMetricExtractors", "True")); assertThat(rd1.getSuccess()).isTrue(); - assertThat(rdd1.getName()).isEqualTo("greetings send"); + assertThat(rdd1.getName()).isEqualTo("greetings publish"); assertThat(rdd1.getData()).isNull(); assertThat(rdd1.getType()).isEqualTo("Queue Message | kafka"); assertThat(rdd1.getTarget()).isEqualTo("greetings");