Releases: apache/skywalking-java
9.3.0
What's Changed
- Release 9.2.0 begin 9.3.0 dev by @wu-sheng in #678
- Remove idleCount in druid plugin by @AlchemyDing in #679
- Fix CHANGES.md by @wu-sheng in #680
- Fix NPE in handleMethodException method of apm-jdk-threadpool-plugin. by @ForrestWang123 in #681
- Polish NPE fix in handleMethodException method of apm-jdk-threadpool-plugin by @ForrestWang123 in #682
- Add Support for C3P0 connection pool tracing by @CzyerChen in #683
- Set the log flush thread to Daemon by @githubcheng2978 in #684
- Typo fix by @JoeCqupt in #685
- Fix typos in URLParser. by @CzyerChen in #686
- Add support for Derby/Sybase/SQLite/DB2/OceanBase jdbc url format in URLParser by @CzyerChen in #687
- Fix TracingSegmentRunner by @JoeCqupt in #688
- Fix method name missing in spring-plugins:scheduled-annotation-plugin with spring 6.1.x by @CzyerChen in #691
- Add a forceIgnoring mechanism and apply it to the plugins (Spring Clo⦠by @gzlicanyi in #689
- Fix bugs in Redisson plugin by @CzyerChen in #693
- Support for tracing the callbacks of async methods in elastiicsearch-6.x/7.x-plugin by @CzyerChen in #694
- Fix to Ensure All Rules Satisfy not isInterface by @wengyingjian in #695
- Fix the opentracing toolkit SPI config by @xiaqi1210 in #696
- Remove Oracle scenario from testing. by @wu-sheng in #699
- Improve 4x performance of ContextManagerExtendService.createTraceCont⦠by @jiangyunpeng in #698
- Fix problem which lead redisson plugin to throw unnecessary NullPointerException by @Ricehomesky in #700
- Fix RESTEasy link 404 by @wu-sheng in #701
- Add a plugin that supports the Solon framework. by @xsShuang in #697
- Fixed issues in the MySQL component where the executeBatch method could result in empty SQL statements . by @w2dp in #702
- FSupport kafka-clients-3.7.x by @darkness-2nd in #707
New Contributors
- @AlchemyDing made their first contribution in #679
- @ForrestWang123 made their first contribution in #681
- @githubcheng2978 made their first contribution in #684
- @JoeCqupt made their first contribution in #685
- @wengyingjian made their first contribution in #695
- @jiangyunpeng made their first contribution in #698
- @Ricehomesky made their first contribution in #700
- @xsShuang made their first contribution in #697
- @darkness-2nd made their first contribution in #707
Full Changelog: v9.2.0...v9.3.0
9.2.0
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
toSW_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
- @786991884 made their first contribution in #656
- @cylx3126 made their first contribution in #672
- @OrezzerO made their first contribution in #675
Full Changelog: v9.1.0...v9.2.0
9.1.0
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
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 undersw$
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
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
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 toMethod: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
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 nameSW_PLUGIN_TOOLKIT_USE_QUALIFIED_NAME_AS_OPERATION_NAME:false
. They were toolit. - Rename
JDBI
toJDBC
- 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
torabbitmq-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
andmq.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 usingjarsigner
. - Add a config
agent.enable
(default: true) to support disabling the agent through system property-Dskywalking.agent.disable=false
or system environment variable settingSW_AGENT_ENABLE=false
. - Enhance redisson plugin to adopt uniform tags.
Documentation
- Update
Plugin-test.md
, support string operatorsstart with
andend with
- Polish agent configurations doc to fix type error
All issues and pull requests are here
8.13.0
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
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
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
andnamespace
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
(wasyyyy-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