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