GBase 8a
其他
文章

GBase8a JDBC驱动更新

发表于2025-11-08 13:00:491758次浏览36个评论

一、目的

为解决jdbc驱动 的CNNVD-2024-07951033 反序列化问题和CNNVD-2024-42896235 XML外部实体注入问题,现在需要将gbase 8a的jdbc驱动更新至9.5.0.8-build1及以上版本。

二、jdbc版本更新记录

55.5.6:
修改现场connection.close时的lock问题。
55.5.7:
修改用户加密算法和处理逻辑改造,增加sha256加密方式。
9.5.0.1-build1:
增加对jdbc4.1规范和jdbc4.2规范的支持。
9.5.0.2-build1:
增加参数合法校验合规参数,兼容spark框架。
9.5.0.3-build1:
修改UpdatableResultSet类,增加对update的支持。
9.5.0.4-build1:
增加对是否支持主键参数的支持。
9.5.0.5-build1:
修改负载均衡全部失败时候的异常信息。
9.5.0.6-build1:
解决握手阶段报错信息乱码问题;
适配集群登录认证加密算法。
9.5.0.7-build1:
解决XML外部实体注入漏洞;
解决启动反序列化漏洞。
9.5.0.8-build1:
解决hikariCP连接池调用setSocketTimeout接口时,出现socket is closed问题。
9.5.0.9-build1:
去掉性能分析功能;
修改loaddata语句包含中文时,发送到server乱码问题。
9.5.0.10-build1:
解决在使用负载均衡功能时,采用线程池并发创建连接时,连接不均衡的问题。
9.5.0.11-build1:
增加随机ip参数,支持在使用负载均衡时随机获取一个IP。

三、更新问题记录

现场由55.5.7版本更新到9.5.0.8-build1,后出现sql执行时间超过十秒后,客户端报错,报错内容如下

经过测试和分析后得出以下结论:一开始应用的druid连接池参数socketTimeout(如果sql已发送至server,超过这个参数配置时间还未收到数据库的返回结果,就会报错)默认值设置的为10秒,但是旧版本的jdbc不支持druid的socketTimeout参数,所以直接忽略了,新版本的jdbc支持了此参数,所以导致sql执行超过十秒后,druid未收到对应结果,直接杀掉了对应线程,并重新建立,但数据库端sql正常执行,不会产生报错,错误只在应用端。

四、解决办法

druid连接池添加ConnectTimeout和SocketTimeout参数。ConnectTimeout建议设置为60000,即一分钟;SocketTimeout设置为300000-7200000(具体根据实际情况sql确定),即5分钟-2小时。

评论

登录后才可以发表评论
冰凤发表于 8个月前
路过
用户头像
GBase用户28017发表于 8个月前
,学习。
用户头像
柒柒天晴发表于 8个月前
起飞
用户头像
郝老师发表于 8个月前
学习了
沈补快发表于 8个月前
学习了
沈补快发表于 8个月前
学习
大胖宝发表于 8个月前
学习了
枫溪发表于 8个月前
111
枫溪发表于 8个月前
路过
GBase用户31099发表于 8个月前
111
冰凤发表于 8个月前
666
用户头像
大力发表于 7个月前
学习了 起飞
用户头像
大力发表于 7个月前
学习
用户头像
mittens发表于 6个月前
感谢分享
用户头像
mittens发表于 6个月前
优秀
GBase用户47567发表于 6个月前
学习了
fangzpa发表于 6个月前
学习
GBase用户47567发表于 6个月前
继续努力
GBase用户47567发表于 6个月前
路过观望
GBase用户47567发表于 6个月前
学习了
用户头像
mittens发表于 6个月前
感谢分享
GBase用户47567发表于 6个月前
好驱动
GBase用户47567发表于 6个月前
路过
用户头像
mittens发表于 6个月前
很棒,学习一下。
用户头像
mittens发表于 6个月前
学习一下
冰凤发表于 6个月前
1
冰凤发表于 6个月前
1
冰凤发表于 6个月前
2
冰凤发表于 6个月前
3
冰凤发表于 6个月前
4
冰凤发表于 6个月前
5
G2021发表于 5个月前
学习了
用户头像
山佳发表于 5个月前
学习
崔哥发表于 5个月前
梅花不肯傍春光,自向深冬著艳阳。龙笛远吹胡地月,燕钗初试汉宫妆。风虽强暴翻添思,雪欲侵凌更助香。应笑暂时桃李树,盗天和气作年芳。
milan发表于 5个月前
学习
ljt98发表于 2个月前
厉害了