GBase 8s
其他
问答

HikariCP与GBase的兼容问题

发表于2024-12-17 17:58:33238次浏览9个评论

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

【GBase版本】:GBase8sV8.8_TL_3.5.1_3X2_x86_64

JDBC驱动:gbasedbtjdbc_3.5.1_3X2_1.jar

【操作系统】:Centos8 (Docker构建的)

【CPU】:

[gbasedbt@ae8e80484b2a opt]$ lscpu
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              48
On-line CPU(s) list: 0-47
Thread(s) per core:  2
Core(s) per socket:  12
Socket(s):           2
NUMA node(s):        2
Vendor ID:           GenuineIntel
CPU family:          6
Model:               106
Model name:          Intel(R) Xeon(R) Silver 4310 CPU @ 2.10GHz
Stepping:            6
CPU MHz:             799.932
CPU max MHz:         3300.0000
CPU min MHz:         800.0000
BogoMIPS:            4200.00
Virtualization:      VT-x
L1d cache:           48K
L1i cache:           32K
L2 cache:            1280K
L3 cache:            18432K
NUMA node0 CPU(s):   0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46
NUMA node1 CPU(s):   1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch epb cat_l3 invpcid_single ssbd mba rsb_ctxsw ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local dtherm ida arat pln pts hwp hwp_act_window hwp_epp hwp_pkg_req avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq md_clear pconfig spec_ctrl intel_stibp flush_l1d arch_capabilities

【问题描述】*:

启动系统时报错 `HikariCP - Driver does not support get/set network timeout for connections. (不支持方法 : IfxSqliConnect.setNetworkTimeout(Executor, int))`,查看了驱动 `gbasedbtjdbc_3.5.1_3X2_1.jar` 的代码,发现是驱动内部不支持该方法,那么项目上要如何处理这个问题?

16:49:32.806 [main] INFO  com.zaxxer.hikari.HikariDataSource - HikariCP - Starting...
16:49:33.138 [main] INFO  com.zaxxer.hikari.pool.PoolBase - HikariCP - Driver does not support get/set network timeout for connections. (不支持方法 : IfxSqliConnect.setNetworkTimeout(Executor, int))
16:49:33.157 [main] ERROR com.zaxxer.hikari.pool.PoolBase - HikariCP - Failed to execute connection test query (发生语法错误。).
16:49:33.162 [main] ERROR com.zaxxer.hikari.pool.HikariPool - HikariCP - Error thrown while acquiring connection from data source
java.sql.SQLException: 发生语法错误。
	at com.gbasedbt.util.IfxErrMsg.getSQLException(IfxErrMsg.java:409)
	at com.gbasedbt.jdbc.IfxSqli.a(IfxSqli.java:3577)
	at com.gbasedbt.jdbc.IfxSqli.D(IfxSqli.java:3857)
	at com.gbasedbt.jdbc.IfxSqli.dispatchMsg(IfxSqli.java:2747)
	at com.gbasedbt.jdbc.IfxSqli.receiveMessage(IfxSqli.java:2672)
	at com.gbasedbt.jdbc.IfxSqli.executeExecute(IfxSqli.java:2575)
	at com.gbasedbt.jdbc.IfxSqli.executeExecute(IfxSqli.java:2555)
	at com.gbasedbt.jdbc.IfxResultSet.b(IfxResultSet.java:374)
	at com.gbasedbt.jdbc.IfxStatement.a(IfxStatement.java:1412)
	at com.gbasedbt.jdbc.IfxStatement.executeImpl(IfxStatement.java:1384)
	at com.gbasedbt.jdbc.IfxStatement.c(IfxStatement.java:1003)
	at com.gbasedbt.jdbc.IfxStatement.execute(IfxStatement.java:921)
	at com.zaxxer.hikari.pool.PoolBase.executeSql(PoolBase.java:583)
	at com.zaxxer.hikari.pool.PoolBase.checkValidationSupport(PoolBase.java:467)
	at com.zaxxer.hikari.pool.PoolBase.checkDriverSupport(PoolBase.java:447)
	at com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:416)
	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369)
	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476)
	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561)
	at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
	at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
	at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:159)
	at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:117)
	at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:376)
	at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:465)
	at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:475)
	at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:508)
	at org.springframework.jdbc.core.JdbcTemplate.queryForMap(JdbcTemplate.java:502)
	at com.qualsen.plat.web.listener.QualsenInit.run(QualsenInit.java:23)
	at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:771)
	at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:755)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
	at com.qualsen.plat.QualsenApplication.startupApp(QualsenApplication.java:32)
	at com.qualsen.QAIotBizLjxApplication.main(QAIotBizLjxApplication.java:17)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
	at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:467)
