Sharding-JDBC 1.4.2 proxool bug

发布于 2021-12-01 12:06:11 字数 763 浏览 920 评论 2

测试场景:
版本 1.4.2
链接池 proxool 
环境    spring3.2+hibernate4.2
结果  分库无效;
连接池改用druid 则数据可以正常分库

在版本1.3.3测试proxool正常

相关日志
DEBUG c.d.d.r.s.router.SQLRouteEngine - master:INSERT INTO ccp_sms_req (id, accountId, num) VALUES (replace(uuid(), '-', ''), ?, ?) [1000, 11120007310]
DEBUG c.d.d.r.s.router.SQLRouteEngine - 11001:INSERT INTO ccp_sms_req (id, accountId, num) VALUES (replace(uuid(), '-', ''), ?, ?) [1001, 11120007311]
DEBUG c.d.d.r.s.router.SQLRouteEngine - master:INSERT INTO ccp_sms_req (id, accountId, num) VALUES (replace(uuid(), '-', ''), ?, ?) [1002, 11120007312]

测试结果 在 proxool 连接池下的实际结果为 3条数据都插入到了master库;改用druid 连接池则复合预期;
期望结果 2条数据入到master库,1条数据入到11001库;

 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

岁月打碎记忆 2021-12-05 05:13:07

可以看一下这个issue,有解决方案:https://github.com/dangdangdotcom/sharding-jdbc/issues/259

明媚如初 2021-12-05 01:54:35
使用Proxool配置多个数据源时,应该为每个数据源设置alias,因为Proxool在使用连接时会判断连接池中是否包含已存在的alias,不配置alias会造成每次获取都只从一个数据源中获取连接。
```java
    if(!ConnectionPoolManager.getInstance().isPoolExists(this.alias)) {
        this.registerPool();
    }
```
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文