apache / apache/incubator-seata
Seata服务宕机重启后,未完成的业务服务回滚等待时间过长,并有回滚失败情况发生
- Dominant language
- Java
- Stars
- 26k
- Forks
- 8.8k
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 4
Description
- [ ] I have searched the [issues](https://github.com/seata/seata/issues) of this repository and believe that this is not a duplicate.
### Ⅰ. Issue Description
AT模式下,当seata-server挂掉之后,有未完成的全局事务还在undo_log表中,出现两个问题
1、seata-server再次重启后,seata-sample中三个服务,Account、Order回滚成功,Storage回滚失败,然后seata-server就一直反复重试,seata和storage及其他服务重启也无用,然后手工将日志删除,依然不停重试,最后重启seata服务,系统把删掉的日志又给重写到日志表了,但是log_status为1,至此不再重试,但是事务未能成功回滚(此问题只发生过一次,相关日志待再现时补充)
2、seata-server再次重启后,基本上会成功回滚,但是等待时间过长,感觉要至少3-5分钟才会回滚,这期间涉及到的相关业务服务无法处理其他请求,直至之前的未完成全局事务成功回滚了,才能处理其他请求
※上述两个问题都是基于seata-sample产生的
### Ⅱ. 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
### Ⅴ. Anything else we need to know?
### Ⅵ. Environment:
- JDK version :
- OS :
- Others:
Contributor guide
Research direction
Start by reproducing the failure in seata-sample with the Account, Order, and Storage services, stopping and restarting seata-server during an AT transaction. Inspect the undo_log table and the service and server logs, especially for the reported rollback failure and repeated retries. Done means unfinished transactions recover successfully after restart without the reported prolonged blocking or failed rollback.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- distributed-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100