seata 用户不分服务,操作同库,导致XA、AT模式下使用的异常情况

ha5z0ras  于 4个月前  发布在  其他
关注(0)|答案(3)|浏览(73)
  • I have searched the issues of this repository and believe that this is not a duplicate.

Ⅰ. Issue Description

如果用户不分服务,操作同库,jdbcurl相同,导致通过resourceId获取数据源错误,获取不到链接,二阶段下发commit/rollback报错xaer_nota错误; #5034 ,虽然这个pr在一阶段hold了所有链接,如果在oracle同库不同用户下,在一阶段完成后,二阶段服务重启,导致holder没值,可能会造成ORA-24774问题

所以我认为resourceId可能得唯一,才能根本上解决问题

由于我对AT模式代码不太熟悉,这里就暂且不讨论了。

Ⅱ. Describe what happened

If there is an exception, please attach the exception trace:

Just paste your stack trace here!

Ⅲ. Describe what you expected to happen

Ⅳ. How to reproduce it (as minimally and precisely as possible)

  1. xxx
  2. xxx
  3. xxx

Minimal yet complete reproducer code (or URL to code):

Ⅴ. Anything else we need to know?

Ⅵ. Environment:

  • JDK version(e.g. java -version ):
  • Seata client/server version:
  • Database version:
  • OS(e.g. uname -a ):
  • Others:
mbyulnm0

mbyulnm01#

@slievrly
This problem should exist, our resourceid is url and cannot distinguish between different users of the same library
这个问题应该存在,我们的resourceid是url,无法区分同个库不同的用户

fxnxkyjh

fxnxkyjh2#

我们应该讨论下是否要支持这种多数据源,并且还是同个库,不同用户的情况,理论上同个库还有权限问题是所操作的表不同,这种应该只出现在提前划分业务模块,还未拆分成微服务架构,只能靠多数据源来做隔离的阶段。
同个库不同用户权限不同的多个数据源,这种我个人认为不太符合开发规范

dwbf0jvd

dwbf0jvd3#

在看AT/XA模式针对resourceId的取值时,发现AT模式针对不同数据库resourceId取值方式都不同,但是在XA模式下,resourceId都是jdbcUrl问号截取前的;我认为AT模式可能用户较多,经过了几次bug修复调整了resourceId的取值方式,XA模式,目前存在隐藏问题可能是AT模式暴露过的,要不要同步这两者的resourceId取值规则

相关问题