Caused by: java.sql.SQLException: null
	at com.gbasedbt.util.IfxErrMsg.getSQLException(IfxErrMsg.java:409)
	at com.gbasedbt.jdbc.IfxSqli.D(IfxSqli.java:3862)
	... 42 common frames omitted
16:49:33.163 [main] ERROR com.zaxxer.hikari.pool.HikariPool - HikariCP - Exception during pool initialization.
java.sql.SQLException: 发生语法错误。
	at com.gbasedbt.util.IfxErrMsg.getSQLException(IfxErrMsg.java:409)
	at com.gbasedbt.jdbc.IfxSqli.a(IfxSqli.java:3577)
	at com.gbasedbt.jdbc.IfxSqli.D(IfxSqli.java:3857)
	at com.gbasedbt.jdbc.IfxSqli.dispatchMsg(IfxSqli.java:2747)
	at com.gbasedbt.jdbc.IfxSqli.receiveMessage(IfxSqli.java:2672)
	at com.gbasedbt.jdbc.IfxSqli.executeExecute(IfxSqli.java:2575)
	at com.gbasedbt.jdbc.IfxSqli.executeExecute(IfxSqli.java:2555)
	at com.gbasedbt.jdbc.IfxResultSet.b(IfxResultSet.java:374)
	at com.gbasedbt.jdbc.IfxStatement.a(IfxStatement.java:1412)
	at com.gbasedbt.jdbc.IfxStatement.executeImpl(IfxStatement.java:1384)
	at com.gbasedbt.jdbc.IfxStatement.c(IfxStatement.java:1003)
	at com.gbasedbt.jdbc.IfxStatement.execute(IfxStatement.java:921)
	at com.zaxxer.hikari.pool.PoolBase.executeSql(PoolBase.java:583)
	at com.zaxxer.hikari.pool.PoolBase.checkValidationSupport(PoolBase.java:467)
	at com.zaxxer.hikari.pool.PoolBase.checkDriverSupport(PoolBase.java:447)
	at com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:416)
	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369)
	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476)
	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561)
	at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
	at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
	at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:159)
	at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:117)
	at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:376)
	at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:465)
	at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:475)
	at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:508)
	at org.springframework.jdbc.core.JdbcTemplate.queryForMap(JdbcTemplate.java:502)
	at com.qualsen.plat.web.listener.QualsenInit.run(QualsenInit.java:23)
	at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:771)
	at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:755)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
	at com.qualsen.plat.QualsenApplication.startupApp(QualsenApplication.java:32)
	at com.qualsen.QAIotBizLjxApplication.main(QAIotBizLjxApplication.java:17)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
	at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:467)
Caused by: java.sql.SQLException: null
	at com.gbasedbt.util.IfxErrMsg.getSQLException(IfxErrMsg.java:409)
	at com.gbasedbt.jdbc.IfxSqli.D(IfxSqli.java:3862)
	... 42 common frames omitted
16:49:33.167 [main] INFO  o.s.b.a.l.ConditionEvaluationReportLoggingListener -
aiot_server_biz2_ljx    |
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
16:49:33.202 [main] ERROR o.s.boot.SpringApplication - Application run failed
java.lang.IllegalStateException: Failed to execute CommandLineRunner
	at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:774)
	at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:755)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
	at com.qualsen.plat.QualsenApplication.startupApp(QualsenApplication.java:32)
	at com.qualsen.QAIotBizLjxApplication.main(QAIotBizLjxApplication.java:17)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
	at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:467)
Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: 发生语法错误。
	at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:83)
	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:376)
	at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:465)
	at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:475)
	at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:508)
	at org.springframework.jdbc.core.JdbcTemplate.queryForMap(JdbcTemplate.java:502)
	at com.qualsen.plat.web.listener.QualsenInit.run(QualsenInit.java:23)
	at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:771)
	... 13 common frames omitted
