@@ -2,163 +2,14 @@ Changes by Version
22==================
33Release Notes.
44
5- 9.0 .0
5+ 9.1 .0
66------------------
77
8- ### Kernel Updates
98
10- * Support re-transform/hot-swap classes with other java agents, and remove the obsolete cache enhanced class feature.
11- * Implement new naming policies for names of auxiliary type, interceptor delegate field, renamed origin method, method
12- access name, method cache value field. All names are under ` sw$ ` name trait. They are predictable and unchanged after
13- re-transform.
14-
15- ```
16- * SWAuxiliaryTypeNamingStrategy
17- Auxiliary type name pattern: <origin_class_name>$<name_trait>$auxiliary$<auxiliary_type_instance_hash>
18-
19- * DelegateNamingResolver
20- Interceptor delegate field name pattern: <name_trait>$delegate$<class_name_hash>$<plugin_define_hash>$<intercept_point_hash>
21-
22- * SWMethodNameTransformer
23- Renamed origin method pattern: <name_trait>$original$<method_name>$<method_description_hash>
24-
25- * SWImplementationContextFactory
26- Method cache value field pattern: cachedValue$<name_trait>$<origin_class_name_hash>$<field_value_hash>
27- Accessor method name pattern: <renamed_origin_method>$accessor$<name_trait>$<origin_class_name_hash>
28- ```
29-
30- Here is an example of manipulated enhanced class with new naming policies of auxiliary classes, fields, and methods
31-
32- ``` java
33- import sample.mybatis.controller.HotelController$sw$auxiliary$19cja42 ;
34- import sample.mybatis.controller.HotelController$sw$auxiliary$p257su0 ;
35- import sample.mybatis.domain.Hotel ;
36- import sample.mybatis.service.HotelService ;
37-
38- @RequestMapping (value = {" /hotel" })
39- @RestController
40- public class HotelController
41- implements EnhancedInstance {
42- @Autowired
43- @lazy
44- private HotelService hotelService;
45- private volatile Object _$EnhancedClassField_ws ;
46-
47- // Interceptor delegate fields
48- public static volatile /* synthetic */ InstMethodsInter sw$delegate$td03673$ain2do0$8im5jm1;
49- public static volatile /* synthetic */ InstMethodsInter sw$delegate$td03673$ain2do0$edkmf61;
50- public static volatile /* synthetic */ ConstructorInter sw$delegate$td03673$ain2do0$qs9unv1;
51- public static volatile /* synthetic */ InstMethodsInter sw$delegate$td03673$fl4lnk1$m3ia3a2;
52- public static volatile /* synthetic */ InstMethodsInter sw$delegate$td03673$fl4lnk1$sufrvp1;
53- public static volatile /* synthetic */ ConstructorInter sw$delegate$td03673$fl4lnk1$cteu7s1;
54-
55- // Origin method cache value field
56- private static final /* synthetic */ Method cachedValue$sw$td03673$g5sobj1;
57-
58- public HotelController () {
59- this (null );
60- sw$delegate$td03673$ain2do0$qs9unv1. intercept(this , new Object [0 ]);
61- }
62-
63- private /* synthetic */ HotelController (sw .auxiliary .p257su0 p257su02 ) {
64- }
65-
66- @GetMapping (value = {" city/{cityId}" })
67- public Hotel selectByCityId (@PathVariable (value = " cityId" ) int n ) {
68- // call interceptor with auxiliary type and parameters and origin method object
69- return (Hotel )sw$delegate$td03673$ain2do0$8im5jm1. intercept(this , new Object []{n}, new HotelController $sw$auxiliary$19cja42(this , n), cachedValue$sw$td03673$g5sobj1);
70- }
71-
72- // Renamed origin method
73- private /* synthetic */ Hotel sw$origin$selectByCityId$a8458p3 (int cityId ) {
74- /* 22*/ return this . hotelService. selectByCityId(cityId);
75- }
76-
77- // Accessor of renamed origin method, calling from auxiliary type
78- final /* synthetic */ Hotel sw$origin$selectByCityId$a8458p3$accessor$sw$td03673 (int n ) {
79- // Calling renamed origin method
80- return this . sw$origin$selectByCityId$a8458p3(n);
81- }
82-
83- @OverRide
84- public Object getSkyWalkingDynamicField () {
85- return this . _$EnhancedClassField_ws ;
86- }
87-
88- @OverRide
89- public void setSkyWalkingDynamicField (Object object ) {
90- this . _$EnhancedClassField_ws = object;
91- }
92-
93- static {
94- ClassLoader . getSystemClassLoader(). loadClass(" org.apache.skywalking.apm.dependencies.net.bytebuddy.dynamic.Nexus" ). getMethod(" initialize" , Class . class, Integer . TYPE ). invoke(null , HotelController . class, - 1072476370 );
95- // Method object
96- cachedValue$sw$td03673$g5sobj1 = HotelController . class. getMethod(" selectByCityId" , Integer . TYPE );
97- }
98- }
99- ```
100-
101- Auxiliary type of Constructor :
102- ``` java
103- class HotelController $sw$auxiliary$p257su0 {
104- }
105- ```
106-
107- Auxiliary type of ` selectByCityId ` method:
108- ``` java
109- class HotelController $sw$auxiliary$19cja42
110- implements Runnable ,
111- Callable {
112- private HotelController argument0;
113- private int argument1;
114-
115- public Object call () throws Exception {
116- return this . argument0. sw$origin$selectByCityId$a8458p3$accessor$sw$td03673(this . argument1);
117- }
118-
119- @OverRide
120- public void run () {
121- this . argument0. sw$origin$selectByCityId$a8458p3$accessor$sw$td03673(this . argument1);
122- }
123-
124- HotelController$sw$auxiliary$19cja42 (HotelController hotelController , int n ) {
125- this . argument0 = hotelController;
126- this . argument1 = n;
127- }
128- }
129- ```
130-
131- #### Features and Bug Fixes
132-
133- * Support Jdk17 ZGC metric collect
134- * Support Jetty 11.x plugin
135- * Support access to the sky-walking tracer context in spring gateway filter
136- * Fix the scenario of using the HBase plugin with spring-data-hadoop.
137- * Add RocketMQ 5.x plugin
138- * Fix the conflict between the logging kernel and the JDK threadpool plugin.
139- * Fix the thread safety bug of finishing operation for the span named "SpringCloudGateway/sendRequest"
140- * Fix NPE in guava-eventbus-plugin.
141- * Add WebSphere Liberty 23.x plugin
142- * Add Plugin to support aerospike Java client
143- * Add ClickHouse parsing to the jdbc-common plugin.
144- * Support to trace redisson lock
145- * Upgrade netty-codec-http2 to 4.1.94.Final
146- * Upgrade guava to 32.0.1
147- * Fix issue with duplicate enhancement by ThreadPoolExecutor
148- * Add plugin to support for RESTeasy 6.x.
149- * Fix the conditions for resetting UUID, avoid the same uuid causing the configuration not to be updated.
150- * Fix witness class in springmvc-annotation-5.x-plugin to avoid falling into v3 use cases.
151- * Fix Jedis-2.x plugin bug and add test for Redis cluster scene
152- * Merge two instrumentation classes to avoid duplicate enhancements in MySQL plugins.
153- * Support asynchronous invocation in jetty client 9.0 and 9.x plugin
154- * Add nacos-client 2.x plugin
155- * Staticize the tags for preventing synchronization in JDK 8
156- * Add RocketMQ-Client-Java 5.x plugin
157- * Fix NullPointerException in lettuce-5.x-plugin.
1589
15910#### Documentation
16011
161- All issues and pull requests are [ here] ( https://github.com/apache/skywalking/milestone/178 ?closed=1 )
12+ All issues and pull requests are [ here] ( https://github.com/apache/skywalking/milestone/194 ?closed=1 )
16213
16314------------------
16415Find change logs of all versions [ here] ( changes ) .
0 commit comments