Skywalking Java Versions Save

The Java agent for Apache SkyWalking

v9.2.0

1 month ago

What's Changed

New Contributors

Full Changelog: https://github.com/apache/skywalking-java/compare/v9.1.0...v9.2.0

v9.1.0

5 months ago

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

v9.0.0

8 months ago

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

v8.16.0

11 months ago

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

v8.15.0

1 year ago

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

v8.14.0

1 year ago

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

v8.13.0

1 year ago

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

v8.12.0

1 year ago

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

v8.11.0

1 year ago

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: UNARYSERVER_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

v8.10.0

2 years ago

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

  • [Important] Namespace represents a subnet, such as kubernetes namespace, or 172.10... Make namespace concept as a part of service naming format.
  • [Important] Add cluster concept, also as a part of service naming format. The cluster name would be
    1. Add as {@link #SERVICE_NAME} suffix.
    2. Add as exit span's peer, ${CLUSTER} / original peer
    3. Cross Process Propagation Header's value addressUsedAtClient[index=8] (Target address of this request used on the client end).
  • Support Undertow thread pool metrics collecting.
  • Support Tomcat thread pool metric collect.
  • Remove plugin for ServiceComb Java Chassis 0.x
  • Add Guava EventBus plugin.
  • Fix Dubbo 3.x plugin's tracing problem.
  • Fix the bug that maybe generate multiple trace when invoke http request by spring webflux webclient.
  • Support Druid Connection pool metrics collecting.
  • Support HikariCP Connection pool metrics collecting.
  • Support Dbcp2 Connection pool metrics collecting.
  • Ignore the synthetic constructor created by the agent in the Spring patch plugin.
  • Add witness class for vertx-core-3.x plugin.
  • Add witness class for graphql plugin.
  • Add vertx-core-4.x plugin.
  • Renamed graphql-12.x-plugin to graphql-12.x-15.x-plugin and graphql-12.x-scenario to graphql-12.x-15.x-scenario.
  • Add graphql-16plus plugin.
  • [Test] Support to configure plugin test base images.
  • [Breaking Change] Remove deprecated agent.instance_properties configuration. Recommend agent.instance_properties_json.
  • The namespace and cluster would be reported as instance properties, keys are namespace and cluster. Notice, if instance_properties_json includes these two keys, they would be overrided by the agent core.
  • [Breaking Change] Remove the namespace from cross process propagation key.
  • Make sure the parent endpoint in tracing context from existing first ENTRY span, rather than first span only.
  • Fix the bug that maybe causing memory leak and repeated traceId when use gateway-2.1.x-plugin or gateway-3.x-plugin.
  • Fix Grpc 1.x plugin could leak context due to gRPC cancelled.
  • Add JDK ThreadPoolExecutor Plugin.
  • Support default database(not set through JDBC URL) in mysql-5.x plugin.

Documentation

  • Add link about java agent injector.
  • Update configurations doc, remove agent.instance_properties[key]=value.
  • Update configurations doc, add agent.cluster and update agent.namespace.

All issues and pull requests are here