diff --git a/source/dnode/vnode/src/inc/vnodeInt.h b/source/dnode/vnode/src/inc/vnodeInt.h index 700c6cf8a3..02c4129d6f 100644 --- a/source/dnode/vnode/src/inc/vnodeInt.h +++ b/source/dnode/vnode/src/inc/vnodeInt.h @@ -308,7 +308,7 @@ struct SVnode { SSink* pSink; tsem_t canCommit; int64_t sync; - SRWLatch lock; + TdThreadMutex lock; bool blocked; bool restored; tsem_t syncSem; diff --git a/source/dnode/vnode/src/vnd/vnodeOpen.c b/source/dnode/vnode/src/vnd/vnodeOpen.c index 4ee5c4760c..a4fd984fb7 100644 --- a/source/dnode/vnode/src/vnd/vnodeOpen.c +++ b/source/dnode/vnode/src/vnd/vnodeOpen.c @@ -85,7 +85,7 @@ SVnode *vnodeOpen(const char *path, STfs *pTfs, SMsgCb msgCb) { pVnode->state.commitTerm = info.state.commitTerm; pVnode->pTfs = pTfs; pVnode->msgCb = msgCb; - taosInitRWLatch(&pVnode->lock); + taosThreadMutexInit(&pVnode->lock, NULL); pVnode->blocked = false; tsem_init(&pVnode->syncSem, 0, 0); @@ -200,6 +200,7 @@ void vnodeClose(SVnode *pVnode) { tsem_destroy(&pVnode->syncSem); taosThreadCondDestroy(&pVnode->poolNotEmpty); taosThreadMutexDestroy(&pVnode->mutex); + taosThreadMutexDestroy(&pVnode->lock); taosMemoryFree(pVnode); } } diff --git a/source/dnode/vnode/src/vnd/vnodeSync.c b/source/dnode/vnode/src/vnd/vnodeSync.c index 50d32f5f5e..fdd930ebd8 100644 --- a/source/dnode/vnode/src/vnd/vnodeSync.c +++ b/source/dnode/vnode/src/vnd/vnodeSync.c @@ -28,14 +28,14 @@ static inline bool vnodeIsMsgWeak(tmsg_t type) { return false; } static inline void vnodeWaitBlockMsg(SVnode *pVnode, const SRpcMsg *pMsg) { if (vnodeIsMsgBlock(pMsg->msgType)) { const STraceId *trace = &pMsg->info.traceId; - taosWLockLatch(&pVnode->lock); + taosThreadMutexLock(&pVnode->lock); if (!pVnode->blocked) { vGTrace("vgId:%d, msg:%p wait block, type:%s", pVnode->config.vgId, pMsg, TMSG_INFO(pMsg->msgType)); pVnode->blocked = true; - taosWUnLockLatch(&pVnode->lock); + taosThreadMutexUnlock(&pVnode->lock); tsem_wait(&pVnode->syncSem); } else { - taosWUnLockLatch(&pVnode->lock); + taosThreadMutexUnlock(&pVnode->lock); } } } @@ -43,13 +43,13 @@ static inline void vnodeWaitBlockMsg(SVnode *pVnode, const SRpcMsg *pMsg) { static inline void vnodePostBlockMsg(SVnode *pVnode, const SRpcMsg *pMsg) { if (vnodeIsMsgBlock(pMsg->msgType)) { const STraceId *trace = &pMsg->info.traceId; - taosWLockLatch(&pVnode->lock); + taosThreadMutexLock(&pVnode->lock); if (pVnode->blocked) { vGTrace("vgId:%d, msg:%p post block, type:%s", pVnode->config.vgId, pMsg, TMSG_INFO(pMsg->msgType)); pVnode->blocked = false; tsem_post(&pVnode->syncSem); } - taosWUnLockLatch(&pVnode->lock); + taosThreadMutexUnlock(&pVnode->lock); } } @@ -685,12 +685,12 @@ static void vnodeBecomeFollower(struct SSyncFSM *pFsm) { vDebug("vgId:%d, become follower", pVnode->config.vgId); // clear old leader resource - taosWLockLatch(&pVnode->lock); + taosThreadMutexLock(&pVnode->lock); if (pVnode->blocked) { pVnode->blocked = false; tsem_post(&pVnode->syncSem); } - taosWUnLockLatch(&pVnode->lock); + taosThreadMutexUnlock(&pVnode->lock); } static void vnodeBecomeLeader(struct SSyncFSM *pFsm) {