Skip to content

Latest commit

 

History

History
80 lines (76 loc) · 6.64 KB

File metadata and controls

80 lines (76 loc) · 6.64 KB

Changes by Version

Release Notes.

9.8.0

  • Fix the 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).
  • Fix the 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.
    • The HTTP exit span is now created in the caller's context when the request is sent, detached right away, and finished by reference when the response ends. Nothing is left on the I/O reactor thread's span stack any more, so overlapping requests on one reactor thread no longer nest into or close each other's spans.
    • The httpasyncclient/local span and its cross-thread segment are removed. The HTTP exit span now lives in the caller's own segment.
    • HttpClient 5.4+ async requests are traced now. Previously the plugin produced no spans for them, because doExecute received a null HttpContext and the request was not yet in the context when IOSessionImpl#poll ran.
    • A response that fails after its head, while the body is read or when the consumer builds the result at EOF, now ends the span as an error with the exception logged, instead of as a success or an error without a cause.
    • The destination is taken from the explicit target or the request authority, as the client routes it, so routable names that java.net.URI does not parse as a host (e.g. service_name) are traced and propagated.
    • The url tag keeps the path encoded as it was sent (e.g. %2F stays %2F).
    • The httpclient-5.x-scenario now tests one version per minor, 5.0 to 5.6.
  • Fix the 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).
  • Fix the 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).
  • Fix 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).
  • Add Spring LDAP 3.3.x-4.x plugin.
  • Exclude macOS metadata files from source and binary release archives (apache/skywalking#14080).
  • Fix 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).
  • Extend 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.
  • Add Spring version witnesses to the 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).
  • Breaking: rename 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.
  • Fix the Log4j2 plugin descriptor (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).
  • Deploy the root 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).
  • Stop reporting datasource timeout configuration as metrics. The c3p0 maxIdleTime, DBCP maxWaitMillis and HikariCP connectionTimeout, validationTimeout, idleTimeout and leakDetectionThreshold gauges are no longer reported.
  • Support logback 1.6.x in 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


Find change logs of all versions here.