在您使用 GTS 过程中,可能会遇到一些问题。本文解答一些常见的使用问题,帮助您更顺畅的使用 GTS。
服务 A 调用服务 B,服务 A 上加了 GTS 开启事务注解,服务 B 没有注解,那么,A 和 B 是否在同一个分布式事务中?
A 和 B 在一个事务中。在使用 EDAS 服务事务的时候,只要客户端 A 的函数上加入了 GTS 注解,那么这个客户端 A 注解函数下面所有的被调用的服务及其子调用的服务都会加入到这个客户端 A 的事务中。
GTS 服务停止事务还能正常回滚么?
GTS 的 server 会记录下事务的状态并持久化,即使服务停止,在服务重新启动后,事务仍然能够正常回滚。
建表时,列的名称可以使用 SQL 的关键字吗?
不可以,建表时列名不能用 SQL 的关键字,如 DESC、TABLE 等。
GTS 的日志记录在哪儿,怎么查看 GTS 日志?
GTS 的事务日志名称为 txcXXXX.log,其中 XXXX 为 GTS 客户端进程的进程号,其路径为 ${user.home}/logs/txcXXXX.log,其中 ${user.home} 为启动 GTS 客户端的用户账户的根目录。
查看日志时,可以按照 GTS 的全局事务 ID 去查看这个事务在该客户端都操作了哪些资源,及全局提交和回滚情况如何。
运行 sample 样例工程失败,怎么解决?
运行 sample 样例工程失败,报错:
Exception in thread "main" com.taobao.txc.common.b.c: [can't fetch real group name from diamond!vgroup_mapping_xxx] [10000] [unknown error]
解决步骤如下:
- 需要确认一下 GTS 事务分组,即报错中的 “xxx” 是否已经审批通过。
- 然后确认一下样例工程是否运行在售卖区 ECS 上。