From 0e451b16c88f2d8fed7a4554c9034a489f951ed7 Mon Sep 17 00:00:00 2001 From: Sylvain Juge Date: Tue, 31 May 2022 09:11:48 +0200 Subject: [PATCH 1/9] document attach API as GA --- docs/setup-attach-api.asciidoc | 5 ----- 1 file changed, 5 deletions(-) diff --git a/docs/setup-attach-api.asciidoc b/docs/setup-attach-api.asciidoc index 0d0606cbe8..ea3c5f9f23 100644 --- a/docs/setup-attach-api.asciidoc +++ b/docs/setup-attach-api.asciidoc @@ -1,8 +1,6 @@ [[setup-attach-api]] === Programmatic API setup to self-attach -NOTE: This installation method is in beta. - [float] [[setup-attach-api-supported-environments]] ==== Supported environments @@ -14,9 +12,6 @@ Unix and Solaris operating systems on HotSpot-based JVMs (like OpenJDK and Oracl [[setup-attach-api-caveats]] ==== Caveats -The approach to mitigate `NoClassDefFoundError` s when used in OSGi containers (which includes most application servers) is experimental. -Versions prior to 1.18.0 don't support OSGi containers. - There can only be one agent instance with one configuration per JVM. So if you deploy multiple web applications to the same application server and call `ElasticApmAttacher.attach()` in each application, the first `attach()` wins and the second one will be ignored. From d75d2f7c33afaad2114fe8cffbde8dfe69335140 Mon Sep 17 00:00:00 2001 From: Sylvain Juge Date: Tue, 31 May 2022 09:22:26 +0200 Subject: [PATCH 2/9] make cli attach GA --- docs/setup-attach-cli.asciidoc | 9 --------- 1 file changed, 9 deletions(-) diff --git a/docs/setup-attach-cli.asciidoc b/docs/setup-attach-cli.asciidoc index 432d46f826..056950008a 100644 --- a/docs/setup-attach-cli.asciidoc +++ b/docs/setup-attach-cli.asciidoc @@ -1,8 +1,6 @@ [[setup-attach-cli]] === Automatic setup with `apm-agent-attach-cli.jar` -NOTE: This installation method is in beta. - The `apm-agent-attach-cli.jar` is an executable Java command line program which attaches the Elastic APM Java agent to a specific JVM or to all JVMs of the same host it runs on. This installation method does not require you to alter the configuration of your application server and can be used to conveniently instrument all JVMs on a particular host. @@ -22,13 +20,6 @@ That means it is possible to run the attacher with Java 7 and attach the agent t However, the type of the VM has to be the same: It's not possible to attach to a J9 VM from a HotSpot-based VM and vice-versa. -[float] -[[setup-attach-cli-caveats]] -==== Caveats - -The approach to mitigate `NoClassDefFoundError` s when used in OSGi containers (which includes most application servers) is experimental. -Versions prior to 1.18.0 don't support OSGi containers. - [float] [[setup-attach-cli-download]] ==== Download From 6efb2657e58988ea6fec4175b08e07e5fb021c26 Mon Sep 17 00:00:00 2001 From: Sylvain Juge Date: Tue, 31 May 2022 09:30:06 +0200 Subject: [PATCH 3/9] make dubbo plugin GA --- .../impl/circuitbreaker/CircuitBreakerConfiguration.java | 2 +- .../elastic/apm/agent/dubbo/AbstractDubboInstrumentation.java | 3 ++- docs/configuration.asciidoc | 4 +--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/circuitbreaker/CircuitBreakerConfiguration.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/circuitbreaker/CircuitBreakerConfiguration.java index ca56fe1b7b..b0ef74741b 100644 --- a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/circuitbreaker/CircuitBreakerConfiguration.java +++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/circuitbreaker/CircuitBreakerConfiguration.java @@ -31,7 +31,7 @@ public class CircuitBreakerConfiguration extends ConfigurationOptionProvider { private final ConfigurationOption circuitBreakerEnabled = ConfigurationOption.booleanOption() .key("circuit_breaker_enabled") - .tags("added[1.14.0]", "performance", "experimental") + .tags("added[1.14.0]", "performance") .configurationCategory(CIRCUIT_BREAKER_CATEGORY) .description("A boolean specifying whether the circuit breaker should be enabled or not. \n" + "When enabled, the agent periodically polls stress monitors to detect system/process/JVM stress state. \n" + diff --git a/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/AbstractDubboInstrumentation.java b/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/AbstractDubboInstrumentation.java index 65a8b3c3e8..416c998584 100644 --- a/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/AbstractDubboInstrumentation.java +++ b/apm-agent-plugins/apm-dubbo-plugin/src/main/java/co/elastic/apm/agent/dubbo/AbstractDubboInstrumentation.java @@ -22,12 +22,13 @@ import java.util.Arrays; import java.util.Collection; +import java.util.Collections; public abstract class AbstractDubboInstrumentation extends TracerAwareInstrumentation { @Override public Collection getInstrumentationGroupNames() { - return Arrays.asList("dubbo", "experimental"); + return Collections.singleton("dubbo"); } } diff --git a/docs/configuration.asciidoc b/docs/configuration.asciidoc index 10913a17af..1c04dfdcc7 100644 --- a/docs/configuration.asciidoc +++ b/docs/configuration.asciidoc @@ -195,9 +195,7 @@ Click on a key to get more information. // This file is auto generated. Please make your changes in *Configuration.java (for example CoreConfiguration.java) and execute ConfigurationExporter [float] [[config-circuit-breaker-enabled]] -==== `circuit_breaker_enabled` (added[1.14.0] performance experimental) - -NOTE: This feature is currently experimental, which means it is disabled by default and it is not guaranteed to be backwards compatible in future releases. +==== `circuit_breaker_enabled` (added[1.14.0] performance) A boolean specifying whether the circuit breaker should be enabled or not. When enabled, the agent periodically polls stress monitors to detect system/process/JVM stress state. From 77d047ee4f8e155337353430fb428390d5de3950 Mon Sep 17 00:00:00 2001 From: Sylvain Juge Date: Tue, 31 May 2022 09:38:11 +0200 Subject: [PATCH 4/9] promote use_path_as_transaction_name to GA --- .../elastic/apm/agent/impl/context/web/WebConfiguration.java | 2 +- docs/configuration.asciidoc | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/context/web/WebConfiguration.java b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/context/web/WebConfiguration.java index 6453ee4ef7..1c77097958 100644 --- a/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/context/web/WebConfiguration.java +++ b/apm-agent-core/src/main/java/co/elastic/apm/agent/impl/context/web/WebConfiguration.java @@ -96,7 +96,7 @@ public class WebConfiguration extends ConfigurationOptionProvider { private final ConfigurationOption usePathAsName = ConfigurationOption.booleanOption() .key("use_path_as_transaction_name") .configurationCategory(HTTP_CATEGORY) - .tags("experimental", "added[1.0.0,Changing this value at runtime is possible since version 1.22.0]") + .tags("added[1.0.0,Changing this value at runtime is possible since version 1.22.0]") .description("If set to `true`,\n" + "transaction names of unsupported or partially-supported frameworks will be in the form of `$method $path` instead of just `$method unknown route`.\n" + "\n" + diff --git a/docs/configuration.asciidoc b/docs/configuration.asciidoc index 1c04dfdcc7..d1d14497ee 100644 --- a/docs/configuration.asciidoc +++ b/docs/configuration.asciidoc @@ -1469,9 +1469,7 @@ Prepending an element with `(?-i)` makes the matching case sensitive. // This file is auto generated. Please make your changes in *Configuration.java (for example CoreConfiguration.java) and execute ConfigurationExporter [float] [[config-use-path-as-transaction-name]] -==== `use_path_as_transaction_name` (experimental added[1.0.0,Changing this value at runtime is possible since version 1.22.0]) - -NOTE: This feature is currently experimental, which means it is disabled by default and it is not guaranteed to be backwards compatible in future releases. +==== `use_path_as_transaction_name` (added[1.0.0,Changing this value at runtime is possible since version 1.22.0]) If set to `true`, transaction names of unsupported or partially-supported frameworks will be in the form of `$method $path` instead of just `$method unknown route`. From 204baf2476d6e47ebdb52dc742fd8406ad9dead2 Mon Sep 17 00:00:00 2001 From: Sylvain Juge Date: Tue, 31 May 2022 09:38:39 +0200 Subject: [PATCH 5/9] promote JDK http server to GA --- .../apm/agent/httpserver/JdkHttpServerInstrumentation.java | 4 ++-- docs/supported-technologies.asciidoc | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apm-agent-plugins/apm-jdk-httpserver-plugin/src/main/java/co/elastic/apm/agent/httpserver/JdkHttpServerInstrumentation.java b/apm-agent-plugins/apm-jdk-httpserver-plugin/src/main/java/co/elastic/apm/agent/httpserver/JdkHttpServerInstrumentation.java index 8b9170eac3..c2465bc914 100644 --- a/apm-agent-plugins/apm-jdk-httpserver-plugin/src/main/java/co/elastic/apm/agent/httpserver/JdkHttpServerInstrumentation.java +++ b/apm-agent-plugins/apm-jdk-httpserver-plugin/src/main/java/co/elastic/apm/agent/httpserver/JdkHttpServerInstrumentation.java @@ -20,13 +20,13 @@ import co.elastic.apm.agent.bci.TracerAwareInstrumentation; -import java.util.Arrays; import java.util.Collection; +import java.util.Collections; public abstract class JdkHttpServerInstrumentation extends TracerAwareInstrumentation { @Override public Collection getInstrumentationGroupNames() { - return Arrays.asList("jdk-httpserver"); + return Collections.singleton("jdk-httpserver"); } } diff --git a/docs/supported-technologies.asciidoc b/docs/supported-technologies.asciidoc index 5c9be03161..6bea70f9cd 100644 --- a/docs/supported-technologies.asciidoc +++ b/docs/supported-technologies.asciidoc @@ -165,7 +165,7 @@ rendering |com.sun.net.httpserver.HttpServer |1.7+ |Captures incoming HTTP requests as transactions -|1.25.0 (experimental) +|1.25.0 |Javalin |3.13.8+ From 77045d9a27ef90db4951e323a0c8957eb59e8869 Mon Sep 17 00:00:00 2001 From: Sylvain Juge Date: Tue, 31 May 2022 09:38:55 +0200 Subject: [PATCH 6/9] GA in supp. tech. for dubbo + circuit breaker --- docs/supported-technologies.asciidoc | 2 +- docs/tuning-and-overhead.asciidoc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/supported-technologies.asciidoc b/docs/supported-technologies.asciidoc index 6bea70f9cd..a80b02b0ea 100644 --- a/docs/supported-technologies.asciidoc +++ b/docs/supported-technologies.asciidoc @@ -329,7 +329,7 @@ The spans are named after the schema ` `, for example `GET elastic |Apache Dubbo | 2.5+, except for 2.7.0, 2.7.1, and 2.7.2 -| This is an experimental plugin. Remove `experimental` from <> to enable. +| | 1.17.0 |JDK 11 HttpClient diff --git a/docs/tuning-and-overhead.asciidoc b/docs/tuning-and-overhead.asciidoc index a5ba4871a8..31ac154336 100644 --- a/docs/tuning-and-overhead.asciidoc +++ b/docs/tuning-and-overhead.asciidoc @@ -147,7 +147,7 @@ Disabling <> can save allocations, network bandwidth, an [float] [[circuit-breaker]] -=== Circuit Breaker (experimental) +=== Circuit Breaker When enabled, the agent periodically polls stress monitors to detect system/process/JVM stress state. If ANY of the monitors detects a stress indication, the agent will become inactive, as if the From 96bbe2a043f441fbccd9d3d4cd5bf6c8d3c7b2ad Mon Sep 17 00:00:00 2001 From: Sylvain Juge Date: Tue, 31 May 2022 10:49:24 +0200 Subject: [PATCH 7/9] make OTel bridge as GA --- .../opentelemetry/AbstractOpenTelemetryInstrumentation.java | 2 +- docs/api-opentelemetry.asciidoc | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-plugin/src/main/java/co/elastic/apm/agent/opentelemetry/AbstractOpenTelemetryInstrumentation.java b/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-plugin/src/main/java/co/elastic/apm/agent/opentelemetry/AbstractOpenTelemetryInstrumentation.java index 0492594875..33ec237f9f 100644 --- a/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-plugin/src/main/java/co/elastic/apm/agent/opentelemetry/AbstractOpenTelemetryInstrumentation.java +++ b/apm-agent-plugins/apm-opentelemetry/apm-opentelemetry-plugin/src/main/java/co/elastic/apm/agent/opentelemetry/AbstractOpenTelemetryInstrumentation.java @@ -40,6 +40,6 @@ public final boolean includeWhenInstrumentationIsDisabled() { @Override public final Collection getInstrumentationGroupNames() { - return Arrays.asList("opentelemetry", "experimental"); + return Arrays.asList("opentelemetry"); } } diff --git a/docs/api-opentelemetry.asciidoc b/docs/api-opentelemetry.asciidoc index 68d9e80472..7f4fed3da8 100644 --- a/docs/api-opentelemetry.asciidoc +++ b/docs/api-opentelemetry.asciidoc @@ -6,9 +6,6 @@ endif::[] [[opentelemetry-bridge]] === OpenTelemetry bridge -NOTE: Added as experimental in 1.30.0. -To enable it, set <> to `true`. - The Elastic APM OpenTelemetry bridge allows creating Elastic APM `Transactions` and `Spans`, using the OpenTelemetry API. In other words, From 0353cae3fce730f98c0490e7f5dc6aa6fc98b4e7 Mon Sep 17 00:00:00 2001 From: Sylvain Juge Date: Tue, 31 May 2022 10:50:41 +0200 Subject: [PATCH 8/9] update changelog --- CHANGELOG.asciidoc | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index f376fe2683..fabd6d225f 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -28,6 +28,7 @@ endif::[] * Struts action invocations via an action chain result start a new span - {pull}2513[#2513] * Added official support for Elasticsearch Java API client - {pull}2211[#2211] * Added the ability to make spans non-discardable through the public API and the OpenTelemetry bridge - {pull}2632[#2632] +* Dubbo and OpenTelemetry bridge instrumentation are not experimental anymore and thus enabled by default - {pull}2632[#2632] [float] ===== Bug fixes From b812aae79bb8a15627f1673343df82228a8aeefb Mon Sep 17 00:00:00 2001 From: Sylvain Juge Date: Tue, 7 Jun 2022 13:56:38 +0200 Subject: [PATCH 9/9] improve changelog --- CHANGELOG.asciidoc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 9302bcc461..86cfd1f742 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -30,6 +30,13 @@ the agent will now include the database name in the dependency, thus `mysql/my-d [float] ===== Features +* Promote mature agent features as Generaly Available (GA) - {pull}2632[#2632] +** <> is now enabled by default +** <> marked as GA (still disabled by default) +** <> and <> marked as GA +** <> configuration option marked as GA +** Dubbo instrumentation is now enabled by default +** `com.sun.net.httpserver.HttpServer` instrumentation marked as GA * Struts action invocations via an action chain result start a new span - {pull}2513[#2513] * Added official support for Elasticsearch Java API client - {pull}2211[#2211] * Added the ability to make spans non-discardable through the public API and the OpenTelemetry bridge - {pull}2632[#2632] @@ -40,7 +47,6 @@ the agent will now include the database name in the dependency, thus `mysql/my-d addition, when using the `apm-agent-attach-cli-slim.jar`, which does not contain a bundled agent, the latest version will be downloaded from maven at runtime unless configured otherwise through `--download-agent-version` - {pull}2659[#2659] * Added span-links to messaging systems instrumentation (supported by APM Server 8.3+ only) - {pull}2610[#2610] -* Dubbo and OpenTelemetry bridge instrumentation are not experimental anymore and thus enabled by default - {pull}2632[#2632] [float] ===== Bug fixes