-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BugFix] Fix mysql jdbc incompatible bug #51613
[BugFix] Fix mysql jdbc incompatible bug #51613
Conversation
@Astralidea Could you please take a look? I see you introduce the variable |
@mergify rebase |
1 similar comment
@mergify rebase |
✅ Branch has been successfully rebased |
4280e94
to
05b4536
Compare
I don't figure out why there are some failed fe UTs. I think the failed tests are not related to this change. |
@mergify rebase |
Signed-off-by: zhangbutao <[email protected]>
✅ Branch has been successfully rebased |
05b4536
to
359876e
Compare
Quality Gate passedIssues Measures |
[Java-Extensions Incremental Coverage Report]✅ pass : 0 / 0 (0%) |
[BE Incremental Coverage Report]✅ pass : 0 / 0 (0%) |
@Mergifyio backport branch-3.3 |
✅ Backports have been created
|
## Why I'm doing: If I change the velue of `mysql_server_version` from 5.1.0 to 8.0.33 to resolve the CVEs, some springboot service which use `HikariPool` will not connect StarRocks: BTW, I have test the two jdbc drivers, both `mysql-connector-java-5.1.49` and `mysql-connector-java-8.0.33` can not work. ``` [2024-09-27 14:49:07,964] [main] ERROR com.zaxxer.hikari.pool.HikariPool (HikariPool.java:498) - OLAP-TEST - Error thrown while acquiring connection from data source java.sql.SQLException: Could not retrieve transaction read-only status from server at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965) ~[mysql-connector-java-5.1.49.jar:5.1.49] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898) ~[mysql-connector-java-5.1.49.jar:5.1.49] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887) ~[mysql-connector-java-5.1.49.jar:5.1.49] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861) ~[mysql-connector-java-5.1.49.jar:5.1.49] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:878) ~[mysql-connector-java-5.1.49.jar:5.1.49] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:874) ~[mysql-connector-java-5.1.49.jar:5.1.49] at com.mysql.jdbc.ConnectionImpl.isReadOnly(ConnectionImpl.java:3523) ~[mysql-connector-java-5.1.49.jar:5.1.49] at com.mysql.jdbc.ConnectionImpl.isReadOnly(ConnectionImpl.java:3490) ~[mysql-connector-java-5.1.49.jar:5.1.49] at com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:408) ~[HikariCP-4.0.3.jar:?] at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369) ~[HikariCP-4.0.3.jar:?] at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206) ~[HikariCP-4.0.3.jar:?] at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476) ~[HikariCP-4.0.3.jar:?] at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561) ~[HikariCP-4.0.3.jar:?] at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) ~[HikariCP-4.0.3.jar:?] at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-4.0.3.jar:?] at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:159) ~[spring-jdbc-5.3.27.jar:5.3.27] at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:117) ~[spring-jdbc-5.3.27.jar:5.3.27] at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80) ~[spring-jdbc-5.3.27.jar:5.3.27] at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:337) ~[spring-jdbc-5.3.27.jar:5.3.27] at org.springframework.boot.jdbc.AbstractDataSourceInitializer.getDatabaseName(AbstractDataSourceInitializer.java:96) ~[spring-boot-2.5.15.jar:2.5.15] at org.springframework.boot.autoconfigure.quartz.QuartzDataSourceInitializer.getDatabaseName(QuartzDataSourceInitializer.java:66) ~[spring-boot-autoconfigure-2.5.15.jar:2.5.15] at org.springframework.boot.jdbc.AbstractDataSourceInitializer.initialize(AbstractDataSourceInitializer.java:65) ~[spring-boot-2.5.15.jar:2.5.15] at org.springframework.boot.jdbc.AbstractDataSourceInitializer.afterPropertiesSet(AbstractDataSourceInitializer.java:55) ~[spring-boot-2.5.15.jar:2.5.15] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) ~[spring-beans-5.3.27.jar:5.3.27] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) ~[spring-beans-5.3.27.jar:5.3.27] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.27.jar:5.3.27] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.27.jar:5.3.27] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.27.jar:5.3.27] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) [spring-beans-5.3.27.jar:5.3.27] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) [spring-beans-5.3.27.jar:5.3.27] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) [spring-beans-5.3.27.jar:5.3.27] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322) [spring-beans-5.3.27.jar:5.3.27] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) [spring-beans-5.3.27.jar:5.3.27] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1156) [spring-context-5.3.27.jar:5.3.27] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:910) [spring-context-5.3.27.jar:5.3.27] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) [spring-context-5.3.27.jar:5.3.27] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) [spring-boot-2.5.15.jar:2.5.15] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:780) [spring-boot-2.5.15.jar:2.5.15] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:453) [spring-boot-2.5.15.jar:2.5.15] at org.springframework.boot.SpringApplication.run(SpringApplication.java:343) [spring-boot-2.5.15.jar:2.5.15] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1370) [spring-boot-2.5.15.jar:2.5.15] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1359) [spring-boot-2.5.15.jar:2.5.15] at com.chinamobile.cmss.olap.server.OlapServerApp.main(OlapServerApp.java:26) [classes/:?] Caused by: java.sql.SQLException: Invalid value for getInt() - 'OFF' at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965) ~[mysql-connector-java-5.1.49.jar:5.1.49] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898) ~[mysql-connector-java-5.1.49.jar:5.1.49] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887) ~[mysql-connector-java-5.1.49.jar:5.1.49] at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861) ~[mysql-connector-java-5.1.49.jar:5.1.49] at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2504) ~[mysql-connector-java-5.1.49.jar:5.1.49] at com.mysql.jdbc.ConnectionImpl.isReadOnly(ConnectionImpl.java:3519) ~[mysql-connector-java-5.1.49.jar:5.1.49] ... 36 more ``` ## What I'm doing: Follow the Doris Fix: https://github.com/apache/doris/blob/9b8e65b294c443d50e2745fdbc9f9a9aadef68ba/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java#L804-L805 Change `transactionReadOnly `to `boolean `Type & default value `false` can resolve this issue. Signed-off-by: zhangbutao <[email protected]> (cherry picked from commit fde3a9a)
Why I'm doing:
If I change the velue of
mysql_server_version
from 5.1.0 to 8.0.33 to resolve the CVEs, some springboot service which useHikariPool
will not connect StarRocks:BTW, I have test the two jdbc drivers, both
mysql-connector-java-5.1.49
andmysql-connector-java-8.0.33
can not work.What I'm doing:
Follow the Doris Fix:
https://github.com/apache/doris/blob/9b8e65b294c443d50e2745fdbc9f9a9aadef68ba/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java#L804-L805
Change
transactionReadOnly
toboolean
Type & default valuefalse
can resolve this issue.Fixes #issue
What type of PR is this:
Does this PR entail a change in behavior?
If yes, please specify the type of change:
Checklist:
Bugfix cherry-pick branch check: