Seata报TimeoutRollbacking while expecting Begin

io.seata.core.exception.GlobalTransactionException: Could not register branch into global session xid =  status = TimeoutRollbacking while expecting Begin
	at io.seata.server.coordinator.AbstractCore.globalSessionStatusCheck(AbstractCore.java:102)
	at io.seata.server.coordinator.AbstractCore.lambda$branchRegister$0(AbstractCore.java:73)
	at io.seata.server.storage.db.session.DataBaseSessionManager.lockAndExecute(DataBaseSessionManager.java:194)
	at io.seata.server.session.SessionHolder.lockAndExecute(SessionHolder.java:324)
	at io.seata.server.coordinator.AbstractCore.branchRegister(AbstractCore.java:72)
	at io.seata.server.coordinator.DefaultCore.branchRegister(DefaultCore.java:97)
	at io.seata.server.coordinator.DefaultCoordinator.doBranchRegister(DefaultCoordinator.java:192)
	at io.seata.server.AbstractTCInboundHandler$4.execute(AbstractTCInboundHandler.java:184)
	at io.seata.server.AbstractTCInboundHandler$4.execute(AbstractTCInboundHandler.java:179)
	at io.seata.core.exception.AbstractExceptionHandler.exceptionHandleTemplate(AbstractExceptionHandler.java:116)
	at io.seata.server.AbstractTCInboundHandler.handle(AbstractTCInboundHandler.java:179)
	at io.seata.core.protocol.transaction.BranchRegisterRequest.handle(BranchRegisterRequest.java:136)
	at io.seata.server.coordinator.DefaultCoordinator.onRequest(DefaultCoordinator.java:427)
	at io.seata.core.rpc.processor.server.ServerOnRequestProcessor.onRequestMessage(ServerOnRequestProcessor.java:116)
	at io.seata.core.rpc.processor.server.ServerOnRequestProcessor.process(ServerOnRequestProcessor.java:77)
	at io.seata.core.rpc.netty.AbstractNettyRemoting.lambda$processMessage$2(AbstractNettyRemoting.java:278)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.lang.Thread.run(Thread.java:750)

Centos7.9上seata一直报以上错误

原因:

seata集群的服务器时间不同步导致,其中有一台与其他延迟1分钟以上,seata默认全局事务超时时间是1分钟。

Linux服务器运行久时,系统时间就会存在一定的误差,一般情况下可以使用date命令进行时间设置,但在做数据库集群分片等操作时对多台机器的时间差是有要求的,此时就需要使用ntpdate进行时间同步

解决:

安装时间同步工具
yum install ntpdate -y

网络时间同步命令;注意:若不加上-u参数, 会出现以下提示:no server suitable for synchronization found
ntpdate -u cn.pool.ntp.org

ntp服务器
cn.pool.ntp.org 中国开源免费NTP服务器
ntp1.aliyun.com 阿里云NTP服务器
ntp2.aliyun.com 阿里云NTP服务器
time1.aliyun.com 阿里云NTP服务器
time2.aliyun.com 阿里云NTP服务器

如果不希望一直手工执行可以添加定时任务,root下执行
crontab -e
复制以下内容,每20分钟执行一次
*/20 * * * * /usr/sbin/ntpdate -u ntp1.aliyun.com >/dev/null &
或者执行
echo "*/20 * * * * /usr/sbin/ntpdate -u ntp1.aliyun.com >/dev/null &" >> /var/spool/cron/root

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值