dubbo-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From wu-sheng (GitHub) <git...@apache.org>
Subject [GitHub] [incubator-dubbo] wu-sheng commented on issue #2830: setSkyWalkingDynamicField(java.lang.Object) not found
Date Sun, 23 Dec 2018 07:17:47 GMT
SkyWalking is providing a patch for avoiding dubbo's bug. We haven't 100% sure why dubbo have
this issue, see https://github.com/apache/incubator-skywalking/pull/2064 . @ascrutae You point
to dubbo 2064 issue.

This is what we found
1. SkyWalking agent will manipulate the dubbo service class, adding `setSkyWalkingDynamicField`
and `getSkyWalkingDynamicField`.
1. Dubbo tries to enhanced the classes too, but magically, dubbo core use the class skeleton
from Class file, not SkyWalking agent enhanced. This trigger the conflict and exception.

My question is, does Dubbo read class file by itself? If yes, then this is a very risky mechanism,
all agents have possibilities to manipulate class when classloader loads it. So the class
in memory is not as same as in file. You can't depend on this, and should follow the class
skeleton from classloader.

Right now, SkyWalking's patch plugin forces **override** dubbo core to ignore SkyWalking's
dynamic methods. It could solve problem for skywalking's users, and that is the best we can
do. I hope dubbo team could dive deeper for this, and solve this forever.

[ Full content available at: https://github.com/apache/incubator-dubbo/issues/2830 ]
This message was relayed via gitbox.apache.org for notifications@dubbo.apache.org

View raw message