Caused by: java.sql.SQLException: 发生语法错误。
	at com.gbasedbt.util.IfxErrMsg.getSQLException(IfxErrMsg.java:409)
	at com.gbasedbt.jdbc.IfxSqli.a(IfxSqli.java:3577)
	at com.gbasedbt.jdbc.IfxSqli.D(IfxSqli.java:3857)
	at com.gbasedbt.jdbc.IfxSqli.dispatchMsg(IfxSqli.java:2747)
	at com.gbasedbt.jdbc.IfxSqli.receiveMessage(IfxSqli.java:2672)
	at com.gbasedbt.jdbc.IfxSqli.executeExecute(IfxSqli.java:2575)
	at com.gbasedbt.jdbc.IfxSqli.executeExecute(IfxSqli.java:2555)
	at com.gbasedbt.jdbc.IfxResultSet.b(IfxResultSet.java:374)
	at com.gbasedbt.jdbc.IfxStatement.a(IfxStatement.java:1412)
	at com.gbasedbt.jdbc.IfxStatement.executeImpl(IfxStatement.java:1384)
	at com.gbasedbt.jdbc.IfxStatement.c(IfxStatement.java:1003)
	at com.gbasedbt.jdbc.IfxStatement.execute(IfxStatement.java:921)
	at com.zaxxer.hikari.pool.PoolBase.executeSql(PoolBase.java:583)
	at com.zaxxer.hikari.pool.PoolBase.checkValidationSupport(PoolBase.java:467)
	at com.zaxxer.hikari.pool.PoolBase.checkDriverSupport(PoolBase.java:447)
	at com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:416)
	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369)
	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476)
	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561)
	at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
	at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
	at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:159)
	at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:117)
	at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
	... 20 common frames omitted
Caused by: java.sql.SQLException: null
	at com.gbasedbt.util.IfxErrMsg.getSQLException(IfxErrMsg.java:409)
	at com.gbasedbt.jdbc.IfxSqli.D(IfxSqli.java:3862)
	... 42 common frames omitted

评论

登录后才可以发表评论
用户头像
liaosnet发表于 1年前
看起来是防断连(空闲连接检测) thrown while acquiring connection from data source 的语句有问题。
请使用 select 1 from dual (默认是select 1 )
GBase用户25340发表于 1年前
@liaosnet:并非防断连(空闲连接检测)SQL,是业务上在系统启动的时候,会通过JdbcTemplate执行 select count(1) from 业务表,来查询数据的数量,紧接着提前预热数据处理,现在这样这个业务会出现问题,SQL无法执行
用户头像
liaosnet发表于 1年前
@GBase用户25340:数据库服务器 onmode -I 201 抓一下201的错误号,会生成af文件,里边会有具体语句。
GBase用户25340发表于 1年前
@liaosnet:找到问题了,确实如你所说,是心跳SQL,默认配置了 select 1

hikari:
#连接池名
pool-name: HikariCP
maximum-pool-size: 100
connection-test-query: select 1
catalog: ${MYSQL_SERVER_NAME}
schema: ${MYSQL_SERVER_NAME}

查看了一下 HikariCP 的源码,发现可以使用 JDBC4 的标准,不走这个逻辑。

最佳回答
用户头像
曾阿牛发表于 1年前
@GBase用户25340:点赞
GBase用户25340发表于 1年前
@liaosnet:刚拍查了一下,发现hakari的心跳检测可以关闭,先把hikari的心跳检测关闭了
用户头像
liaosnet发表于 1年前
"启动系统时报错 `HikariCP - Driver does not support get/set network timeout for connection"
这个报错可以忽视,现在使用的驱动还不支持这个方法。
曾浩轩发表于 2个月前
等待有缘人解答。
GBase用户51883发表于 2个月前
不清楚啊。