You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by GitBox <gi...@apache.org> on 2019/05/31 10:46:02 UTC
[GitHub] [skywalking] candyleer opened a new issue #2797: Mysql 6.x Plugin
Exception
candyleer opened a new issue #2797: Mysql 6.x Plugin Exception
URL: https://github.com/apache/skywalking/issues/2797
Please answer these questions before submitting your issue.
- Why do you submit this issue?
- [ ] Question or discussion
- [ ] Bug
- [ ] Requirement
- [x] Feature or performance improvement
___
### Question
- What do you want to know?
___
### Bug
- Which version of SkyWalking, OS and JRE?
- Which company or project?
- What happen?
If possible, provide a way for reproducing the error. e.g. demo application, component version.
When I test mysql plugin 5.x 6.x 8.x in `v6.1.0` ,I found mysql 6.x plugin do not work well. following error for every 6.x version more or less.
### this error exists in `6.0.2` `6.0.3`by `NoSuchMethodError` for `getHostsList` in these versions.cause the name is `getHostList`,one letter difference
```
ERROR 2019-05-31 13:58:00:633 Druid-ConnectionPool-Create-1324769427 StaticMethodsInter : class[class com.mysql.cj.jdbc.ha.LoadBalancedConnectionProxy] after static method[createProxyIns tance] intercept failure:com.mysql.cj.core.conf.url.ConnectionUrl.getHostsList()Ljava/util/List;
7 java.lang.NoSuchMethodError: com.mysql.cj.core.conf.url.ConnectionUrl.getHostsList()Ljava/util/List;
8 at org.apache.skywalking.apm.plugin.jdbc.mysql.v6.CreateLoadBalancedConnectionProxyInstanceInterceptor.afterMethod(CreateLoadBalancedConnectionProxyInstanceInterceptor.java:41)
9 at org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.StaticMethodsInter.intercept(StaticMethodsInter.java:97)
10 at com.mysql.cj.jdbc.ha.LoadBalancedConnectionProxy.createProxyInstance(LoadBalancedConnectionProxy.java)
11 at com.mysql.cj.jdbc.ha.ReplicationConnectionProxy.initializeSlavesConnection(ReplicationConnectionProxy.java:413)
12 at com.mysql.cj.jdbc.ha.ReplicationConnectionProxy.<init>(ReplicationConnectionProxy.java:155)
13 at com.mysql.cj.jdbc.ha.ReplicationConnectionProxy.createProxyInstance$original$bDhcjk7H(ReplicationConnectionProxy.java:78)
14 at com.mysql.cj.jdbc.ha.ReplicationConnectionProxy.createProxyInstance$original$bDhcjk7H$accessor$tYrfZM8v(ReplicationConnectionProxy.java)
15 at com.mysql.cj.jdbc.ha.ReplicationConnectionProxy$auxiliary$YQp0ktb3.call(Unknown Source)
16 at org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.StaticMethodsInter.intercept(StaticMethodsInter.java:86)
17 at com.mysql.cj.jdbc.ha.ReplicationConnectionProxy.createProxyInstance(ReplicationConnectionProxy.java)
18 at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:213)
19 at com.mysql.cj.jdbc.Driver.connect$accessor$7MIgE6QF(Driver.java)
20 at com.mysql.cj.jdbc.Driver$auxiliary$4X8d38iH.call(Unknown Source)
21 at org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstMethodsInter.intercept(InstMethodsInter.java:93)
22 at com.mysql.cj.jdbc.Driver.connect(Driver.java)
23 at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:149)
24 at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:218)
25 at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:143)
26 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1512)
27 at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1575)
28 at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2450)
### these two error exist in all versions for 6.x for the `wrapper` didn't enhance `ConnectionImpl` ,so the `commit` and `close` method can not been enhance and throw NPE
ERROR 2019-05-31 13:58:05:351 http-nio-8081-exec-1 InstMethodsInter : class[class com.mysql.cj.jdbc.ConnectionImpl] before method[commit] intercept failure
84 java.lang.NullPointerException
85 at org.apache.skywalking.apm.plugin.jdbc.ConnectionServiceMethodInterceptor.beforeMethod(ConnectionServiceMethodInterceptor.java:48)
86 at org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstMethodsInter.intercept(InstMethodsInter.java:82)
87 at com.mysql.cj.jdbc.ConnectionImpl.commit(ConnectionImpl.java)
88 at com.mysql.cj.jdbc.ha.MultiHostMySQLConnection.commit(MultiHostMySQLConnection.java:147)
89 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
90 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
91 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
92 at java.lang.reflect.Method.invoke(Method.java:498)
93 at com.mysql.cj.jdbc.ha.LoadBalancedConnectionProxy.invokeMore(LoadBalancedConnectionProxy.java:529)
94 at com.mysql.cj.jdbc.ha.MultiHostConnectionProxy.invoke(MultiHostConnectionProxy.java:404)
95 at com.sun.proxy.$Proxy88.commit(Unknown Source)
96 at com.mysql.cj.jdbc.ha.MultiHostMySQLConnection.commit(MultiHostMySQLConnection.java:147)
97 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
98 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
99 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
100 at java.lang.reflect.Method.invoke(Method.java:498)
101 at com.mysql.cj.jdbc.ha.ReplicationConnectionProxy.invokeMore(ReplicationConnectionProxy.java:291)
102 at com.mysql.cj.jdbc.ha.MultiHostConnectionProxy.invoke(MultiHostConnectionProxy.java:404)
103 at com.sun.proxy.$Proxy89.commit(Unknown Source)
104 at com.alibaba.druid.filter.FilterChainImpl.connection_commit(FilterChainImpl.java:186)
105 at com.alibaba.druid.filter.stat.StatFilter.connection_commit(StatFilter.java:267)
106 at com.alibaba.druid.filter.FilterChainImpl.connection_commit(FilterChainImpl.java:182)
107 at com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl.commit(ConnectionProxyImpl.java:123)
108 at com.alibaba.druid.pool.DruidPooledConnection.commit(DruidPooledConnection.java:749)
109 at org.springframework.jdbc.datasource.DataSourceTransactionManager.doCommit(DataSourceTransactionManager.java:313)
110 at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:761)
111 at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:730)
112 at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:504)
113 at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:292)
114 at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
115 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
116 at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
117 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
118 at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:673)
119 at com.example.test.TestApplication$$EnhancerBySpringCGLIB$$d0b58e8f.mysql(<generated>)
ERROR 2019-05-31 13:58:05:527 http-nio-8081-exec-1 InstMethodsInter : class[class org.apache.catalina.core.StandardHostValve] after method[invoke] intercept failure
190 java.lang.NullPointerException
191 at org.apache.skywalking.apm.agent.core.context.ContextManager.activeSpan(ContextManager.java:161)
192 at org.apache.skywalking.apm.plugin.tomcat78x.TomcatInvokeInterceptor.afterMethod(TomcatInvokeInterceptor.java:78)
193 at org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstMethodsInter.intercept(InstMethodsInter.java:105)
194 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java)
195 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
196 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
197 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
198 at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
199 at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
200 at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
201 at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
202 at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
203 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
204 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
205 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
206 at java.lang.Thread.run(Thread.java:748)
```
and I found 8.x plugin works well and good compatible with versions and 8.x is similar as 6.x
So I want update the 6.x plugin like 8.x plugin by remove every `Wrapper` and only enchance `ConnectionImpl.getInstance()`. so make every 6.x mysql version compatible with our agent plugin .
___
### Requirement or improvement
- Please describe about your requirements or improvement suggestions.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services