fix: trans mutex init

This commit is contained in:
kailixu 2023-10-17 11:06:06 +08:00
parent 38c1f7d48d
commit a30eedafec
2 changed files with 6 additions and 4 deletions

View File

@ -181,7 +181,7 @@ typedef struct {
SArray* pRpcArray; SArray* pRpcArray;
SRWLatch lockRpcArray; SRWLatch lockRpcArray;
int64_t mTraceId; int64_t mTraceId;
int8_t lock; TdThreadMutex mutex;
} STrans; } STrans;
typedef struct { typedef struct {

View File

@ -428,6 +428,8 @@ static int32_t mndTransActionInsert(SSdb *pSdb, STrans *pTrans) {
mInfo("trans:%d, perform insert action, row:%p stage:%s, callfunc:1, startFunc:%d", pTrans->id, pTrans, mInfo("trans:%d, perform insert action, row:%p stage:%s, callfunc:1, startFunc:%d", pTrans->id, pTrans,
mndTransStr(pTrans->stage), pTrans->startFunc); mndTransStr(pTrans->stage), pTrans->startFunc);
taosThreadMutexInit(&pTrans->mutex, NULL);
if (pTrans->startFunc > 0) { if (pTrans->startFunc > 0) {
TransCbFp fp = mndTransGetCbFp(pTrans->startFunc); TransCbFp fp = mndTransGetCbFp(pTrans->startFunc);
if (fp) { if (fp) {
@ -1258,10 +1260,10 @@ static int32_t mndTransExecuteRedoActionsSerial(SMnode *pMnode, STrans *pTrans)
int32_t numOfActions = taosArrayGetSize(pTrans->redoActions); int32_t numOfActions = taosArrayGetSize(pTrans->redoActions);
if (numOfActions == 0) return code; if (numOfActions == 0) return code;
if (atomic_val_compare_exchange_8(&pTrans->lock, 0, 1) != 0) return code; taosThreadMutexLock(&pTrans->mutex);
if (pTrans->redoActionPos >= numOfActions) { if (pTrans->redoActionPos >= numOfActions) {
atomic_store_8(&pTrans->lock, 0); taosThreadMutexUnlock(&pTrans->mutex);
return code; return code;
} }
@ -1333,7 +1335,7 @@ static int32_t mndTransExecuteRedoActionsSerial(SMnode *pMnode, STrans *pTrans)
} }
} }
atomic_store_8(&pTrans->lock, 0); taosThreadMutexUnlock(&pTrans->mutex);
return code; return code;
} }