Skip to content

Releases: apache/skywalking-java

9.6.0

16 Feb 12:23

Choose a tag to compare

What's Changed

  • Release 9.5.0 and start 9.6.0 by @wu-sheng in #768
  • Bump up dependencies and e2e by @wu-sheng in #770
  • Bump up apache parent pom to v35. by @wu-sheng in #771
  • Fix span log oom by @hxd123456 in #773
  • Fix CLASS_LOADER_TYPE_CACHE OOM issue with WeakHashMap by @kylixs in #772
  • Fix Jetty client cannot receive the HTTP response body(#13500) by @xhrg in #775
  • Eliminate repeated code with HttpServletRequestWrapper in mvc-annotation-commons. by @jiangyunpeng in #776
  • Add the jdk httpclient plugin by @peachisai in #778
  • Fix Gateway 2.0.x plugin not activated for spring-cloud-starter-gateway 2.0.0.RELEASE by @huangguangshan in #779
  • Support kafka-clients-3.9.x intercept & Upgrade kafka-clients version in optional-reporter-plugins to 3.9.1 by @GuiSong01 in #780
  • Fix replaceParam when the replaced string contains a replacement marker by @shichaoyuan in #782
  • Fix JDBCPluginConfig.Plugin.JDBC.SQL_BODY_MAX_LENGTH was not working in some plugins by @weixiang1862 in #784
  • Add the JDK 25 support by @peachisai in #783
  • Ignore classes starting with "sun.nio.cs" in bytebuddy due to potential class loading deadlock by @shichaoyuan in #785
  • Add CLAUDE.md for AI assistant guidance by @wu-sheng in #786
  • [Test] Add Spring Cloud Gateway 4.3.3 to gateway scenario by @Siman-hub in #787
  • Split plugin dev guide from root CLAUDE.md into module-level files by @wu-sheng in #790

New Contributors

Full Changelog: v9.5.0...v9.6.0

9.5.0

18 Aug 04:17

Choose a tag to compare

What's Changed

  • Release 9.4.0 and prepare 9.5.0 by @wu-sheng in #750
  • Add the virtual thread executor plugin by @peachisai in #751
  • Add the javadoc plugin for virtual thread executor plugin by @peachisai in #752
  • Fix Conflicts apm-jdk-threadpool-plugin conflicts with apm-jdk-forkjoinpool-plugin by @GuoHaoZai in #753
  • To prevent NPE use pool name for metrics if JDBC URL is not set. by @john9x in #754
  • Fix MeterService NPE as not initialized in so11y plugin. by @wu-sheng in #755
  • fix parent class enhance issue by @tjuwangning in #757
  • Add support for dameng(DM) JDBC URL format in URLParser by @saber-wang in #758
  • fix: RabbitMQ Consumer could not receive handleCancelOk callback(#13334) by @AYue-94 in #759
  • Feature: Support for tracking for lettuce versions 6.5+ by @nichanghao in #760
  • Upgrade bytebuddy to 1.17.6 by @KeekLove in #761
  • docs: Add Couchbase Java SDK to supported list by @wankai123 in #763
  • Add support gRPC 1.59.x and 1.70.x server interceptor trace by @huicunjun in #764
  • Fix enhanced instance causes Spring Application startup failure by @tjuwangning in #762
  • build: fix Checkstyle encoding by @leeyazhou in #765
  • fix: build failure for lombok in JDK23 by @leeyazhou in #767
  • (build)version management for maven-pulgin and artifactId by @leeyazhou in #766

New Contributors

Full Changelog: v9.4.0...v9.5.0

v9.4.0

20 Feb 02:22

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v9.3.0...v9.4.0

9.3.0

25 Jul 14:46

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v9.2.0...v9.3.0

9.2.0

31 Mar 13:39

Choose a tag to compare

What's Changed

  • Release 9.1 and begin 9.2.0 by @wu-sheng in #652
  • Fix missing command in the docker release by @wu-sheng in #653
  • Bump up bundled CLI by @wu-sheng in #654
  • Remove dead links by @wu-sheng in #655
  • Fix NoSuchMethodError in mvc-annotation-commons&change deprecated method by @CzyerChen in #658
  • Support forkjoinpool plugin in JDK11 by @786991884 in #656
  • Support for tracing webflux-6.x and gateway-4.x by @CzyerChen in #661
  • Fix re-transform bug when enhanced class proxy parent method by @kylixs in #659
  • Success Rate is Incorrect with Vert.x by @BFergerson in #662
  • Update NOTICE year to 2024 by @wu-sheng in #663
  • add support for HttpExchange along with webflux-webclient-6.x by @CzyerChen in #664
  • Support tracing for async producing, batch sync consuming, and batch async consuming in rocketMQ-client-java-5.x-plugin by @CzyerChen in #665
  • Convert the Redisson lock span into an async span by @peachisai in #667
  • Rename system env name sw_plugin_kafka_producer_config to SW_PLUGIN_KAFKA_PRODUCER_CONFIG by @wu-sheng in #668
  • Fix words by @wu-sheng in #669
  • Support for ActiveMQ-Artemis messaging tracing. by @CzyerChen in #670
  • Archive the expired plugins impala-jdbc-2.6.x-plugin. by @wu-sheng in #673
  • Fix duplicate traceId when use forward scheme in spring.cloud.gateway.routes.uri properties by @cylx3126 in #672
  • Fix not tracing in HttpClient v5 when HttpHost(arg[0]) is null but RoutingSupport#determineHost works. by @cylx3126 in #674
  • Support across thread tracing for SOFA-RPC by @OrezzerO in #675
  • Update Jedis 4.x plugin to support Sharding and Cluster models. by @pg-yang in #677

New Contributors

Full Changelog: v9.1.0...v9.2.0

9.1.0

05 Dec 08:17

Choose a tag to compare

Download

https://skywalking.apache.org/downloads/

Notice

Don't download source codes from this page.
Please follow build document, if you want to build source codes by yourself.

Features and Bug Fixes

  • Fix hbase onConstruct NPE in the file configuration scenario
  • Fix the issue of createSpan failure caused by invalid request URL in HttpClient 4.x/5.x plugin
  • Optimize ElasticSearch 6.x 7.x plugin compatibility
  • Fix an issue with the httpasyncclient component where the isError state is incorrect.
  • Support customization for the length limitation of string configurations
  • Add max length configurations in agent.config file for service_name and instance_name
  • Optimize spring-cloud-gateway 2.1.x, 3.x witness class.
  • Support report MongoDB instance info in Mongodb 4.x plugin.
  • To compatible upper and lower case Oracle TNS url parse.
  • Support collecting ZGC memory pool metrics. Require OAP 9.7.0 to support these new metrics.
  • Upgrade netty-codec-http2 to 4.1.100.Final
  • Add a netty-http 4.1.x plugin to trace HTTP requests.
  • Fix Impala Jdbc URL (including schema without properties) parsing exception.
  • Optimize byte-buddy type description performance.
  • Add eclipse-temurin:21-jre as another base image.
  • Bump byte-buddy to 1.14.9 for JDK21 support.
  • Add JDK21 plugin tests for Spring 6.
  • Bump Lombok to 1.18.30 to adopt JDK21 compiling.
  • Fix PostgreSQL Jdbc URL parsing exception.
  • Bump up grpc version.
  • Optimize plugin selector logic.

Documentation

  • Fix JDK requirement in the compiling docs.
  • Add JDK21 support in the compiling docs.

All issues and pull requests are here

9.0.0

01 Sep 11:56

Choose a tag to compare

Download

https://skywalking.apache.org/downloads/

Notice

Don't download source codes from this page.
Please follow build document, if you want to build source codes by yourself.

Kernel Updates

  • Support re-transform/hot-swap classes with other java agents, and remove the obsolete cache enhanced class feature.
  • Implement new naming policies for names of auxiliary type, interceptor delegate field, renamed origin method, method
    access name, method cache value field. All names are under sw$ name trait. They are predictable and unchanged after
    re-transform.
* SWAuxiliaryTypeNamingStrategy
  Auxiliary type name pattern: <origin_class_name>$<name_trait>$auxiliary$<auxiliary_type_instance_hash>

* DelegateNamingResolver
  Interceptor delegate field name pattern: <name_trait>$delegate$<class_name_hash>$<plugin_define_hash>$<intercept_point_hash>

* SWMethodNameTransformer
  Renamed origin method pattern: <name_trait>$original$<method_name>$<method_description_hash>

* SWImplementationContextFactory
  Method cache value field pattern: cachedValue$<name_trait>$<origin_class_name_hash>$<field_value_hash>
  Accessor method name pattern:  <renamed_origin_method>$accessor$<name_trait>$<origin_class_name_hash>

Here is an example of manipulated enhanced class with new naming policies of auxiliary classes, fields, and methods

 import sample.mybatis.controller.HotelController$sw$auxiliary$19cja42;
 import sample.mybatis.controller.HotelController$sw$auxiliary$p257su0;
 import sample.mybatis.domain.Hotel;
 import sample.mybatis.service.HotelService;

 @RequestMapping(value={"/hotel"})
 @RestController
 public class HotelController
 implements EnhancedInstance {
     @Autowired
     @lazy
     private HotelService hotelService;
     private volatile Object _$EnhancedClassField_ws;

     // Interceptor delegate fields
     public static volatile /* synthetic */ InstMethodsInter sw$delegate$td03673$ain2do0$8im5jm1;
     public static volatile /* synthetic */ InstMethodsInter sw$delegate$td03673$ain2do0$edkmf61;
     public static volatile /* synthetic */ ConstructorInter sw$delegate$td03673$ain2do0$qs9unv1;
     public static volatile /* synthetic */ InstMethodsInter sw$delegate$td03673$fl4lnk1$m3ia3a2;
     public static volatile /* synthetic */ InstMethodsInter sw$delegate$td03673$fl4lnk1$sufrvp1;
     public static volatile /* synthetic */ ConstructorInter sw$delegate$td03673$fl4lnk1$cteu7s1;

     // Origin method cache value field
     private static final /* synthetic */ Method cachedValue$sw$td03673$g5sobj1;

     public HotelController() {
         this(null);
         sw$delegate$td03673$ain2do0$qs9unv1.intercept(this, new Object[0]);
     }

     private /* synthetic */ HotelController(sw.auxiliary.p257su0 p257su02) {
     }

     @GetMapping(value={"city/{cityId}"})
     public Hotel selectByCityId(@PathVariable(value="cityId") int n) {
         // call interceptor with auxiliary type and parameters and origin method object
         return (Hotel)sw$delegate$td03673$ain2do0$8im5jm1.intercept(this, new Object[]{n}, new HotelController$sw$auxiliary$19cja42(this, n), cachedValue$sw$td03673$g5sobj1);
     }

     // Renamed origin method
     private /* synthetic */ Hotel sw$origin$selectByCityId$a8458p3(int cityId) {
/*22*/         return this.hotelService.selectByCityId(cityId);
     }

     // Accessor of renamed origin method, calling from auxiliary type
     final /* synthetic */ Hotel sw$origin$selectByCityId$a8458p3$accessor$sw$td03673(int n) {
         // Calling renamed origin method
         return this.sw$origin$selectByCityId$a8458p3(n);
     }

     @OverRide
     public Object getSkyWalkingDynamicField() {
         return this._$EnhancedClassField_ws;
     }

     @OverRide
     public void setSkyWalkingDynamicField(Object object) {
         this._$EnhancedClassField_ws = object;
     }

     static {
         ClassLoader.getSystemClassLoader().loadClass("org.apache.skywalking.apm.dependencies.net.bytebuddy.dynamic.Nexus").getMethod("initialize", Class.class, Integer.TYPE).invoke(null, HotelController.class, -1072476370);
         // Method object
         cachedValue$sw$td03673$g5sobj1 = HotelController.class.getMethod("selectByCityId", Integer.TYPE);
     }
 }

Auxiliary type of Constructor :

class HotelController$sw$auxiliary$p257su0 {
}

Auxiliary type of selectByCityId method:

class HotelController$sw$auxiliary$19cja42
implements Runnable,
Callable {
    private HotelController argument0;
    private int argument1;

    public Object call() throws Exception {
        return this.argument0.sw$origin$selectByCityId$a8458p3$accessor$sw$td03673(this.argument1);
    }

    @OverRide
    public void run() {
        this.argument0.sw$origin$selectByCityId$a8458p3$accessor$sw$td03673(this.argument1);
    }

    HotelController$sw$auxiliary$19cja42(HotelController hotelController, int n) {
        this.argument0 = hotelController;
        this.argument1 = n;
    }
}

Features and Bug Fixes

  • Support Jdk17 ZGC metric collect
  • Support Jetty 11.x plugin
  • Support access to the sky-walking tracer context in spring gateway filter
  • Fix the scenario of using the HBase plugin with spring-data-hadoop.
  • Add RocketMQ 5.x plugin
  • Fix the conflict between the logging kernel and the JDK threadpool plugin.
  • Fix the thread safety bug of finishing operation for the span named "SpringCloudGateway/sendRequest"
  • Fix NPE in guava-eventbus-plugin.
  • Add WebSphere Liberty 23.x plugin
  • Add Plugin to support aerospike Java client
  • Add ClickHouse parsing to the jdbc-common plugin.
  • Support to trace redisson lock
  • Upgrade netty-codec-http2 to 4.1.94.Final
  • Upgrade guava to 32.0.1
  • Fix issue with duplicate enhancement by ThreadPoolExecutor
  • Add plugin to support for RESTeasy 6.x.
  • Fix the conditions for resetting UUID, avoid the same uuid causing the configuration not to be updated.
  • Fix witness class in springmvc-annotation-5.x-plugin to avoid falling into v3 use cases.
  • Fix Jedis-2.x plugin bug and add test for Redis cluster scene
  • Merge two instrumentation classes to avoid duplicate enhancements in MySQL plugins.
  • Support asynchronous invocation in jetty client 9.0 and 9.x plugin
  • Add nacos-client 2.x plugin
  • Staticize the tags for preventing synchronization in JDK 8
  • Add RocketMQ-Client-Java 5.x plugin
  • Fix NullPointerException in lettuce-5.x-plugin.

Documentation

All issues and pull requests are here

8.16.0

03 Jun 12:59

Choose a tag to compare

Download

https://skywalking.apache.org/downloads/

Notice

Don't download source codes from this page.
Please follow build document, if you want to build source codes by yourself.

Changes by Version

  • Exclude synthetic methods for the WitnessMethod mechanism
  • Support ForkJoinPool trace
  • Support clickhouse-jdbc-plugin trace sql parameters
  • Support monitor jetty server work thread pool metric
  • Support Jersey REST framework
  • Fix ClassCastException when SQLServer inserts data
  • [Chore] Exclude org.checkerframework:checker-qual and com.google.j2objc:j2objc-annotations
  • [Chore] Exclude proto files in the generated jar
  • Fix Jedis-2.x plugin can not get host info in jedis 3.3.x+
  • Change the classloader to locate the agent path in AgentPackagePath, from SystemClassLoader to AgentPackagePath's loader.
  • Support Grizzly Trace
  • Fix possible IllegalStateException when using Micrometer.
  • Support Grizzly Work ThreadPool Metric Monitor
  • Fix the gson dependency in the kafka-reporter-plugin.
  • Fix deserialization of kafka producer json config in the kafka-reporter-plugin.
  • Support to config custom decode methods for kafka configurations

All issues and pull requests are here

8.15.0

04 Apr 04:11

Choose a tag to compare

Download

https://skywalking.apache.org/downloads/

Notice

Don't download source codes from this page.
Please follow build document, if you want to build source codes by yourself.

Changes by Version

  • Enhance lettuce plugin to adopt uniform tags.
  • Expose complete Tracing APIs in the tracing toolkit.
  • Add plugin to trace Spring 6 and Resttemplate 6.
  • Move the baseline to JDK 17 for development, the runtime baseline is still Java 8 compatible.
  • Remove Powermock entirely from the test cases.
  • Fix H2 instrumentation point
  • Refactor pipeline in jedis-plugin.
  • Add plugin to support ClickHouse JDBC driver (0.3.2.*).
  • Refactor kotlin coroutine plugin with CoroutineContext.
  • Fix OracleURLParser ignoring actual port when :SID is absent.
  • Change gRPC instrumentation point to fix plugin not working for server side.
  • Fix servicecomb plugin trace break.
  • Adapt Armeria's plugins to the latest version 1.22.x
  • Fix tomcat-10x-plugin and add test case to support tomcat7.x-8.x-9.x.
  • Fix thrift plugin generate duplicate traceid when sendBase error occurs
  • Support keep trace profiling when cross-thread.
  • Fix unexpected whitespace of the command catalogs in several Redis plugins.
  • Fix a thread leak in SamplingService when updated sampling policy in the runtime.
  • Support MySQL plugin tracing SQL parameters when useServerPrepStmts
  • Update the endpoint name of Undertow plugin to Method:Path.
  • Build a dummy(empty) javadoc of finagle and jdk-http plugins due to incompatibility.

Documentation

  • Update docs of Tracing APIs, reorganize the API docs into six parts.
  • Correct missing package name in native manual API docs.
  • Add a FAQ doc about "How to make SkyWalking agent works in OSGI environment?"

All issues and pull requests are here

8.14.0

12 Jan 03:05

Choose a tag to compare

Download

https://skywalking.apache.org/downloads/

Notice

Don't download source codes from this page.
Please follow build document, if you want to build source codes by yourself.

Changes by Version

  • Polish test framework to support arm64/v8 platforms
  • Fix wrong config name plugin.toolkit.use_qualified_name_as_operation_name, and system variable name SW_PLUGIN_TOOLKIT_USE_QUALIFIED_NAME_AS_OPERATION_NAME:false. They were toolit.
  • Rename JDBI to JDBC
  • Support collecting dubbo thread pool metrics
  • Bump up byte-buddy to 1.12.19
  • Upgrade agent test tools
  • [Breaking Change] Compatible with 3.x and 4.x RabbitMQ Client, rename rabbitmq-5.x-plugin to rabbitmq-plugin
  • Polish JDBC plugins to make DBType accurate
  • Report the agent version to OAP as an instance attribute
  • Polish jedis-4.x-plugin to change command to lowercase, which is consistent with jedis-2.x-3.x-plugin
  • Add micronauthttpclient,micronauthttpserver,memcached,ehcache,guavacache,jedis,redisson plugin config properties to agent.config
  • Add Micrometer Observation support
  • Add tags mq.message.keys and mq.message.tags for RocketMQ producer span
  • Clean the trace context which injected into Pulsar MessageImpl after the instance recycled
  • Fix In the higher version of mysql-connector-java 8x, there is an error in the value of db.instance.
  • Add support for KafkaClients 3.x.
  • Support to customize the collect period of JVM relative metrics.
  • Upgrade netty-codec-http2 to 4.1.86.Final.
  • Put Agent-Version property reading in the premain stage to avoid deadlock when using jarsigner.
  • Add a config agent.enable(default: true) to support disabling the agent through system property -Dskywalking.agent.disable=false
    or system environment variable setting SW_AGENT_ENABLE=false.
  • Enhance redisson plugin to adopt uniform tags.

Documentation

  • Update Plugin-test.md, support string operators start with and end with
  • Polish agent configurations doc to fix type error

All issues and pull requests are here