seata在RM识别锁主键冲突异常时会抛出get global lock fail异常,代码如下:
private void recognizeLockKeyConflictException(TransactionException te, String lockKeys) throws SQLException { if (te.getCode() == TransactionExceptionCode.LockKeyConflict) { StringBuilder reasonBuilder = new StringBuilder("get global lock fail, xid:"); reasonBuilder.append(context.getXid()); if (StringUtils.isNotBlank(lockKeys)) { reasonBuilder.append(", lockKeys:").append(lockKeys); } throw new LockConflictException(reasonBuilder.toString()); } else { throw new SQLException(te); } }
出现这个问题大概是锁表lock_table存在相同主键导致。
发表评论