Skip to content

Releases: apache/skywalking-java

9.3.0

25 Jul 14:46
Compare
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
Compare
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
Compare
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
Compare
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
Compare
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
Compare
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
Compare
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

8.13.0

09 Nov 02:00
Compare
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

This release begins to adopt SkyWalking 9.3.0+ Virtual Cache Analysis and Virtual MQ Analysis

  • Support set-type in the agent or plugin configurations
  • Optimize ConfigInitializer to output warning messages when the config value is truncated.
  • Fix the default value of the Map field would merge rather than override by new values in the config.
  • Support to set the value of Map/List field to an empty map/list.
  • Add plugin to support Impala JDBC 2.6.x.
  • Update guava-cache, jedis, memcached, ehcache plugins to adopt uniform tags.
  • Fix Apache ShenYu plugin traceId empty string value.
  • Add plugin to support brpc-java-3.x
  • Update compose-start-script.template to make compatible with new version docker compose
  • Bump up grpc to 1.50.0 to fix CVE-2022-3171
  • Polish up nats plugin to unify MQ related tags
  • Correct the duration of the transaction span for Neo4J 4.x.
  • Plugin-test configuration.yml dependencies support docker service command field
  • Polish up rabbitmq-5.x plugin to fix missing broker tag on consumer side
  • Polish up activemq plugin to fix missing broker tag on consumer side
  • Enhance MQ plugin relative tests to check key tags not blank.
  • Add RocketMQ test scenarios for version 4.3 - 4.9. No 4.0 - 4.2 release images for testing.
  • Support mannual propagation of tracing context to next operators for webflux.
  • Add MQ_TOPIC and MQ_BROKER tags for RocketMQ consumer's span.
  • Polish up Pulsar plugins to remove unnecessary dynamic value , set peer at consumer side
  • Polish Kafka plugin to set peer at the consumer side.
  • Polish NATS plugin to set peer at the consumer side.
  • Polish ActiveMQ plugin to set peer at the consumer side.
  • Polish RabbitMQ plugin to set peer at the consumer side.

Documentation

  • Update configuration doc about overriding default value as empty map/list accordingly.
  • Update plugin dev tags for cache relative tags.
  • Add plugin dev docs for virtual database tags.
  • Add plugin dev docs for virtual MQ tags.
  • Add doc about kafka plugin Manual APIs.

All issues and pull requests are here

8.12.0

03 Sep 14:25
Compare
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

  • Fix Shenyu plugin's NPE in reading trace ID when IgnoredTracerContext is used in the context.
  • Update witness class in elasticsearch-6.x-plugin, avoid throw NPE.
  • Fix onHalfClose using span operation name /Request/onComplete instead of the wrong name /Request/onHalfClose.
  • Add plugin to support RESTeasy 4.x.
  • Add plugin to support hutool-http 5.x.
  • Add plugin to support Tomcat 10.x.
  • Save http status code regardless of it's status.
  • Upgrade byte-buddy to 1.12.13, and adopt byte-buddy APIs changes.
  • Upgrade gson to 2.8.9.
  • Upgrade netty-codec-http2 to 4.1.79.Final.
  • Fix race condition causing agent to not reconnect after network error
  • Force the injected high-priority classes in order to avoid NoClassDefFoundError.
  • Plugin to support xxl-job 2.3.x.
  • Add plugin to support Micronaut(HTTP Client/Server) 3.2.x-3.6.x
  • Add plugin to support NATS Java client 2.14.x-2.15.x
  • Remove inappropriate dependency from elasticsearch-7.x-plugin
  • Upgrade jedis plugin to support 3.x(stream),4.x

Documentation

  • Add a section in Bootstrap-plugins doc, introducing HttpURLConnection Plugin compatibility.
  • Update Plugin automatic test framework, fix inconsistent description about configuration.yml.
  • Update Plugin automatic test framework, add expected data format of the log items.

All issues and pull requests are here

8.11.0

20 Jun 07:24
Compare
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

  • Fix cluster and namespace value duplicated(namespace value) in properties report.
  • Add layer field to event when reporting.
  • Remove redundant shade.package property.
  • Add servicecomb-2.x plugin and Testcase.
  • Fix NPE in gateway plugin when the timer triggers webflux webclient call.
  • Add an optional plugin, trace-sampler-cpu-policy-plugin, which could disable trace collecting in high CPU load.
  • Change the dateformat of logs to yyyy-MM-dd HH:mm:ss.SSS(was yyyy-MM-dd HH:mm:ss:SSS).
  • Fix NPE in elasticsearch plugin.
  • Grpc plugin support trace client async generic call(without grpc stubs), support Method type: UNARY、SERVER_STREAMING.
  • Enhance Apache ShenYu (incubating) plugin: support trace grpc,sofarpc,motan,tars rpc proxy.
  • Add primary endpoint name to log events.
  • Fix Span not finished in gateway plugin when the gateway request timeout.
  • Support -Dlog4j2.contextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector in gRPC log report.
  • Fix tcnative libraries relocation for aarch64.
  • Add plugin.jdbc.trace_sql_parameters into Configuration Discovery Service.
  • Fix argument type name of Array in postgresql-8.x-plugin from java.lang.String[] to [Ljava.lang.String;
  • Add type name checking in ArgumentTypeNameMatch and ReturnTypeNameMatch
  • Highlight ArgumentTypeNameMatch and ReturnTypeNameMatch type naming rule in docs/en/setup/service-agent/java-agent/Java-Plugin-Development-Guide.md
  • Fix FileWriter scheduled task NPE
  • Optimize gRPC Log reporter to set service name for the first element in the streaming.(No change for Kafka reporter)

All issues and pull requests are here