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/02/25 15:42:13 UTC

[GitHub] dsc6636926 opened a new pull request #2292: mysql-8x-plugin and multihost support for mysql5.x

dsc6636926 opened a new pull request #2292: mysql-8x-plugin and multihost support for mysql5.x
URL: https://github.com/apache/incubator-skywalking/pull/2292
 
 
   Please answer these questions before submitting pull request
   
   - Why submit this pull request?
   - [x] Bug fix
   - [ ] New feature provided
   - [ ] Improve performance
   
   - Related issues
   #2097 #1947 
   ___
   ### Bug fix
   - Bug description.
   
   - How to fix?
   
   #2097 i create a mysql-8x plugin ,
   #1947 i create a new Instrumentation Class and a new Interceptor to Intercept the ConnectionImpl#getInstance because when on multihost mode,connection will be init by ConnectionImpl#getInstance one by one,so I can setSkyWalkingFields here.
   
   Driver.connect is not the same on MultiHost mode
   and Single mode, so i remove the interceptor on Driver.connect for mysql-5.x mode。but in still appeared on mysql-5.x plugin for mysql-6.x
   
   I think we can also Intercept the ConnectionImpl#getInstance instead of the interceptor on Driver.connect for mysql-6.x mode,sql is final executed by single connection both on single mode or multihost mode,and users will prefer to see the real connection to execute sql,just like what i do on mysql-8.x plugin,then we can also remove FailoverConnectionProxyInstrumentation,LoadBalancedConnectionProxyInstrumentation,ReplicationConnectionProxyInstrumentation and their dependencies to make the plugin more slim~
   
   
   5.x->6.x add com.mysql.cj package,
   6.x->8.x remove com.mysql.cj.api package, and add class named "com.mysql.cj.interceptors.QueryInterceptor",
   
   so witnessClass for 5.x can be com.mysql.ConnectionImpl,
   witnessClass for 6.x can be. com.mysql.cj.api.MysqlConnection,
   witnessClass for 8.x can be com.mysql.cj.interceptors.QueryInterceptor
   
   5.x plugin has conflict class,and i dont find any class is both in 5.x and 6.x but not appeared in 8.x
   so 5.x plugin must split to 5.x and 6.x,so i have create a nocj define package on 5.x.
   
   
   if you have some good suggestions, i will modify, thanks
   
   
   I have test mysql-8.x: single mode,replication mode,loadbalance mode.
   mysql-5.x: single mode,replication mode,loadbalance mode.
   mysql-6.x: single mode,replication mode,loadbalance mode
   
   ___
   ### New feature or improvement
   - Describe the details and related test reports.
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on 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