saga模式下 store.mode = db 事务结束后globalsession的状态未正确修改为commited,依然还是begin,导致global表中状态为1,等待1800s后会对事务进行回滚; SessionHelper中endCommitted的中的
public static void endCommitted(GlobalSession globalSession, boolean retryGlobal) throws TransactionException {
if (retryGlobal || !DELAY_HANDLE_SESSION) {
long beginTime = System.currentTimeMillis();
boolean retryBranch = globalSession.getStatus() == GlobalStatus.CommitRetrying;
globalSession.changeGlobalStatus(GlobalStatus.Committed);
globalSession.end();
if (!DELAY_HANDLE_SESSION) {
MetricsPublisher.postSessionDoneEvent(globalSession, false, false);
}
MetricsPublisher.postSessionDoneEvent(globalSession, IdConstants.STATUS_VALUE_AFTER_COMMITTED_KEY, true,
beginTime, retryBranch);
} else {
MetricsPublisher.postSessionDoneEvent(globalSession, false, false);
}
}
store.mode = db 时DELAY_HANDLE_SESSION为true,进不了分支,导致不能changeGlobalStatus为Committed
把DELAY_HANDLE_SESSION的取反去掉