Release Notes.
spring-cloud-gateway-4.x plugin propagating another request‘s context. Since Spring Cloud Gateway 4.1.2 the outbound chain is assembled in NettyRoutingFilter#filter but subscribed later, so the plugin parked the request’s ContextSnapshot on the HttpClient returned by NettyRoutingFilter#getHttpClient, which is the single shared bean unless a connect timeout is configured. A concurrent request could overwrite it before the chain was subscribed, and the outbound sw8 header then carried a context the downstream service joined by mistake. The snapshot is held by a client derived per request now (apache/skywalking#14095).httpclient-5.x-plugin async client tracing (apache/skywalking#14097):FutureCallback no longer stops a span. With HttpAsyncClients.classic(...) the callback runs on the caller thread, where it used to close the caller's own active span.httpasyncclient/local span and its cross-thread segment are removed. The HTTP exit span now lives in the caller's own segment.doExecute received a null HttpContext and the request was not yet in the context when IOSessionImpl#poll ran.java.net.URI does not parse as a host (e.g. service_name) are traced and propagated.url tag keeps the path encoded as it was sent (e.g. %2F stays %2F).httpclient-5.x-scenario now tests one version per minor, 5.0 to 5.6.NullPointerException thrown by the spring-webflux-5.x-webclient and spring-webflux-6.x-webclient plugins when DefaultClientRequestBuilder$BodyInserterRequest#writeTo runs before any exit span exists. Connectors such as JdkClientHttpConnector call writeTo eagerly at assembly time, while the exchange interceptor creates the exit span and its ContextCarrier only at subscription, so the interception failed and the sw8 header was not propagated. The carrier injection is now null-guarded and, if the carrier is still absent, retried when the returned Mono is subscribed (apache/skywalking#13589).spring-ai-1.x-plugin ChatModelStreamInterceptor leaking its async span when ChatModel#stream(Prompt) fails synchronously, which silently dropped the whole TraceSegment of the request (apache/skywalking#14098).jedis-4.x-plugin's AbstractConnectionInterceptor double-stopping the span stack on any Redis-level exception (or a null dynamic field on a pooled/recycled Connection), which corrupted the parent trace for the rest of the request (apache/skywalking#14085).NoSuchMethodError: org.apache.skywalking.apm.plugin.spring.webflux.v6.DispatcherHandlerHandleMethodInterceptor on Spring Framework 7 (Spring Boot 4). HttpHeaders no longer implements MultiValueMap, so List get(Object) was removed; the entry span was never created and the service produced no traces. Affects spring-webflux-6.x and, through its shaded copy, spring-cloud-gateway-4.x (apache/skywalking#14047).spring-webflux-6.x, spring-webflux-6.x-webclient, springmvc-annotation-6.x, spring-resttemplate-6.x and spring-cloud-gateway-4.x plugins to support Spring Framework 7, Spring Boot 4 and Spring Cloud Gateway 5.x.spring-webflux-5.x and spring-webflux-6.x plugins, so they no longer both match DispatcherHandler#handle on Reactor 3.4 (Spring Boot 2.4-2.7).apm-toolkit-webflux to apm-toolkit-webflux-5.x and move its package to org.apache.skywalking.apm.toolkit.webflux.v5; add apm-toolkit-webflux-6.x (org.apache.skywalking.apm.toolkit.webflux.v6) for Reactor 3.5+ / Spring Boot 3.x and 4.x, where WebFluxSkyWalkingOperators#continueTracing previously threw NoSuchMethodError because Reactor removed Signal#getContext() in 3.5.0. Existing apm-toolkit-webflux jars (9.7.0 and earlier) remain instrumented by the agent, so upgrading the agent alone does not force a change.Log4j2Plugins.dat) missing from the apm-toolkit-log4j-2.x jar since 9.5.0, which broke %traceId and %sw_ctx resolution in Log4j2 PatternLayout (apache/skywalking#14006).java-agent POM to Maven Central again. It is the parent of apm-application-toolkit and therefore of every published toolkit artifact, but 9.7.0 skipped it, so resolving any org.apache.skywalking:apm-toolkit-*:9.7.0 failed with Non-resolvable parent POM ... Could not find artifact org.apache.skywalking:java-agent:pom:9.7.0 (apache/skywalking#13988).maxIdleTime, DBCP maxWaitMillis and HikariCP connectionTimeout, validationTimeout, idleTimeout and leakDetectionThreshold gauges are no longer reported.apm-toolkit-logback-1.x (apache/skywalking#14120). TraceIdPatternLogbackLayout and TraceIdMDCPatternLogbackLayout failed with NoSuchFieldError: defaultConverterMap, because logback 1.6.0 removed PatternLayout.defaultConverterMap. The layouts now register their conversion words in the logging context's conversion rule registry when they start, which logback 1.2.x to 1.6.x all read, so the same toolkit artifact keeps working on older logback. Logback 1.5.13 is not supported because of an upstream regression fixed in 1.5.14 (qos-ch/logback#885). The words are no longer registered for the whole JVM, so using %tid or %sw_ctx in other encoders, such as a plain <encoder><pattern>, requires declaring them as <conversionRule>s.All issues and pull requests are here