diff --git a/.github/workflows/comment-on-asciidoc-changes.yml b/.github/workflows/comment-on-asciidoc-changes.yml
new file mode 100644
index 0000000000..8e5f836b14
--- /dev/null
+++ b/.github/workflows/comment-on-asciidoc-changes.yml
@@ -0,0 +1,21 @@
+---
+name: Comment on PR for .asciidoc changes
+
+on:
+ # We need to use pull_request_target to be able to comment on PRs from forks
+ pull_request_target:
+ types:
+ - synchronize
+ - opened
+ - reopened
+ branches:
+ - main
+ - master
+ - "9.0"
+
+jobs:
+ comment-on-asciidoc-change:
+ permissions:
+ contents: read
+ pull-requests: write
+ uses: elastic/docs-builder/.github/workflows/comment-on-asciidoc-changes.yml@main
diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml
index 0bd0bf20f4..61a81a005f 100644
--- a/.github/workflows/labeler.yml
+++ b/.github/workflows/labeler.yml
@@ -45,8 +45,8 @@ jobs:
github-user: ${{ github.actor }}
github-token: ${{ steps.get_token.outputs.token }}
- - name: Add community and triage lables
- if: contains(steps.is_elastic_member.outputs.result, 'false') && github.actor != 'dependabot[bot]' && github.actor != 'elastic-renovate-prod[bot]'
+ - name: Add community and triage labels
+ if: contains(steps.is_elastic_member.outputs.result, 'false') && github.actor != 'dependabot[bot]' && github.actor != 'elastic-renovate-prod[bot]' && github.actor != 'elastic-observability-automation[bot]'
uses: actions/github-script@v7
with:
script: |
@@ -57,7 +57,7 @@ jobs:
labels: ["community", "triage"]
})
- name: Add comment for community PR
- if: contains(steps.is_elastic_member.outputs.result, 'false') && github.actor != 'dependabot[bot]' && github.actor != 'elastic-renovate-prod[bot]'
+ if: contains(steps.is_elastic_member.outputs.result, 'false') && github.actor != 'dependabot[bot]' && github.actor != 'elastic-renovate-prod[bot]' && github.actor != 'elastic-observability-automation[bot]'
uses: wow-actions/auto-comment@v1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 9873953b73..90a698be19 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -216,8 +216,7 @@ jobs:
contains(github.event.pull_request.labels.*.name, 'ci:agent-integration')
|| github.event.pull_request.draft == false
|| inputs.agent_integration_tests_ci == true
- # Pinned to ubuntu 20.04 until https://github.com/elastic/apm-agent-java/issues/3035 is solved.
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-22.04
needs: build
steps:
- uses: actions/checkout@v4
diff --git a/.github/workflows/microbenchmark.yml b/.github/workflows/microbenchmark.yml
index f1814b2e4b..859eac4334 100644
--- a/.github/workflows/microbenchmark.yml
+++ b/.github/workflows/microbenchmark.yml
@@ -24,7 +24,7 @@ jobs:
timeout-minutes: 5
steps:
- name: Run microbenchmark
- uses: elastic/oblt-actions/buildkite/run@v1.5.0
+ uses: elastic/oblt-actions/buildkite/run@v1
env:
JAVA_VERSION: ${{ inputs.java_version || 'openjdk-17+35-linux' }}
with:
diff --git a/.github/workflows/release-step-3.yml b/.github/workflows/release-step-3.yml
index b525aaec3a..a389aa2b65 100644
--- a/.github/workflows/release-step-3.yml
+++ b/.github/workflows/release-step-3.yml
@@ -105,7 +105,7 @@ jobs:
run: tar xvf ${{ env.TARBALL_FILE }}
- name: generate build provenance
- uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c # v1.4.3
+ uses: actions/attest-build-provenance@520d128f165991a6c774bcb264f323e3d70747f4 # v2.2.0
with:
subject-path: "${{ github.workspace }}/**/target/*.jar"
@@ -168,7 +168,7 @@ jobs:
uses: ./.github/workflows/maven-goal
with:
command: ./mvnw dependency:purge-local-repository package -pl apm-agent-lambda-layer
- - uses: elastic/oblt-actions/aws/auth@v1.10.0
+ - uses: elastic/oblt-actions/aws/auth@v1
with:
aws-account-id: '267093732750'
- name: Publish
@@ -240,6 +240,8 @@ jobs:
- name: Update major branch
if: ${{ ! inputs.dry_run }}
run: .ci/release/update-major-branch.sh ${{ env.RELEASE_VERSION }}
+ env:
+ GH_TOKEN: ${{ steps.get_token.outputs.token }}
create-github-release:
name: "Create GitHub Release"
diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml
index 7234cf16aa..d098c23a49 100644
--- a/.github/workflows/snapshot.yml
+++ b/.github/workflows/snapshot.yml
@@ -69,7 +69,7 @@ jobs:
run: tar xvf ${{ env.TARBALL_FILE }}
- name: generate build provenance
- uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c # v1.4.3
+ uses: actions/attest-build-provenance@520d128f165991a6c774bcb264f323e3d70747f4 # v2.2.0
with:
subject-path: "${{ github.workspace }}/**/target/*.jar"
diff --git a/.github/workflows/updatecli.yml b/.github/workflows/updatecli.yml
index c8f4b4fb08..739fd40ffa 100644
--- a/.github/workflows/updatecli.yml
+++ b/.github/workflows/updatecli.yml
@@ -38,12 +38,14 @@ jobs:
- uses: elastic/oblt-actions/updatecli/run@v1
with:
command: --experimental compose diff
+ version-file: .tool-versions
env:
GITHUB_TOKEN: ${{ steps.get_token.outputs.token }}
- uses: elastic/oblt-actions/updatecli/run@v1
with:
command: --experimental compose apply
+ version-file: .tool-versions
env:
GITHUB_TOKEN: ${{ steps.get_token.outputs.token }}
diff --git a/.tool-versions b/.tool-versions
new file mode 100644
index 0000000000..c245dc5318
--- /dev/null
+++ b/.tool-versions
@@ -0,0 +1 @@
+updatecli v0.94.1
\ No newline at end of file
diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc
index f9e5649743..2bc650e7de 100644
--- a/CHANGELOG.asciidoc
+++ b/CHANGELOG.asciidoc
@@ -34,6 +34,16 @@ Use subheadings with the "=====" level for adding notes for unreleased changes:
[[release-notes-1.x]]
=== Java Agent version 1.x
+[[release-notes-1.52.2]]
+==== 1.52.2 - 2025/02/27
+
+[float]
+===== Bug fixes
+* Prevent NPE in OpenTelemetry metrics bridge in case of asynchronous agent start - {pull}3880[#3880]
+* Fix random Weblogic ClassNotFoundException related to thread context classloader - {pull}3870[#3870]
+* Skips using NOFOLLOW_LINKS file open option when running on OS/400 as it's unsupported there - {pull}3905[#3905]
+* Add framework name and version for Spring Webflux transactions - {pull}3936[#3936]
+
[[release-notes-1.52.1]]
==== 1.52.1 - 2024/11/18
diff --git a/Dockerfile.wolfi b/Dockerfile.wolfi
index cab73524af..6daf85dad6 100644
--- a/Dockerfile.wolfi
+++ b/Dockerfile.wolfi
@@ -1,4 +1,4 @@
-FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:26caa6beaee2bbf739a82e91a35173892dfe888d0a744b9e46cdc19a90d8656f
+FROM docker.elastic.co/wolfi/chainguard-base:latest@sha256:0801a437e721bebdd2d5be62e3f63f60fc9d1d82efacabe4c5b8792d74ae7006
RUN mkdir /usr/agent
ARG JAR_FILE
ARG HANDLER_FILE
diff --git a/apm-agent-api/pom.xml b/apm-agent-api/pom.xml
index 592a8db2f0..47f59995c9 100644
--- a/apm-agent-api/pom.xml
+++ b/apm-agent-api/pom.xml
@@ -5,7 +5,7 @@
apm-agent-parent
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-agent-api
diff --git a/apm-agent-attach-cli/pom.xml b/apm-agent-attach-cli/pom.xml
index 2473a5b8b7..dc902acda2 100644
--- a/apm-agent-attach-cli/pom.xml
+++ b/apm-agent-attach-cli/pom.xml
@@ -3,7 +3,7 @@
apm-agent-parent
co.elastic.apm
- 1.52.1
+ 1.52.2
4.0.0
diff --git a/apm-agent-attach/pom.xml b/apm-agent-attach/pom.xml
index 74807a7919..922e573550 100644
--- a/apm-agent-attach/pom.xml
+++ b/apm-agent-attach/pom.xml
@@ -5,7 +5,7 @@
apm-agent-parent
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-agent-attach
@@ -59,9 +59,6 @@
-
- maven-jar-plugin
-
maven-dependency-plugin
diff --git a/apm-agent-benchmarks/pom.xml b/apm-agent-benchmarks/pom.xml
index d8676048d7..8417867d66 100644
--- a/apm-agent-benchmarks/pom.xml
+++ b/apm-agent-benchmarks/pom.xml
@@ -5,7 +5,7 @@
apm-agent-parent
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-agent-benchmarks
diff --git a/apm-agent-bootstrap/pom.xml b/apm-agent-bootstrap/pom.xml
index d9faaeaff0..14b8922855 100644
--- a/apm-agent-bootstrap/pom.xml
+++ b/apm-agent-bootstrap/pom.xml
@@ -5,7 +5,7 @@
apm-agent-parent
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-agent-bootstrap
diff --git a/apm-agent-builds/apm-agent-java8/pom.xml b/apm-agent-builds/apm-agent-java8/pom.xml
index 5ef284ae58..34b35d37cc 100644
--- a/apm-agent-builds/apm-agent-java8/pom.xml
+++ b/apm-agent-builds/apm-agent-java8/pom.xml
@@ -5,7 +5,7 @@
co.elastic.apm
apm-agent-builds
- 1.52.1
+ 1.52.2
apm-agent-java8
@@ -21,7 +21,7 @@
org.apache.logging.log4j
log4j-bom
- 2.24.1
+ 2.24.3
import
pom
diff --git a/apm-agent-builds/apm-agent/pom.xml b/apm-agent-builds/apm-agent/pom.xml
index 0806d37132..2006ed36de 100644
--- a/apm-agent-builds/apm-agent/pom.xml
+++ b/apm-agent-builds/apm-agent/pom.xml
@@ -5,7 +5,7 @@
co.elastic.apm
apm-agent-builds
- 1.52.1
+ 1.52.2
apm-agent
diff --git a/apm-agent-builds/pom.xml b/apm-agent-builds/pom.xml
index 51fcdb28f7..3329c47e20 100644
--- a/apm-agent-builds/pom.xml
+++ b/apm-agent-builds/pom.xml
@@ -3,7 +3,7 @@
apm-agent-parent
co.elastic.apm
- 1.52.1
+ 1.52.2
4.0.0
@@ -314,7 +314,7 @@
${project.groupId}
- apm-rabbitmq-spring
+ apm-rabbitmq-spring5
${project.version}
diff --git a/apm-agent-cached-lookup-key/pom.xml b/apm-agent-cached-lookup-key/pom.xml
index 4ac452fda6..070510cfb7 100644
--- a/apm-agent-cached-lookup-key/pom.xml
+++ b/apm-agent-cached-lookup-key/pom.xml
@@ -3,7 +3,7 @@
apm-agent-parent
co.elastic.apm
- 1.52.1
+ 1.52.2
4.0.0
diff --git a/apm-agent-common/pom.xml b/apm-agent-common/pom.xml
index 56320091f7..eda99f3391 100644
--- a/apm-agent-common/pom.xml
+++ b/apm-agent-common/pom.xml
@@ -3,7 +3,7 @@
apm-agent-parent
co.elastic.apm
- 1.52.1
+ 1.52.2
4.0.0
diff --git a/apm-agent-common/src/main/java/co/elastic/apm/agent/common/JvmRuntimeInfo.java b/apm-agent-common/src/main/java/co/elastic/apm/agent/common/JvmRuntimeInfo.java
index d1b905b95a..8ddd83ee6b 100644
--- a/apm-agent-common/src/main/java/co/elastic/apm/agent/common/JvmRuntimeInfo.java
+++ b/apm-agent-common/src/main/java/co/elastic/apm/agent/common/JvmRuntimeInfo.java
@@ -39,6 +39,7 @@ public class JvmRuntimeInfo {
private final boolean isHpUx;
private final boolean isCoretto;
private final boolean isZos;
+ private final boolean isOs400;
public static JvmRuntimeInfo ofCurrentVM() {
return CURRENT_VM;
@@ -68,6 +69,7 @@ private JvmRuntimeInfo(String version, String vmName, String vendorName, @Nullab
isHpUx = version.endsWith("-hp-ux");
isCoretto = vendorName != null && vendorName.contains("Amazon");
isZos = (osName != null) && osName.toLowerCase().contains("z/os");
+ isOs400 = (osName != null) && osName.toLowerCase().contains("os/400");
if (isHpUx) {
// remove extra hp-ux suffix for parsing
@@ -153,7 +155,7 @@ public boolean isJ9VM() {
return isJ9;
}
- public boolean isHpUx(){
+ public boolean isHpUx() {
return isHpUx;
}
@@ -173,6 +175,10 @@ public boolean isZos() {
return isZos;
}
+ public boolean isOs400() {
+ return isOs400;
+ }
+
@Override
public String toString() {
return String.format("%s %s %s", javaVersion, javaVmName, javaVmVersion);
diff --git a/apm-agent-common/src/main/java/co/elastic/apm/agent/common/util/AgentInfo.java b/apm-agent-common/src/main/java/co/elastic/apm/agent/common/util/AgentInfo.java
index dbd2b1a9de..648d78f575 100644
--- a/apm-agent-common/src/main/java/co/elastic/apm/agent/common/util/AgentInfo.java
+++ b/apm-agent-common/src/main/java/co/elastic/apm/agent/common/util/AgentInfo.java
@@ -37,7 +37,8 @@ public class AgentInfo {
"com.lmax.disruptor",
"com.dslplatform.json",
"com.googlecode.concurrentlinkedhashmap",
- "co.elastic.otel"
+ "co.elastic.otel",
+ "codes.rafael.asmjdkbridge"
));
private static final Set agentRootPackages = new HashSet<>(Arrays.asList(
diff --git a/apm-agent-common/src/main/java/co/elastic/apm/agent/common/util/ResourceExtractionUtil.java b/apm-agent-common/src/main/java/co/elastic/apm/agent/common/util/ResourceExtractionUtil.java
index fcb4177ad3..be22567d85 100644
--- a/apm-agent-common/src/main/java/co/elastic/apm/agent/common/util/ResourceExtractionUtil.java
+++ b/apm-agent-common/src/main/java/co/elastic/apm/agent/common/util/ResourceExtractionUtil.java
@@ -101,9 +101,10 @@ public static synchronized Path extractResourceToDirectory(String resource, Stri
}
}
} catch (FileAlreadyExistsException e) {
- try (FileChannel channel = JvmRuntimeInfo.ofCurrentVM().isZos() ?
- FileChannel.open(tempFile, READ) :
- FileChannel.open(tempFile, READ, NOFOLLOW_LINKS)) {
+ JvmRuntimeInfo jvmRuntimeInfo = JvmRuntimeInfo.ofCurrentVM();
+ try (FileChannel channel = (jvmRuntimeInfo.isZos() || jvmRuntimeInfo.isOs400()) ?
+ FileChannel.open(tempFile, READ) :
+ FileChannel.open(tempFile, READ, NOFOLLOW_LINKS)) {
// wait until other JVM instances have fully written the file
// multiple JVMs can read the file at the same time
try (FileLock readLock = channel.lock(0, Long.MAX_VALUE, true)) {
diff --git a/apm-agent-core/pom.xml b/apm-agent-core/pom.xml
index 7c16502299..1d6f49b8ae 100644
--- a/apm-agent-core/pom.xml
+++ b/apm-agent-core/pom.xml
@@ -5,7 +5,7 @@
apm-agent-parent
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-agent-core
@@ -58,11 +58,6 @@
jctools-core
4.0.5
-
- com.googlecode.concurrentlinkedhashmap
- concurrentlinkedhashmap-lru
- 1.4.2
-
org.apache.logging.log4j
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/IndyBootstrap.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/IndyBootstrap.java
index 659a5b8c23..3380bc1b06 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/IndyBootstrap.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/bci/IndyBootstrap.java
@@ -219,6 +219,7 @@ public class IndyBootstrap {
static Method bootstrapLoggingMethod;
private static final CallDepth callDepth = CallDepth.get(IndyBootstrap.class);
+ private static final CallDepth loggingForNestedCall = CallDepth.get("indy-bootstrap-nested-logging");
private static Logger logger() {
// must not be a static field as it would initialize logging before it's ready
@@ -430,7 +431,12 @@ private static ConstantCallSite internalBootstrap(MethodHandles.Lookup lookup, S
// avoid re-entrancy and stack overflow errors
// may happen when bootstrapping an instrumentation that also gets triggered during the bootstrap
// for example, adding correlation ids to the thread context when executing logger.debug.
- logger().warn("Nested instrumented invokedynamic instruction linkage detected", new Throwable());
+ if (!loggingForNestedCall.isNestedCallAndIncrement()) {
+ // We might be unlucky and cause an infinite recurison through logger()
+ // for this reason we have the loggingForNestedCall in place to prevent this recursion
+ logger().warn("Nested instrumented invokedynamic instruction linkage detected", new Throwable());
+ }
+ loggingForNestedCall.decrement();
return null;
}
String adviceClassName = (String) args[0];
@@ -498,7 +504,7 @@ private static ConstantCallSite internalBootstrap(MethodHandles.Lookup lookup, S
// When calling findStatic now, the lookup class will be one that is loaded by the plugin class loader
MethodHandle methodHandle = indyLookup.findStatic(adviceInPluginCL, adviceMethodName, adviceMethodType);
return new ConstantCallSite(methodHandle);
- } catch (Exception e) {
+ } catch (Throwable e) {
logger().error(e.getMessage(), e);
return null;
} finally {
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/configuration/CoreConfigurationImpl.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/configuration/CoreConfigurationImpl.java
index 7c42ebc23e..3f9b0f504c 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/configuration/CoreConfigurationImpl.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/configuration/CoreConfigurationImpl.java
@@ -25,7 +25,13 @@
import co.elastic.apm.agent.matcher.MethodMatcherValueConverter;
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
-import co.elastic.apm.agent.tracer.configuration.*;
+import co.elastic.apm.agent.tracer.configuration.CoreConfiguration;
+import co.elastic.apm.agent.tracer.configuration.ListValueConverter;
+import co.elastic.apm.agent.tracer.configuration.RegexValidator;
+import co.elastic.apm.agent.tracer.configuration.RoundedDoubleConverter;
+import co.elastic.apm.agent.tracer.configuration.TimeDuration;
+import co.elastic.apm.agent.tracer.configuration.TimeDurationValueConverter;
+import co.elastic.apm.agent.tracer.configuration.WildcardMatcherValueConverter;
import org.stagemonitor.configuration.ConfigurationOption;
import org.stagemonitor.configuration.ConfigurationOptionProvider;
import org.stagemonitor.configuration.converter.AbstractValueConverter;
@@ -696,7 +702,8 @@ public String toSafeString(List value) {
.key("central_config")
.tags("added[1.8.0]")
.configurationCategory(CORE_CATEGORY)
- .description("When enabled, the agent will make periodic requests to the APM Server to fetch updated configuration.")
+ .description("When enabled, the agent will make periodic requests to the APM Server to fetch updated configuration.\n"
+ + "The frequency of the periodic request is driven by the `Cache-Control` header returned from APM Server/Integration, falling back to 5 minutes if not defined.")
.dynamic(true)
.buildWithDefault(true);
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/report/AbstractIntakeApiHandler.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/report/AbstractIntakeApiHandler.java
index 5fea031483..f10f8dc0d4 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/report/AbstractIntakeApiHandler.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/report/AbstractIntakeApiHandler.java
@@ -22,6 +22,7 @@
import co.elastic.apm.agent.report.serialize.SerializationConstants;
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
+import co.elastic.apm.agent.util.UrlConnectionUtils;
import org.stagemonitor.util.IOUtils;
import javax.annotation.Nullable;
@@ -93,63 +94,64 @@ protected boolean shouldEndRequest() {
protected HttpURLConnection startRequest(String endpoint) throws Exception {
payloadSerializer.blockUntilReady();
final HttpURLConnection connection = apmServerClient.startRequest(endpoint);
- if (connection != null) {
+ if (connection == null) {
+ return null;
+ }
+ try (UrlConnectionUtils.ContextClassloaderScope clScope = UrlConnectionUtils.withContextClassloaderOf(connection)){
+ if (logger.isDebugEnabled()) {
+ logger.debug("Starting new request to {}", connection.getURL());
+ }
boolean useCompression = !isLocalhost(connection);
+ connection.setRequestMethod("POST");
+ connection.setDoOutput(true);
+ connection.setChunkedStreamingMode(SerializationConstants.BUFFER_SIZE);
+ if (useCompression) {
+ connection.setRequestProperty("Content-Encoding", "deflate");
+ }
+ connection.setRequestProperty("Content-Type", "application/x-ndjson");
+ connection.setUseCaches(false);
+ connection.connect();
+ countingOs = new CountingOutputStream(connection.getOutputStream()); // TODO : here
+ if (useCompression) {
+ os = new DeflaterOutputStream(countingOs, deflater, true);
+ } else {
+ os = countingOs;
+ }
+ payloadSerializer.setOutputStream(os);
+ payloadSerializer.appendMetaDataNdJsonToStream();
+ payloadSerializer.flushToOutputStream();
+ requestStartedNanos = System.nanoTime();
+ } catch (IOException e) {
try {
- if (logger.isDebugEnabled()) {
- logger.debug("Starting new request to {}", connection.getURL());
- }
- connection.setRequestMethod("POST");
- connection.setDoOutput(true);
- connection.setChunkedStreamingMode(SerializationConstants.BUFFER_SIZE);
- if (useCompression) {
- connection.setRequestProperty("Content-Encoding", "deflate");
- }
- connection.setRequestProperty("Content-Type", "application/x-ndjson");
- connection.setUseCaches(false);
- connection.connect();
- countingOs = new CountingOutputStream(connection.getOutputStream());
- if (useCompression) {
- os = new DeflaterOutputStream(countingOs, deflater, true);
- } else {
- os = countingOs;
- }
- payloadSerializer.setOutputStream(os);
- payloadSerializer.appendMetaDataNdJsonToStream();
- payloadSerializer.flushToOutputStream();
- requestStartedNanos = System.nanoTime();
- } catch (IOException e) {
- try {
- logger.error("Error trying to connect to APM Server at {}. Although not necessarily related to SSL, some related SSL " +
- "configurations corresponding the current connection are logged at INFO level.", connection.getURL());
- if (logger.isInfoEnabled() && connection instanceof HttpsURLConnection) {
- HttpsURLConnection httpsURLConnection = (HttpsURLConnection) connection;
- try {
- logger.info("Cipher suite used for this connection: {}", httpsURLConnection.getCipherSuite());
- } catch (Exception e1) {
- SSLSocketFactory sslSocketFactory = httpsURLConnection.getSSLSocketFactory();
- logger.info("Default cipher suites: {}", Arrays.toString(sslSocketFactory.getDefaultCipherSuites()));
- logger.info("Supported cipher suites: {}", Arrays.toString(sslSocketFactory.getSupportedCipherSuites()));
- }
- try {
- logger.info("APM Server certificates: {}", Arrays.toString(httpsURLConnection.getServerCertificates()));
- } catch (Exception e1) {
- // ignore - invalid
- }
- try {
- logger.info("Local certificates: {}", Arrays.toString(httpsURLConnection.getLocalCertificates()));
- } catch (Exception e1) {
- // ignore - invalid
- }
+ logger.error("Error trying to connect to APM Server at {}. Although not necessarily related to SSL, some related SSL " +
+ "configurations corresponding the current connection are logged at INFO level.", connection.getURL());
+ if (logger.isInfoEnabled() && connection instanceof HttpsURLConnection) {
+ HttpsURLConnection httpsURLConnection = (HttpsURLConnection) connection;
+ try {
+ logger.info("Cipher suite used for this connection: {}", httpsURLConnection.getCipherSuite());
+ } catch (Exception e1) {
+ SSLSocketFactory sslSocketFactory = httpsURLConnection.getSSLSocketFactory();
+ logger.info("Default cipher suites: {}", Arrays.toString(sslSocketFactory.getDefaultCipherSuites()));
+ logger.info("Supported cipher suites: {}", Arrays.toString(sslSocketFactory.getSupportedCipherSuites()));
+ }
+ try {
+ logger.info("APM Server certificates: {}", Arrays.toString(httpsURLConnection.getServerCertificates()));
+ } catch (Exception e1) {
+ // ignore - invalid
+ }
+ try {
+ logger.info("Local certificates: {}", Arrays.toString(httpsURLConnection.getLocalCertificates()));
+ } catch (Exception e1) {
+ // ignore - invalid
}
- } finally {
- closeAndSuppressErrors(connection);
}
- throw e;
- } catch (Throwable t) {
+ } finally {
closeAndSuppressErrors(connection);
- throw t;
}
+ throw e;
+ } catch (Throwable t) {
+ closeAndSuppressErrors(connection);
+ throw t;
}
return connection;
}
@@ -188,7 +190,10 @@ protected void endRequestExceptionally() {
}
private void endRequest(boolean isFailed) {
- if (connection != null) {
+ if (connection == null) {
+ return;
+ }
+ try (UrlConnectionUtils.ContextClassloaderScope clScope = UrlConnectionUtils.withContextClassloaderOf(connection)) {
long writtenBytes = countingOs != null ? countingOs.getCount() : 0L;
try {
payloadSerializer.fullFlush();
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/report/ApmServerClient.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/report/ApmServerClient.java
index 9c9d198c0c..c2e8234fc5 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/report/ApmServerClient.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/report/ApmServerClient.java
@@ -265,8 +265,10 @@ public V execute(String path, ConnectionHandler connectionHandler) throws
Exception previousException = null;
for (URL serverUrl : prioritizedUrlList) {
HttpURLConnection connection = null;
+ UrlConnectionUtils.ContextClassloaderScope clScope = null;
try {
connection = startRequestToUrl(appendPath(serverUrl, path));
+ clScope = UrlConnectionUtils.withContextClassloaderOf(connection);
return connectionHandler.withConnection(connection);
} catch (Exception e) {
expectedErrorCount = incrementAndGetErrorCount(expectedErrorCount);
@@ -277,6 +279,9 @@ public V execute(String path, ConnectionHandler connectionHandler) throws
previousException = e;
} finally {
HttpUtils.consumeAndClose(connection);
+ if (clScope != null) {
+ clScope.close();
+ }
}
}
if (previousException == null) {
@@ -290,13 +295,19 @@ public List executeForAllUrls(String path, ConnectionHandler connectio
List results = new ArrayList<>(serverUrls.size());
for (URL serverUrl : serverUrls) {
HttpURLConnection connection = null;
+ UrlConnectionUtils.ContextClassloaderScope clScope = null;
try {
connection = startRequestToUrl(appendPath(serverUrl, path));
+ clScope = UrlConnectionUtils.withContextClassloaderOf(connection);
results.add(connectionHandler.withConnection(connection));
} catch (Exception e) {
logger.debug("Exception while interacting with APM Server", e);
} finally {
HttpUtils.consumeAndClose(connection);
+ if (clScope != null) {
+ clScope.close();
+ }
+
}
}
return results;
@@ -436,6 +447,7 @@ private static String getUserAgent(CoreConfigurationImpl coreConfiguration) {
/**
* Escapes the provided string from characters that are disallowed within HTTP header comments.
* See spec- https://httpwg.org/specs/rfc7230.html#field.components
+ *
* @param headerFieldComment HTTP header comment value to be escaped
* @return the escaped header comment
*/
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/report/PartialTransactionReporter.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/report/PartialTransactionReporter.java
index e88e5d603b..fa2635b50c 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/report/PartialTransactionReporter.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/report/PartialTransactionReporter.java
@@ -26,6 +26,7 @@
import co.elastic.apm.agent.sdk.logging.Logger;
import co.elastic.apm.agent.sdk.logging.LoggerFactory;
import co.elastic.apm.agent.tracer.pooling.Allocator;
+import co.elastic.apm.agent.util.UrlConnectionUtils;
import java.net.HttpURLConnection;
@@ -67,27 +68,30 @@ public void reportPartialTransaction(TransactionImpl transaction) {
logger.debug("Cannot report partial transaction because server url is not configured");
return;
}
- connection.setRequestMethod("POST");
- connection.setDoOutput(true);
- connection.setChunkedStreamingMode(SerializationConstants.BUFFER_SIZE);
- connection.setRequestProperty("Content-Type", "application/vnd.elastic.apm.transaction+ndjson");
- connection.setRequestProperty("x-elastic-aws-request-id", requestId);
- connection.setUseCaches(false);
- connection.connect();
- DslJsonSerializer.Writer writer = writerPool.createInstance();
- try {
- writer.setOutputStream(connection.getOutputStream());
- writer.blockUntilReady(); //should actually not block on AWS Lambda, as metadata is available immediately
- writer.appendMetaDataNdJsonToStream();
- writer.serializeTransactionNdJson(transaction);
- writer.fullFlush();
- } finally {
- writerPool.recycle(writer);
- }
+ try (UrlConnectionUtils.ContextClassloaderScope clScope = UrlConnectionUtils.withContextClassloaderOf(connection)) {
+ connection.setRequestMethod("POST");
+ connection.setDoOutput(true);
+ connection.setChunkedStreamingMode(SerializationConstants.BUFFER_SIZE);
+ connection.setRequestProperty("Content-Type", "application/vnd.elastic.apm.transaction+ndjson");
+ connection.setRequestProperty("x-elastic-aws-request-id", requestId);
+ connection.setUseCaches(false);
+ connection.connect();
+
+ DslJsonSerializer.Writer writer = writerPool.createInstance();
+ try {
+ writer.setOutputStream(connection.getOutputStream());
+ writer.blockUntilReady(); //should actually not block on AWS Lambda, as metadata is available immediately
+ writer.appendMetaDataNdJsonToStream();
+ writer.serializeTransactionNdJson(transaction);
+ writer.fullFlush();
+ } finally {
+ writerPool.recycle(writer);
+ }
- handleResponse(connection);
- connection.disconnect();
+ handleResponse(connection);
+ connection.disconnect();
+ }
} catch (Exception e) {
logger.error("Failed to report partial transaction {}", transaction, e);
diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/UrlConnectionUtils.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/util/UrlConnectionUtils.java
index 631e1f18d1..67f6195b5d 100644
--- a/apm-agent-core/src/main/java/co/elastic/apm/agent/util/UrlConnectionUtils.java
+++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/util/UrlConnectionUtils.java
@@ -23,7 +23,9 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import javax.annotation.Nullable;
import java.io.IOException;
+import java.net.HttpURLConnection;
import java.net.Proxy;
import java.net.ProxySelector;
import java.net.URISyntaxException;
@@ -87,4 +89,48 @@ private static void debugPrintProxySettings(URL url, boolean allowProxy) {
}
}
}
+
+ public static ContextClassloaderScope withContextClassloaderOf(HttpURLConnection connection) {
+ Class> type = connection.getClass();
+ // so far, only weblogic is known to use context CL to load parts of the SSL/TLS communication
+ // see https://github.com/elastic/apm-agent-java/issues/2409 for background on why this is needed
+ boolean override = type.getCanonicalName().startsWith("weblogic.");
+ return withContextClassloader(type.getClassLoader(), override);
+ }
+
+ // package private for testing
+ static ContextClassloaderScope withContextClassloader(@Nullable ClassLoader cl, boolean override) {
+ if (!override) {
+ return ContextClassloaderScope.NOOP;
+ }
+ return new ContextClassloaderScope(cl, false);
+ }
+
+ public static class ContextClassloaderScope implements AutoCloseable {
+
+ private static final ContextClassloaderScope NOOP = new ContextClassloaderScope(null, true);
+
+ private final boolean noop;
+ @Nullable
+ private final ClassLoader previous;
+
+ private ContextClassloaderScope(@Nullable ClassLoader classLoader, boolean noop) {
+ this.noop = noop;
+ if (noop) {
+ this.previous = null;
+ return;
+ }
+ this.previous = Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader(classLoader);
+ }
+
+ @Override
+ public void close() {
+ if (noop) {
+ return;
+ }
+ Thread.currentThread().setContextClassLoader(previous);
+
+ }
+ }
}
diff --git a/apm-agent-core/src/test/java/co/elastic/apm/agent/util/UrlConnectionUtilsTest.java b/apm-agent-core/src/test/java/co/elastic/apm/agent/util/UrlConnectionUtilsTest.java
new file mode 100644
index 0000000000..3231165124
--- /dev/null
+++ b/apm-agent-core/src/test/java/co/elastic/apm/agent/util/UrlConnectionUtilsTest.java
@@ -0,0 +1,80 @@
+/*
+ * Licensed to Elasticsearch B.V. under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch B.V. licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package co.elastic.apm.agent.util;
+
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import javax.annotation.Nullable;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+class UrlConnectionUtilsTest {
+
+ @BeforeEach
+ void beforeEach() {
+ Thread.currentThread().setContextClassLoader(null);
+ }
+
+ @AfterEach
+ void afterEach() {
+ Thread.currentThread().setContextClassLoader(null);
+ }
+
+ @Test
+ void threadContextClassLoader_noop() {
+ ClassLoader cl = UrlConnectionUtils.class.getClassLoader();
+ testContextClassLoader(null, null, false);
+ testContextClassLoader(cl, cl, false);
+ }
+
+ @Test
+ void threadContextClassLoader_override() {
+ ClassLoader cl = UrlConnectionUtils.class.getClassLoader();
+ testContextClassLoader(null, cl, true);
+ testContextClassLoader(cl, cl, true);
+
+ DummyClassLoader overrideCl = new DummyClassLoader();
+ testContextClassLoader(null, overrideCl, true);
+ testContextClassLoader(cl, overrideCl, true);
+ }
+
+ private void testContextClassLoader(@Nullable ClassLoader initialClassLoader, @Nullable ClassLoader scopeClassLoader, boolean override) {
+ Thread.currentThread().setContextClassLoader(initialClassLoader);
+ checkContextClassLoader(initialClassLoader);
+ try (UrlConnectionUtils.ContextClassloaderScope scope = UrlConnectionUtils.withContextClassloader(scopeClassLoader, override)) {
+ checkContextClassLoader(scopeClassLoader);
+ }
+ checkContextClassLoader(initialClassLoader);
+ }
+
+ private void checkContextClassLoader(@Nullable ClassLoader expected) {
+ ClassLoader threadContextCl = Thread.currentThread().getContextClassLoader();
+ if (expected == null) {
+ assertThat(threadContextCl).isNull();
+ } else {
+ assertThat(threadContextCl).isSameAs(expected);
+ }
+ }
+
+ private static class DummyClassLoader extends ClassLoader {
+
+ }
+}
diff --git a/apm-agent-core/src/test/resources/apm-server-schema/current/span.json b/apm-agent-core/src/test/resources/apm-server-schema/current/span.json
index e86da9a69c..14eea1b15b 100644
--- a/apm-agent-core/src/test/resources/apm-server-schema/current/span.json
+++ b/apm-agent-core/src/test/resources/apm-server-schema/current/span.json
@@ -188,6 +188,9 @@
"object"
],
"properties": {
+ "body": {
+ "description": "The http request body usually as a string, but may be a dictionary for multipart/form-data content"
+ },
"id": {
"description": "ID holds the unique identifier for the http request.",
"type": [
diff --git a/apm-agent-lambda-layer/pom.xml b/apm-agent-lambda-layer/pom.xml
index 55ee59d512..33dfc90b4c 100644
--- a/apm-agent-lambda-layer/pom.xml
+++ b/apm-agent-lambda-layer/pom.xml
@@ -3,7 +3,7 @@
apm-agent-parent
co.elastic.apm
- 1.52.1
+ 1.52.2
4.0.0
diff --git a/apm-agent-plugin-sdk/pom.xml b/apm-agent-plugin-sdk/pom.xml
index 045f7ac524..e7837746ec 100644
--- a/apm-agent-plugin-sdk/pom.xml
+++ b/apm-agent-plugin-sdk/pom.xml
@@ -3,7 +3,7 @@
apm-agent-parent
co.elastic.apm
- 1.52.1
+ 1.52.2
4.0.0
diff --git a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/state/CallDepth.java b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/state/CallDepth.java
index 72e8129253..3dcf1e8545 100644
--- a/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/state/CallDepth.java
+++ b/apm-agent-plugin-sdk/src/main/java/co/elastic/apm/agent/sdk/state/CallDepth.java
@@ -43,6 +43,10 @@ private CallDepth() {
public static CallDepth get(Class> adviceClass) {
// we want to return the same CallDepth instance even if the advice class has been loaded from different class loaders
String key = adviceClass.getName();
+ return get(key);
+ }
+
+ public static CallDepth get(String key) {
CallDepth callDepth = registry.get(key);
if (callDepth == null) {
registry.putIfAbsent(key, new CallDepth());
diff --git a/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient-common/pom.xml b/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient-common/pom.xml
index 3853492a9b..d4bb0bb595 100644
--- a/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient-common/pom.xml
+++ b/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient-common/pom.xml
@@ -5,7 +5,7 @@
apm-apache-httpclient
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-apache-httpclient-common
diff --git a/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient3-plugin/pom.xml b/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient3-plugin/pom.xml
index 76b9b67f16..10976f9797 100644
--- a/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient3-plugin/pom.xml
+++ b/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient3-plugin/pom.xml
@@ -5,7 +5,7 @@
apm-apache-httpclient
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-apache-httpclient3-plugin
diff --git a/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient4-plugin/pom.xml b/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient4-plugin/pom.xml
index b10abd58ee..3b2b74ef20 100644
--- a/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient4-plugin/pom.xml
+++ b/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient4-plugin/pom.xml
@@ -5,7 +5,7 @@
apm-apache-httpclient
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-apache-httpclient4-plugin
diff --git a/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient5-plugin/pom.xml b/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient5-plugin/pom.xml
index b9ab1e146e..c1aede353e 100644
--- a/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient5-plugin/pom.xml
+++ b/apm-agent-plugins/apm-apache-httpclient/apm-apache-httpclient5-plugin/pom.xml
@@ -4,7 +4,7 @@
co.elastic.apm
apm-apache-httpclient
- 1.52.1
+ 1.52.2
apm-apache-httpclient5-plugin
diff --git a/apm-agent-plugins/apm-apache-httpclient/pom.xml b/apm-agent-plugins/apm-apache-httpclient/pom.xml
index d3e32a5e79..c906cee39e 100644
--- a/apm-agent-plugins/apm-apache-httpclient/pom.xml
+++ b/apm-agent-plugins/apm-apache-httpclient/pom.xml
@@ -5,7 +5,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-apache-httpclient
diff --git a/apm-agent-plugins/apm-api-plugin/pom.xml b/apm-agent-plugins/apm-api-plugin/pom.xml
index 09a9c8ed5e..df765970af 100644
--- a/apm-agent-plugins/apm-api-plugin/pom.xml
+++ b/apm-agent-plugins/apm-api-plugin/pom.xml
@@ -5,7 +5,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
diff --git a/apm-agent-plugins/apm-asynchttpclient-plugin/pom.xml b/apm-agent-plugins/apm-asynchttpclient-plugin/pom.xml
index fd76050c8c..8f9bf98598 100644
--- a/apm-agent-plugins/apm-asynchttpclient-plugin/pom.xml
+++ b/apm-agent-plugins/apm-asynchttpclient-plugin/pom.xml
@@ -5,7 +5,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-asynchttpclient-plugin
diff --git a/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-1-plugin/pom.xml b/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-1-plugin/pom.xml
index 0c39457e87..ecb3b048e8 100644
--- a/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-1-plugin/pom.xml
+++ b/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-1-plugin/pom.xml
@@ -3,7 +3,7 @@
apm-aws-sdk
co.elastic.apm
- 1.52.1
+ 1.52.2
4.0.0
@@ -12,7 +12,7 @@
${project.basedir}/../../..
- 1.12.777
+ 1.12.780
1.1.0
diff --git a/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-2-plugin/pom.xml b/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-2-plugin/pom.xml
index 555d6a6ca8..fd420af11d 100644
--- a/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-2-plugin/pom.xml
+++ b/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-2-plugin/pom.xml
@@ -3,7 +3,7 @@
apm-aws-sdk
co.elastic.apm
- 1.52.1
+ 1.52.2
4.0.0
@@ -13,7 +13,7 @@
${project.basedir}/../../..
- 2.29.5
+ 2.30.11
2.0.0
8
diff --git a/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-common/pom.xml b/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-common/pom.xml
index 75023fa432..775af3d4f3 100644
--- a/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-common/pom.xml
+++ b/apm-agent-plugins/apm-aws-sdk/apm-aws-sdk-common/pom.xml
@@ -3,7 +3,7 @@
apm-aws-sdk
co.elastic.apm
- 1.52.1
+ 1.52.2
4.0.0
diff --git a/apm-agent-plugins/apm-aws-sdk/pom.xml b/apm-agent-plugins/apm-aws-sdk/pom.xml
index 72acf73571..80c8515790 100644
--- a/apm-agent-plugins/apm-aws-sdk/pom.xml
+++ b/apm-agent-plugins/apm-aws-sdk/pom.xml
@@ -3,7 +3,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
4.0.0
diff --git a/apm-agent-plugins/apm-awslambda-plugin/pom.xml b/apm-agent-plugins/apm-awslambda-plugin/pom.xml
index ced51a9084..6ebcc4a89f 100644
--- a/apm-agent-plugins/apm-awslambda-plugin/pom.xml
+++ b/apm-agent-plugins/apm-awslambda-plugin/pom.xml
@@ -3,7 +3,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
4.0.0
diff --git a/apm-agent-plugins/apm-cassandra/apm-cassandra-core-plugin/pom.xml b/apm-agent-plugins/apm-cassandra/apm-cassandra-core-plugin/pom.xml
index 90c02e8d40..503d60fa16 100644
--- a/apm-agent-plugins/apm-cassandra/apm-cassandra-core-plugin/pom.xml
+++ b/apm-agent-plugins/apm-cassandra/apm-cassandra-core-plugin/pom.xml
@@ -3,7 +3,7 @@
apm-cassandra
co.elastic.apm
- 1.52.1
+ 1.52.2
4.0.0
diff --git a/apm-agent-plugins/apm-cassandra/apm-cassandra3-plugin/pom.xml b/apm-agent-plugins/apm-cassandra/apm-cassandra3-plugin/pom.xml
index c8a7ae48b5..d6638eb6a7 100644
--- a/apm-agent-plugins/apm-cassandra/apm-cassandra3-plugin/pom.xml
+++ b/apm-agent-plugins/apm-cassandra/apm-cassandra3-plugin/pom.xml
@@ -3,7 +3,7 @@
apm-cassandra
co.elastic.apm
- 1.52.1
+ 1.52.2
4.0.0
diff --git a/apm-agent-plugins/apm-cassandra/apm-cassandra4-plugin/pom.xml b/apm-agent-plugins/apm-cassandra/apm-cassandra4-plugin/pom.xml
index a12d618cba..4f19d37de1 100644
--- a/apm-agent-plugins/apm-cassandra/apm-cassandra4-plugin/pom.xml
+++ b/apm-agent-plugins/apm-cassandra/apm-cassandra4-plugin/pom.xml
@@ -3,7 +3,7 @@
apm-cassandra
co.elastic.apm
- 1.52.1
+ 1.52.2
4.0.0
diff --git a/apm-agent-plugins/apm-cassandra/pom.xml b/apm-agent-plugins/apm-cassandra/pom.xml
index d3b36870b6..dcbd89afa1 100644
--- a/apm-agent-plugins/apm-cassandra/pom.xml
+++ b/apm-agent-plugins/apm-cassandra/pom.xml
@@ -3,7 +3,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
4.0.0
diff --git a/apm-agent-plugins/apm-dubbo-plugin/pom.xml b/apm-agent-plugins/apm-dubbo-plugin/pom.xml
index bc644c120e..eae7bb2768 100644
--- a/apm-agent-plugins/apm-dubbo-plugin/pom.xml
+++ b/apm-agent-plugins/apm-dubbo-plugin/pom.xml
@@ -3,7 +3,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
4.0.0
diff --git a/apm-agent-plugins/apm-ecs-logging-plugin/pom.xml b/apm-agent-plugins/apm-ecs-logging-plugin/pom.xml
index ef580031dc..ddbd00420d 100644
--- a/apm-agent-plugins/apm-ecs-logging-plugin/pom.xml
+++ b/apm-agent-plugins/apm-ecs-logging-plugin/pom.xml
@@ -5,7 +5,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-ecs-logging-plugin
diff --git a/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-5_6/pom.xml b/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-5_6/pom.xml
index 41ddef4f5f..c6beb72b21 100644
--- a/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-5_6/pom.xml
+++ b/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-5_6/pom.xml
@@ -5,7 +5,7 @@
apm-es-restclient-plugin
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-es-restclient-plugin-5_6
diff --git a/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-6_4/pom.xml b/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-6_4/pom.xml
index 720de42369..c41a4c69a7 100644
--- a/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-6_4/pom.xml
+++ b/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-6_4/pom.xml
@@ -5,7 +5,7 @@
apm-es-restclient-plugin
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-es-restclient-plugin-6_4
diff --git a/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-7_x/pom.xml b/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-7_x/pom.xml
index c66ad7d3bc..79cb241352 100644
--- a/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-7_x/pom.xml
+++ b/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-7_x/pom.xml
@@ -5,7 +5,7 @@
apm-es-restclient-plugin
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-es-restclient-plugin-7_x
diff --git a/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-8_x/pom.xml b/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-8_x/pom.xml
index 2e4df505ba..1870f7c54d 100644
--- a/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-8_x/pom.xml
+++ b/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-8_x/pom.xml
@@ -3,7 +3,7 @@
apm-es-restclient-plugin
co.elastic.apm
- 1.52.1
+ 1.52.2
4.0.0
diff --git a/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-common/pom.xml b/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-common/pom.xml
index 268f5629ee..f66f70ae3a 100644
--- a/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-common/pom.xml
+++ b/apm-agent-plugins/apm-es-restclient-plugin/apm-es-restclient-plugin-common/pom.xml
@@ -5,7 +5,7 @@
apm-es-restclient-plugin
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-es-restclient-plugin-common
diff --git a/apm-agent-plugins/apm-es-restclient-plugin/pom.xml b/apm-agent-plugins/apm-es-restclient-plugin/pom.xml
index 693cacf94a..ac3f3d94b5 100644
--- a/apm-agent-plugins/apm-es-restclient-plugin/pom.xml
+++ b/apm-agent-plugins/apm-es-restclient-plugin/pom.xml
@@ -5,7 +5,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-es-restclient-plugin
diff --git a/apm-agent-plugins/apm-finagle-httpclient-plugin/pom.xml b/apm-agent-plugins/apm-finagle-httpclient-plugin/pom.xml
index cdd6dae9fe..07c48c4cd6 100644
--- a/apm-agent-plugins/apm-finagle-httpclient-plugin/pom.xml
+++ b/apm-agent-plugins/apm-finagle-httpclient-plugin/pom.xml
@@ -5,7 +5,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-finagle-httpclient-plugin
diff --git a/apm-agent-plugins/apm-grails-plugin/pom.xml b/apm-agent-plugins/apm-grails-plugin/pom.xml
index 48ad120bbd..c20410523f 100644
--- a/apm-agent-plugins/apm-grails-plugin/pom.xml
+++ b/apm-agent-plugins/apm-grails-plugin/pom.xml
@@ -5,7 +5,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-grails-plugin
diff --git a/apm-agent-plugins/apm-grpc/apm-grpc-plugin/pom.xml b/apm-agent-plugins/apm-grpc/apm-grpc-plugin/pom.xml
index b6f7a8f2c5..9c1475bba5 100644
--- a/apm-agent-plugins/apm-grpc/apm-grpc-plugin/pom.xml
+++ b/apm-agent-plugins/apm-grpc/apm-grpc-plugin/pom.xml
@@ -5,7 +5,7 @@
co.elastic.apm
apm-grpc
- 1.52.1
+ 1.52.2
apm-grpc-plugin
diff --git a/apm-agent-plugins/apm-grpc/apm-grpc-test-1.6.1/pom.xml b/apm-agent-plugins/apm-grpc/apm-grpc-test-1.6.1/pom.xml
index 179731d5f1..3e81b65854 100644
--- a/apm-agent-plugins/apm-grpc/apm-grpc-test-1.6.1/pom.xml
+++ b/apm-agent-plugins/apm-grpc/apm-grpc-test-1.6.1/pom.xml
@@ -5,7 +5,7 @@
co.elastic.apm
apm-grpc
- 1.52.1
+ 1.52.2
apm-grpc-test-1.6.1
diff --git a/apm-agent-plugins/apm-grpc/apm-grpc-test-latest/pom.xml b/apm-agent-plugins/apm-grpc/apm-grpc-test-latest/pom.xml
index ee1e5e7994..63416193b1 100644
--- a/apm-agent-plugins/apm-grpc/apm-grpc-test-latest/pom.xml
+++ b/apm-agent-plugins/apm-grpc/apm-grpc-test-latest/pom.xml
@@ -5,7 +5,7 @@
co.elastic.apm
apm-grpc
- 1.52.1
+ 1.52.2
apm-grpc-test-latest
diff --git a/apm-agent-plugins/apm-grpc/pom.xml b/apm-agent-plugins/apm-grpc/pom.xml
index c0066dbc34..75f30bdd05 100644
--- a/apm-agent-plugins/apm-grpc/pom.xml
+++ b/apm-agent-plugins/apm-grpc/pom.xml
@@ -5,7 +5,7 @@
co.elastic.apm
apm-agent-plugins
- 1.52.1
+ 1.52.2
apm-grpc
diff --git a/apm-agent-plugins/apm-hibernate-search-plugin/apm-hibernate-search-plugin-5_x/pom.xml b/apm-agent-plugins/apm-hibernate-search-plugin/apm-hibernate-search-plugin-5_x/pom.xml
index 34da9121ca..3c0ff4dea2 100644
--- a/apm-agent-plugins/apm-hibernate-search-plugin/apm-hibernate-search-plugin-5_x/pom.xml
+++ b/apm-agent-plugins/apm-hibernate-search-plugin/apm-hibernate-search-plugin-5_x/pom.xml
@@ -5,7 +5,7 @@
apm-hibernate-search-plugin
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-hibernate-search-plugin-5_x
diff --git a/apm-agent-plugins/apm-hibernate-search-plugin/apm-hibernate-search-plugin-6_x/pom.xml b/apm-agent-plugins/apm-hibernate-search-plugin/apm-hibernate-search-plugin-6_x/pom.xml
index efb723ebb6..12cfc370cf 100644
--- a/apm-agent-plugins/apm-hibernate-search-plugin/apm-hibernate-search-plugin-6_x/pom.xml
+++ b/apm-agent-plugins/apm-hibernate-search-plugin/apm-hibernate-search-plugin-6_x/pom.xml
@@ -5,7 +5,7 @@
apm-hibernate-search-plugin
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-hibernate-search-plugin-6_x
diff --git a/apm-agent-plugins/apm-hibernate-search-plugin/apm-hibernate-search-plugin-common/pom.xml b/apm-agent-plugins/apm-hibernate-search-plugin/apm-hibernate-search-plugin-common/pom.xml
index e4f74d10bc..25980652d0 100644
--- a/apm-agent-plugins/apm-hibernate-search-plugin/apm-hibernate-search-plugin-common/pom.xml
+++ b/apm-agent-plugins/apm-hibernate-search-plugin/apm-hibernate-search-plugin-common/pom.xml
@@ -5,7 +5,7 @@
apm-hibernate-search-plugin
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-hibernate-search-plugin-common
diff --git a/apm-agent-plugins/apm-hibernate-search-plugin/pom.xml b/apm-agent-plugins/apm-hibernate-search-plugin/pom.xml
index 47b5f6a7fd..860b97a147 100644
--- a/apm-agent-plugins/apm-hibernate-search-plugin/pom.xml
+++ b/apm-agent-plugins/apm-hibernate-search-plugin/pom.xml
@@ -5,7 +5,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-hibernate-search-plugin
diff --git a/apm-agent-plugins/apm-httpclient-core/pom.xml b/apm-agent-plugins/apm-httpclient-core/pom.xml
index 5ba68a62f9..e305accff7 100644
--- a/apm-agent-plugins/apm-httpclient-core/pom.xml
+++ b/apm-agent-plugins/apm-httpclient-core/pom.xml
@@ -5,7 +5,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-httpclient-core
diff --git a/apm-agent-plugins/apm-httpserver-core/pom.xml b/apm-agent-plugins/apm-httpserver-core/pom.xml
index e16a2a0863..915bc1f298 100644
--- a/apm-agent-plugins/apm-httpserver-core/pom.xml
+++ b/apm-agent-plugins/apm-httpserver-core/pom.xml
@@ -5,7 +5,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-httpserver-core
diff --git a/apm-agent-plugins/apm-jakarta-websocket-plugin/pom.xml b/apm-agent-plugins/apm-jakarta-websocket-plugin/pom.xml
index d9e74e658e..408536e91e 100644
--- a/apm-agent-plugins/apm-jakarta-websocket-plugin/pom.xml
+++ b/apm-agent-plugins/apm-jakarta-websocket-plugin/pom.xml
@@ -5,7 +5,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-jakarta-websocket-plugin
diff --git a/apm-agent-plugins/apm-java-concurrent-plugin/pom.xml b/apm-agent-plugins/apm-java-concurrent-plugin/pom.xml
index 2d24d0f067..9eb8fe209a 100644
--- a/apm-agent-plugins/apm-java-concurrent-plugin/pom.xml
+++ b/apm-agent-plugins/apm-java-concurrent-plugin/pom.xml
@@ -5,7 +5,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-java-concurrent-plugin
diff --git a/apm-agent-plugins/apm-java-ldap-plugin/pom.xml b/apm-agent-plugins/apm-java-ldap-plugin/pom.xml
index bc8f19d9aa..82431aa77a 100644
--- a/apm-agent-plugins/apm-java-ldap-plugin/pom.xml
+++ b/apm-agent-plugins/apm-java-ldap-plugin/pom.xml
@@ -5,7 +5,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-java-ldap-plugin
diff --git a/apm-agent-plugins/apm-javalin-plugin/pom.xml b/apm-agent-plugins/apm-javalin-plugin/pom.xml
index d772b0bdad..8df3f0414e 100644
--- a/apm-agent-plugins/apm-javalin-plugin/pom.xml
+++ b/apm-agent-plugins/apm-javalin-plugin/pom.xml
@@ -5,7 +5,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-javalin-plugin
diff --git a/apm-agent-plugins/apm-jaxrs-plugin-jakartaee-test/pom.xml b/apm-agent-plugins/apm-jaxrs-plugin-jakartaee-test/pom.xml
index 715c21ce2e..99fcd063b7 100644
--- a/apm-agent-plugins/apm-jaxrs-plugin-jakartaee-test/pom.xml
+++ b/apm-agent-plugins/apm-jaxrs-plugin-jakartaee-test/pom.xml
@@ -3,7 +3,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
4.0.0
diff --git a/apm-agent-plugins/apm-jaxrs-plugin/pom.xml b/apm-agent-plugins/apm-jaxrs-plugin/pom.xml
index adff46548e..86ba47e57d 100644
--- a/apm-agent-plugins/apm-jaxrs-plugin/pom.xml
+++ b/apm-agent-plugins/apm-jaxrs-plugin/pom.xml
@@ -5,7 +5,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-jaxrs-plugin
diff --git a/apm-agent-plugins/apm-jaxws-plugin-jakartaee-test/pom.xml b/apm-agent-plugins/apm-jaxws-plugin-jakartaee-test/pom.xml
index 6f4a46eb48..792f9363b2 100644
--- a/apm-agent-plugins/apm-jaxws-plugin-jakartaee-test/pom.xml
+++ b/apm-agent-plugins/apm-jaxws-plugin-jakartaee-test/pom.xml
@@ -3,7 +3,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
4.0.0
diff --git a/apm-agent-plugins/apm-jaxws-plugin/pom.xml b/apm-agent-plugins/apm-jaxws-plugin/pom.xml
index 31c79ca4ab..20eb1a04fa 100644
--- a/apm-agent-plugins/apm-jaxws-plugin/pom.xml
+++ b/apm-agent-plugins/apm-jaxws-plugin/pom.xml
@@ -5,7 +5,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-jaxws-plugin
diff --git a/apm-agent-plugins/apm-jdbc-plugin/pom.xml b/apm-agent-plugins/apm-jdbc-plugin/pom.xml
index 691295c26a..2c5ff865da 100644
--- a/apm-agent-plugins/apm-jdbc-plugin/pom.xml
+++ b/apm-agent-plugins/apm-jdbc-plugin/pom.xml
@@ -5,7 +5,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-jdbc-plugin
diff --git a/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/AbstractJdbcInstrumentationTest.java b/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/AbstractJdbcInstrumentationTest.java
index 8a924884cb..fde401ce43 100644
--- a/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/AbstractJdbcInstrumentationTest.java
+++ b/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/AbstractJdbcInstrumentationTest.java
@@ -20,13 +20,13 @@
import co.elastic.apm.agent.AbstractInstrumentationTest;
import co.elastic.apm.agent.configuration.SpanConfiguration;
-import co.elastic.apm.agent.impl.transaction.SpanImpl;
-import co.elastic.apm.agent.sdk.internal.db.signature.SignatureParser;
import co.elastic.apm.agent.impl.context.DbImpl;
import co.elastic.apm.agent.impl.context.DestinationImpl;
-import co.elastic.apm.agent.tracer.Outcome;
+import co.elastic.apm.agent.impl.transaction.SpanImpl;
import co.elastic.apm.agent.impl.transaction.TransactionImpl;
import co.elastic.apm.agent.jdbc.helper.JdbcGlobalState;
+import co.elastic.apm.agent.sdk.internal.db.signature.SignatureParser;
+import co.elastic.apm.agent.tracer.Outcome;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -441,8 +441,12 @@ private SpanImpl assertSpanRecorded(String rawSql, boolean preparedStatement, lo
DbImpl db = span.getContext().getDb();
assertThat(db).hasStatement(rawSql);
DatabaseMetaData metaData = connection.getMetaData();
-
- assertThat(db.getUser()).isEqualToIgnoringCase(metaData.getUserName());
+ String expectedUserName = metaData.getUserName();
+ if (expectedUserName == null || expectedUserName.isEmpty()) {
+ assertThat(db.getUser()).isNullOrEmpty();
+ } else {
+ assertThat(db.getUser()).isEqualToIgnoringCase(expectedUserName);
+ }
assertThat(db.getType()).isEqualToIgnoringCase("sql");
assertThat(db.getAffectedRowsCount())
diff --git a/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/JdbcDbIT.java b/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/JdbcDbIT.java
index 5438b78250..cda3d5ff0b 100644
--- a/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/JdbcDbIT.java
+++ b/apm-agent-plugins/apm-jdbc-plugin/src/test/java/co/elastic/apm/agent/jdbc/JdbcDbIT.java
@@ -43,7 +43,8 @@ public static Iterable
diff --git a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-plugin/pom.xml b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-plugin/pom.xml
index ba5841e816..d9bcddcb31 100644
--- a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-plugin/pom.xml
+++ b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-plugin/pom.xml
@@ -5,7 +5,7 @@
apm-spring-webmvc
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-spring-webmvc-plugin
@@ -22,7 +22,7 @@
org.springframework.boot
spring-boot-dependencies
- 3.3.4
+ 3.4.1
pom
import
diff --git a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/pom.xml b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/pom.xml
index e01857f6cb..5ebcde1114 100644
--- a/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/pom.xml
+++ b/apm-agent-plugins/apm-spring-webmvc/apm-spring-webmvc-spring5/pom.xml
@@ -5,7 +5,7 @@
apm-spring-webmvc
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-spring-webmvc-spring5
diff --git a/apm-agent-plugins/apm-spring-webmvc/pom.xml b/apm-agent-plugins/apm-spring-webmvc/pom.xml
index a123b69319..1df417018a 100644
--- a/apm-agent-plugins/apm-spring-webmvc/pom.xml
+++ b/apm-agent-plugins/apm-spring-webmvc/pom.xml
@@ -3,7 +3,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
4.0.0
@@ -29,7 +29,7 @@
org.springframework.boot
spring-boot-dependencies
- 3.3.4
+ 3.4.1
pom
import
diff --git a/apm-agent-plugins/apm-struts-plugin/pom.xml b/apm-agent-plugins/apm-struts-plugin/pom.xml
index 7b41f8c8a0..94fe8be690 100644
--- a/apm-agent-plugins/apm-struts-plugin/pom.xml
+++ b/apm-agent-plugins/apm-struts-plugin/pom.xml
@@ -3,7 +3,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
4.0.0
diff --git a/apm-agent-plugins/apm-urlconnection-plugin/pom.xml b/apm-agent-plugins/apm-urlconnection-plugin/pom.xml
index f8e996ea03..a31b09fdeb 100644
--- a/apm-agent-plugins/apm-urlconnection-plugin/pom.xml
+++ b/apm-agent-plugins/apm-urlconnection-plugin/pom.xml
@@ -5,7 +5,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-urlconnection-plugin
diff --git a/apm-agent-plugins/apm-vertx/apm-vertx-common/pom.xml b/apm-agent-plugins/apm-vertx/apm-vertx-common/pom.xml
index bf66ab617f..d2c97aaaac 100644
--- a/apm-agent-plugins/apm-vertx/apm-vertx-common/pom.xml
+++ b/apm-agent-plugins/apm-vertx/apm-vertx-common/pom.xml
@@ -5,7 +5,7 @@
apm-vertx
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-vertx-common
diff --git a/apm-agent-plugins/apm-vertx/apm-vertx3-plugin/pom.xml b/apm-agent-plugins/apm-vertx/apm-vertx3-plugin/pom.xml
index 1f06d8657a..bbf8d27901 100644
--- a/apm-agent-plugins/apm-vertx/apm-vertx3-plugin/pom.xml
+++ b/apm-agent-plugins/apm-vertx/apm-vertx3-plugin/pom.xml
@@ -5,7 +5,7 @@
apm-vertx
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-vertx3-plugin
diff --git a/apm-agent-plugins/apm-vertx/apm-vertx3-test-latest/pom.xml b/apm-agent-plugins/apm-vertx/apm-vertx3-test-latest/pom.xml
index 3706a57c47..0995a55bf5 100644
--- a/apm-agent-plugins/apm-vertx/apm-vertx3-test-latest/pom.xml
+++ b/apm-agent-plugins/apm-vertx/apm-vertx3-test-latest/pom.xml
@@ -5,7 +5,7 @@
apm-vertx
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-vertx3-test-latest
diff --git a/apm-agent-plugins/apm-vertx/apm-vertx4-plugin/pom.xml b/apm-agent-plugins/apm-vertx/apm-vertx4-plugin/pom.xml
index f7e4aba8df..b5e1d0fdc3 100644
--- a/apm-agent-plugins/apm-vertx/apm-vertx4-plugin/pom.xml
+++ b/apm-agent-plugins/apm-vertx/apm-vertx4-plugin/pom.xml
@@ -5,7 +5,7 @@
apm-vertx
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-vertx4-plugin
diff --git a/apm-agent-plugins/apm-vertx/pom.xml b/apm-agent-plugins/apm-vertx/pom.xml
index 70ce21495c..9501334f84 100644
--- a/apm-agent-plugins/apm-vertx/pom.xml
+++ b/apm-agent-plugins/apm-vertx/pom.xml
@@ -5,7 +5,7 @@
apm-agent-plugins
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-vertx
diff --git a/apm-agent-plugins/pom.xml b/apm-agent-plugins/pom.xml
index 00134d0b60..668e97ec95 100644
--- a/apm-agent-plugins/pom.xml
+++ b/apm-agent-plugins/pom.xml
@@ -5,7 +5,7 @@
apm-agent-parent
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-agent-plugins
diff --git a/apm-agent-tracer/pom.xml b/apm-agent-tracer/pom.xml
index d3823df57e..8c8935be6e 100644
--- a/apm-agent-tracer/pom.xml
+++ b/apm-agent-tracer/pom.xml
@@ -4,7 +4,7 @@
co.elastic.apm
apm-agent-parent
- 1.52.1
+ 1.52.2
apm-agent-tracer
diff --git a/apm-opentracing/pom.xml b/apm-opentracing/pom.xml
index 2eb17a650d..796c80742f 100644
--- a/apm-opentracing/pom.xml
+++ b/apm-opentracing/pom.xml
@@ -5,7 +5,7 @@
apm-agent-parent
co.elastic.apm
- 1.52.1
+ 1.52.2
apm-opentracing
diff --git a/cloudfoundry/index.yml b/cloudfoundry/index.yml
index f247aaecdc..7fb36cff39 100644
--- a/cloudfoundry/index.yml
+++ b/cloudfoundry/index.yml
@@ -65,3 +65,4 @@
1.50.0: https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent/1.50.0/elastic-apm-agent-1.50.0.jar
1.51.0: https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent/1.51.0/elastic-apm-agent-1.51.0.jar
1.52.0: https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent/1.52.0/elastic-apm-agent-1.52.0.jar
+1.52.1: https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent/1.52.1/elastic-apm-agent-1.52.1.jar
diff --git a/docs/configuration.asciidoc b/docs/configuration.asciidoc
index 6ff4717594..b059b76835 100644
--- a/docs/configuration.asciidoc
+++ b/docs/configuration.asciidoc
@@ -1271,6 +1271,7 @@ Example: `0ms`.
==== `central_config` (added[1.8.0])
When enabled, the agent will make periodic requests to the APM Server to fetch updated configuration.
+The frequency of the periodic request is driven by the `Cache-Control` header returned from APM Server/Integration, falling back to 5 minutes if not defined.
<>
@@ -2817,7 +2818,7 @@ NOTE: This feature is not available on Windows and on OpenJ9
==== `profiling_inferred_spans_logging_enabled` (added[1.37.0])
By default, async profiler prints warning messages about missing JVM symbols to standard output.
-Set this option to `true` to suppress such messages
+Set this option to `false` to suppress such messages
<>
@@ -4087,6 +4088,7 @@ Example: `5ms`.
# trace_methods_duration_threshold=0ms
# When enabled, the agent will make periodic requests to the APM Server to fetch updated configuration.
+# The frequency of the periodic request is driven by the `Cache-Control` header returned from APM Server/Integration, falling back to 5 minutes if not defined.
#
# This setting can be changed at runtime
# Type: Boolean
@@ -4855,7 +4857,7 @@ Example: `5ms`.
# profiling_inferred_spans_enabled=false
# By default, async profiler prints warning messages about missing JVM symbols to standard output.
-# Set this option to `true` to suppress such messages
+# Set this option to `false` to suppress such messages
#
# This setting can be changed at runtime
# Type: Boolean
diff --git a/docs/troubleshooting.asciidoc b/docs/troubleshooting.asciidoc
index fad18447c4..353b48809e 100644
--- a/docs/troubleshooting.asciidoc
+++ b/docs/troubleshooting.asciidoc
@@ -288,6 +288,10 @@ further information about how to download this file can be found <>.
+With Oracle Weblogic application server wildcard TLS certificates are not allowed by default, when this
+happens a message error like this is visible in agent logs: `Hostname verification failed: HostnameVerifier=weblogic.security.utils.SSLWLSHostnameVerifier`.
+Disabling this extra check can be done with `-Dweblogic.security.SSL.ignoreHostnameVerification=true`.
+
For other SSL/TLS related problems, - check out
https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#Troubleshooting[the JSSE
troubleshooting section].
diff --git a/elastic-apm-agent-java8/pom.xml b/elastic-apm-agent-java8/pom.xml
index 231dd21767..5bac58a85b 100644
--- a/elastic-apm-agent-java8/pom.xml
+++ b/elastic-apm-agent-java8/pom.xml
@@ -5,7 +5,7 @@
co.elastic.apm
apm-agent-parent
- 1.52.1
+ 1.52.2
elastic-apm-agent-java8
diff --git a/elastic-apm-agent-premain/pom.xml b/elastic-apm-agent-premain/pom.xml
index 35e9c181d9..034a882bea 100644
--- a/elastic-apm-agent-premain/pom.xml
+++ b/elastic-apm-agent-premain/pom.xml
@@ -3,7 +3,7 @@
apm-agent-parent
co.elastic.apm
- 1.52.1
+ 1.52.2
4.0.0
diff --git a/elastic-apm-agent/pom.xml b/elastic-apm-agent/pom.xml
index a162258d9a..b81b6dea28 100644
--- a/elastic-apm-agent/pom.xml
+++ b/elastic-apm-agent/pom.xml
@@ -5,7 +5,7 @@
co.elastic.apm
apm-agent-parent
- 1.52.1
+ 1.52.2
elastic-apm-agent
diff --git a/integration-tests/application-server-integration-tests/pom.xml b/integration-tests/application-server-integration-tests/pom.xml
index ed08f5ee98..899b71f2d8 100644
--- a/integration-tests/application-server-integration-tests/pom.xml
+++ b/integration-tests/application-server-integration-tests/pom.xml
@@ -5,7 +5,7 @@
integration-tests
co.elastic.apm
- 1.52.1
+ 1.52.2
application-server-integration-tests
diff --git a/integration-tests/application-server-integration-tests/src/test/java/co/elastic/apm/servlet/JakartaeeTomcatWithSecurityManagerIT.java b/integration-tests/application-server-integration-tests/src/test/java/co/elastic/apm/servlet/JakartaeeTomcatWithSecurityManagerIT.java
index 351cb72013..73b55306f7 100644
--- a/integration-tests/application-server-integration-tests/src/test/java/co/elastic/apm/servlet/JakartaeeTomcatWithSecurityManagerIT.java
+++ b/integration-tests/application-server-integration-tests/src/test/java/co/elastic/apm/servlet/JakartaeeTomcatWithSecurityManagerIT.java
@@ -18,7 +18,6 @@
*/
package co.elastic.apm.servlet;
-import co.elastic.apm.agent.test.AgentTestContainer;
import co.elastic.apm.servlet.tests.JakartaExternalPluginTestApp;
import co.elastic.apm.servlet.tests.JakartaeeServletApiTestApp;
import co.elastic.apm.servlet.tests.TestApp;
@@ -38,8 +37,9 @@ public JakartaeeTomcatWithSecurityManagerIT(final String tomcatVersion) {
@Parameterized.Parameters(name = "Tomcat {0}")
public static Iterable
maven-surefire-plugin
- 3.0.0-M8
+ 3.5.2
maven-failsafe-plugin
- 3.0.0-M8
+ 3.5.2
maven-jar-plugin
@@ -615,7 +615,25 @@
maven-shade-plugin
- 3.3.0
+ 3.6.0
+
+
+
+ org.ow2.asm
+ asm
+ ${version.asm}
+
+
+ org.ow2.asm
+ asm-commons
+ ${version.asm}
+
+
+ org.ow2.asm
+ asm-tree
+ ${version.asm}
+
+
maven-clean-plugin
@@ -754,7 +772,7 @@
org.assertj
assertj-core
- 3.26.3
+ 3.27.2
test
diff --git a/updatecli-compose.yaml b/updatecli-compose.yaml
index 7225bcbd08..a25d0436f5 100644
--- a/updatecli-compose.yaml
+++ b/updatecli-compose.yaml
@@ -2,17 +2,17 @@
# https://www.updatecli.io/docs/core/compose/
policies:
- name: Handle apm-data server specs
- policy: ghcr.io/elastic/oblt-updatecli-policies/apm/apm-data-spec:0.5.0@sha256:1307837d72174da906afb40a812b89f9f40efdbc0f6dcb4f632f886f9798577e
+ policy: ghcr.io/elastic/oblt-updatecli-policies/apm/apm-data-spec:0.6.0@sha256:c0bbdec23541bed38df1342c95aeb601530a113db1ff11715c1c7616ed5e9e8b
values:
- .ci/updatecli/values.d/scm.yml
- .ci/updatecli/values.d/apm-data-spec.yml
- name: Handle apm gherkin specs
- policy: ghcr.io/elastic/oblt-updatecli-policies/apm/apm-gherkin:0.5.0@sha256:7166356b1bb5fb39b640dc9712a2a9f16b06b3fdb137dd362ede7d70ca5396e8
+ policy: ghcr.io/elastic/oblt-updatecli-policies/apm/apm-gherkin:0.6.0@sha256:dbaf4d855c5c212c3b5a8d2cc98c243a2b769ac347198ae8814393a1a0576587
values:
- .ci/updatecli/values.d/scm.yml
- .ci/updatecli/values.d/apm-gherkin.yml
- name: Handle apm json specs
- policy: ghcr.io/elastic/oblt-updatecli-policies/apm/apm-json-specs:0.5.0@sha256:f4065402be6459507660cb644fffa9cdc77a58303ebd7f8f0325002e206cf6a1
+ policy: ghcr.io/elastic/oblt-updatecli-policies/apm/apm-json-specs:0.6.0@sha256:e5a74c159ceed02fd20515ea76fa25ff81e3ccf977e74e636f9973db86aa52a5
values:
- .ci/updatecli/values.d/scm.yml
- .ci/updatecli/values.d/apm-json-specs.yml
@@ -21,3 +21,7 @@ policies:
values:
- .ci/updatecli/values.d/scm.yml
- .ci/updatecli/values.d/update-compose.yml
+ - name: Update Updatecli version
+ policy: ghcr.io/elastic/oblt-updatecli-policies/updatecli/version:0.2.0@sha256:013a37ddcdb627c46e7cba6fb9d1d7bc144584fa9063843ae7ee0f6ef26b4bea
+ values:
+ - .ci/updatecli/values.d/scm.yml