Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG.next-release.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ This file contains all changes which are not released yet.
<!--FIXES-END-->
# Features and enhancements
<!--ENHANCEMENTS-START-->

* Add experimental support for Spring Boot 4 / Spring Framework 7 in WebFlux instrumentation
<!--ENHANCEMENTS-END-->
# Deprecations
<!--DEPRECATIONS-START-->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,7 @@ public String getFirstHeader(String headerName, ClientRequest carrier) {

@Override
public <S> void forEach(String headerName, ClientRequest carrier, S state, HeaderConsumer<String, S> consumer) {
List<String> headerValues = carrier.headers().get(headerName);
if (headerValues == null) {
return;
}
List<String> headerValues = carrier.headers().getValuesAsList(headerName);
for (String value : headerValues) {
consumer.accept(value, state);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,12 @@
<scope>test</scope>
<type>test-jar</type>
</dependency>

<dependency>
<groupId>org.apache.ivy</groupId>
<artifactId>ivy</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

</project>
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ public static class HandleAdvice {
@Advice.OnMethodEnter(suppress = Throwable.class, inline = false)
public static Object onEnter(@Advice.Argument(0) ServerWebExchange exchange) {

List<String> upgradeHeader = exchange.getRequest().getHeaders().get("upgrade");
if (upgradeHeader != null && upgradeHeader.contains("websocket")) {
List<String> upgradeHeader = exchange.getRequest().getHeaders().getValuesAsList("upgrade");
if (upgradeHeader.contains("websocket")) {
// just ignore upgrade WS upgrade requests for now
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,7 @@ public String getFirstHeader(String headerName, HttpHeaders carrier) {

@Override
public <S> void forEach(String headerName, HttpHeaders carrier, S state, HeaderConsumer<String, S> consumer) {
List<String> values = carrier.get(headerName);
if (values == null) {
return;
}
List<String> values = carrier.getValuesAsList(headerName);
for (int i = 0; i < values.size(); i++) {
consumer.accept(values.get(i), state);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ protected HeaderGetter createTextHeaderGetter() {
@Override
protected HttpHeaders createCarrier(Map<String, List<String>> map) {
HttpHeaders headers = new HttpHeaders();
map.forEach(headers::put);
map.forEach(headers::addAll);
return headers;
}

Expand Down
2 changes: 1 addition & 1 deletion docs/reference/supported-technologies.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,10 +80,10 @@
| Framework | Supported versions | Description | Since |
|-----------------------------------|----------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------|
| Servlet API | ≥ 3.x, ≤ 6.x | A transaction will be created for all incoming HTTP requests to your Servlet API-based application. Starting in version 1.18.0, additional spans are created if the servlet dispatches execution to another servlet through the `forward` or `include` APIs, or to an error page. See also [Application Servers/Servlet Containers](#supported-app-servers) | 1.0.0, 4.0+ (`jakarta.servlet`) since 1.28.0 |
| Spring Web MVC | ≥ 4.x, ≤ 6.x; (7.x experimental) | If you are using Spring MVC (for example with Spring Boot), the transactions are named based on your controllers (`ControllerClass#controllerMethod`). | 1.0.0, 6.x since 1.38.0 |

Check notice on line 83 in docs/reference/supported-technologies.md

View workflow job for this annotation

GitHub Actions / build / vale

Elastic.WordChoice: Consider using 'start, run' instead of 'Boot', unless the term is in the UI.
| Spring Webflux | ≥ 5.2.3, ≤ 6.x | Creates transactions for incoming HTTP requests, supports annotated and functional endpoints. | 1.24.0 (experimental), 1.34.0 (GA), 6.1+ since 1.45.0 |
| Spring Webflux | ≥ 5.2.3, ≤ 6.x; (7.x experimental) | Creates transactions for incoming HTTP requests, supports annotated and functional endpoints. | 1.24.0 (experimental), 1.34.0 (GA), 6.1+ since 1.45.0 |
| JavaServer Faces | ≥ 2.2.x, ≤ 3.0.0 | If you are using JSF, transactions are named based on the requested Facelets and spans are captured for visibility into execution andrendering | 1.0.0, `jakarta.faces` since 1.28.0 |
| Spring Boot | ≥ 1.5.x, ≤ 3.x; (4.x experimental) | Supports embedded Tomcat, Jetty and Undertow | 1.0.0, 3.x since 1.38.0 |

Check notice on line 86 in docs/reference/supported-technologies.md

View workflow job for this annotation

GitHub Actions / build / vale

Elastic.WordChoice: Consider using 'start, run' instead of 'Boot', unless the term is in the UI.
| JAX-RS | ≥ 2.x, ≤ 3.x | The transactions are named based on your resources (`ResourceClass#resourceMethod`). Note that only the packages configured in [`application_packages`](/reference/config-stacktrace.md#config-application-packages) are scanned for JAX-RS resources. If you don’t set this option, all classes are scanned. This comes at the cost of increased startup times, however.<br> Note: JAX-RS is only supported when running on a supported [Application Server/Servlet Container](#supported-app-servers). | 1.0.0, `jakarta.ws.rs` since 1.28.0 |
| JAX-WS | | The transactions are named based on your `@javax.jws.WebService`, `@jakarta.jws.WebService` annotated classes and `@javax.jws.WebMethod`, `@jakarta.jws.WebMethod` annotated method names (`WebServiceClass#webMethod`). Note that only the packages configured in [`application_packages`](/reference/config-stacktrace.md#config-application-packages) are scanned for JAX-WS resources. If you don’t set this option, all classes are scanned. This comes at the cost of increased startup times, however.<br> Note: JAX-WS is only supported when running on a supported [Application Server/Servlet Container](#supported-app-servers) and when using the HTTP binding. | 1.4.0, `jakarta.jws` since 1.28.0 |
| Grails | ≥ 3.x, ≤ 4.x | | 1.17.0 |
Expand Down
Loading