Skip to content
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

阅读代码发现的4个问题 #34

Open
babyfish-ct opened this issue Jun 28, 2022 · 3 comments
Open

阅读代码发现的4个问题 #34

babyfish-ct opened this issue Jun 28, 2022 · 3 comments

Comments

@babyfish-ct
Copy link
Contributor

babyfish-ct commented Jun 28, 2022

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

---大问题---

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

---小问题---

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

  2. 不会自动创建barrier表

@li-xiao-shuang
Copy link
Member

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

---大问题---

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

---小问题---

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

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

@horseLk
Copy link
Contributor

horseLk commented Jul 3, 2022

看了一下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

@babyfish-ct
Copy link
Contributor Author

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

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants