提交 f5c12f1b 编写于 作者: C Cary Xu

[TS-787]<enhance>:release lock during write socket

上级 7f979c6a
...@@ -33,14 +33,14 @@ extern "C" { ...@@ -33,14 +33,14 @@ extern "C" {
#define taosReadSocket(fd, buf, len) read(fd, buf, len) #define taosReadSocket(fd, buf, len) read(fd, buf, len)
#define taosWriteSocket(fd, buf, len) write(fd, buf, len) #define taosWriteSocket(fd, buf, len) write(fd, buf, len)
#define taosCloseSocketNoCheck(x) close(x) #define taosCloseSocketNoCheck(x) close(x)
#define taosCloseSocket(x) \ #define taosCloseSocket(x) \
{ \ { \
if (FD_VALID(x)) { \ if (FD_VALID(x)) { \
close(x); \ close(x); \
x = FD_INITIALIZER; \ x = FD_INITIALIZER; \
} \ } \
} }
#endif #endif
#if defined(_TD_WINDOWS_64) || defined(_TD_WINDOWS_32) #if defined(_TD_WINDOWS_64) || defined(_TD_WINDOWS_32)
#define TAOS_EPOLL_WAIT_TIME 100 #define TAOS_EPOLL_WAIT_TIME 100
......
...@@ -1502,7 +1502,11 @@ static int32_t syncForwardToPeerImpl(SSyncNode *pNode, void *data, void *mhandle ...@@ -1502,7 +1502,11 @@ static int32_t syncForwardToPeerImpl(SSyncNode *pNode, void *data, void *mhandle
} }
} }
int32_t retLen = taosWriteMsg(pPeer->peerFd, pSyncHead, fwdLen); SOCKET peerFd = pPeer->peerFd;
pthread_mutex_unlock(&pNode->mutex);
int32_t retLen = taosWriteMsg(peerFd, pSyncHead, fwdLen);
pthread_mutex_lock(&pNode->mutex);
if (retLen == fwdLen) { if (retLen == fwdLen) {
sTrace("%s, forward is sent, role:%s sstatus:%s hver:%" PRIu64 " contLen:%d", pPeer->id, syncRole[pPeer->role], sTrace("%s, forward is sent, role:%s sstatus:%s hver:%" PRIu64 " contLen:%d", pPeer->id, syncRole[pPeer->role],
syncStatus[pPeer->sstatus], pWalHead->version, pWalHead->len); syncStatus[pPeer->sstatus], pWalHead->version, pWalHead->len);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册