dtmcli-java icon indicating copy to clipboard operation
dtmcli-java copied to clipboard

阅读代码发现的4个问题

Open babyfish-ct opened this issue 2 years ago • 3 comments

看了一下Java SDK的源码,发现如下几个问题(由大到小排序)

---大问题---

  1. 为完成本地事务屏障,私自打开和关闭JDBC链接,导致和原有Spring 的连接/事务管理功能脱钩。实际项目中,用户代码不太可能直接基于指定的JDBC连接执行,一般是基于Spring技术栈提供的更高级的数据访问技术操作,这会导致SDK保证事务屏障的JDBC连接和实际业务的连接并非同一连接。

---小问题---

  1. 本地事务屏障只支持MySQL

  2. 不会自动创建barrier表

babyfish-ct avatar Jun 28 '22 09:06 babyfish-ct

看了一下Java SDK的源码,发现如下几个问题(由大到小排序)

---大问题---

  1. 为完成本地事务屏障,私自打开和关闭JDBC链接,导致和原有Spring 的连接/事务管理功能脱钩。实际项目中,用户代码不太可能直接基于指定的JDBC连接执行,一般是基于Spring技术栈提供的更高级的数据访问技术操作,这会导致SDK保证事务屏障的JDBC连接和实际业务的连接并非同一连接。

---小问题---

  1. 本地事务屏障只支持MySQL
  2. 不会自动创建barrier表

如果你有好的想法,欢迎提pr 去修改它

li-xiao-shuang avatar Jun 30 '22 09:06 li-xiao-shuang

看了一下Java SDK的源码,发现如下几个问题(由大到小排序)

---大问题---

  1. 为完成本地事务屏障,私自打开和关闭JDBC链接,导致和原有Spring 的连接/事务管理功能脱钩。实际项目中,用户代码不太可能直接基于指定的JDBC连接执行,一般是基于Spring技术栈提供的更高级的数据访问技术操作,这会导致SDK保证事务屏障的JDBC连接和实际业务的连接并非同一连接。

---小问题---

  1. 本地事务屏障只支持MySQL
  2. 不会自动创建barrier表
  1. 之前做这块的时候想到了这个问题,但是为了兼容普通版本的dtm-client所以采取了这样的方式,暂时还没想好怎么同时兼容这两种方式。使用一个Connection接口同时来兼容两种方式或许可以,欢迎提pr和我们一起改进。
  2. 这目前确实是一个问题
  3. 创建barrier表的sql语句请参考https://github.com/dtm-labs/dtm

horseLk avatar Jul 03 '22 16:07 horseLk

编译环境问题的实在没时间去折腾,没有解决完。所以我这边是无法在IDE中编译的

我提了个PR,给出了第一个问题解决方案。

至于第二个问题,可以使用一个Dialect抽象,比常见的SQL的insert ignore操作内置了。

babyfish-ct avatar Jul 03 '22 17:07 babyfish-ct