暂无图片
antdb数据库显示“ERROR: attempted to local committed but global uncommitted transaction”
我来答
分享
暂无图片 匿名用户
antdb数据库显示“ERROR: attempted to local committed but global uncommitted transaction”

求助,使用antdb数据库时,显示“ERROR: attempted to local committed but global uncommitted transaction, which version is 1749254057 \N wait session last xid commit time out, which version is 1963201898 \N”该怎么解决?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
暂无图片
亚信安慧AntDB数据库

解决方式

该错误出现在CN节点执行SQL操作时;
在报错的CN节点查询adb_snap_state()扩展试图:
select * from adb_snap_state();
--如果提示不存在则在对应的数据库下创建该插件即可:create extension if not exits adb_snap_state;
检查报错的事务ID号是否位于查询结果的xid_assign: []集合中,如果集合中有,则在对应的CN节点执行如下操作:
找到CN进程下的postgres: snapshot receiver process进程号,并尝试kill -15 该进程号(注意:一定要是kill -15不可以-9或者其他),执行完成即可。

正常情况下通过kill -15方式触发事务手工同步即可解决问题,当采用该手段未解决问题时,可以采用如下方式继续处理:
登录GTMC节点,找到gxid sender的数据库进程(譬如进程号是:30099)
窗口一:
通过gdb命令进行如下操作:
gdb -p 30099
handle SIGUSR1 nostop noprint --键入如上命令并回车
b gxidsender.c:140 --键入如上命令并回车
command 1 --键入如上命令并回车
p GxidSender ->xcnt=0 --键入如上命令并回车
c --键入如上命令并回车
end --键入如上命令并回车

窗口二:
此时新开一个终端窗口执行命令kill -15 30099(gxid sender进程号)后继续切换到窗口一执行c命令
窗口一:
c --键入如上命令并回车

通过如上方式强制解决GTMC和CN事务状态不同步的问题;

原因说明

产生该错误的原因可能是CN节点和GC节点事务号未及时同步导致的,可以手工进行同步;

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