remove a potential race condition
This commit is contained in:
parent
a5dabf7e99
commit
8c22eed1bb
|
@ -188,10 +188,19 @@ static void taosCleanUpTcpFdObj(STcpFd *pFdObj) {
|
||||||
if (pFdObj == NULL) return;
|
if (pFdObj == NULL) return;
|
||||||
if (pFdObj->signature != pFdObj) return;
|
if (pFdObj->signature != pFdObj) return;
|
||||||
|
|
||||||
|
pFdObj->signature = NULL;
|
||||||
pTcp = pFdObj->pTcp;
|
pTcp = pFdObj->pTcp;
|
||||||
if (pTcp == NULL) {
|
|
||||||
tError("double free TcpFdObj!!!!");
|
if (pFdObj->thandle) {
|
||||||
return;
|
recvInfo.msg = NULL;
|
||||||
|
recvInfo.msgLen = 0;
|
||||||
|
recvInfo.ip = 0;
|
||||||
|
recvInfo.port = 0;
|
||||||
|
recvInfo.shandle = pTcp->shandle;
|
||||||
|
recvInfo.thandle = pFdObj->thandle;;
|
||||||
|
recvInfo.chandle = NULL;
|
||||||
|
recvInfo.connType = RPC_CONN_TCP;
|
||||||
|
(*(pTcp->processData))(&recvInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
epoll_ctl(pTcp->pollFd, EPOLL_CTL_DEL, pFdObj->fd, NULL);
|
epoll_ctl(pTcp->pollFd, EPOLL_CTL_DEL, pFdObj->fd, NULL);
|
||||||
|
@ -216,19 +225,8 @@ static void taosCleanUpTcpFdObj(STcpFd *pFdObj) {
|
||||||
|
|
||||||
pthread_mutex_unlock(&pTcp->mutex);
|
pthread_mutex_unlock(&pTcp->mutex);
|
||||||
|
|
||||||
recvInfo.msg = NULL;
|
|
||||||
recvInfo.msgLen = 0;
|
|
||||||
recvInfo.ip = 0;
|
|
||||||
recvInfo.port = 0;
|
|
||||||
recvInfo.shandle = pTcp->shandle;
|
|
||||||
recvInfo.thandle = pFdObj->thandle;;
|
|
||||||
recvInfo.chandle = NULL;
|
|
||||||
recvInfo.connType = RPC_CONN_TCP;
|
|
||||||
|
|
||||||
if (pFdObj->thandle) (*(pTcp->processData))(&recvInfo);
|
|
||||||
tTrace("%s TCP is cleaned up, FD:%p numOfFds:%d", pTcp->label, pFdObj, pTcp->numOfFds);
|
tTrace("%s TCP is cleaned up, FD:%p numOfFds:%d", pTcp->label, pFdObj, pTcp->numOfFds);
|
||||||
|
|
||||||
memset(pFdObj, 0, sizeof(STcpFd));
|
|
||||||
tfree(pFdObj);
|
tfree(pFdObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -204,6 +204,8 @@ int main(int argc, char *argv[]) {
|
||||||
tPrint("it takes %.3f mseconds to send %d requests to server", usedTime, numOfReqs*appThreads);
|
tPrint("it takes %.3f mseconds to send %d requests to server", usedTime, numOfReqs*appThreads);
|
||||||
tPrint("Performance: %.3f requests per second, msgSize:%d bytes", 1000.0*numOfReqs*appThreads/usedTime, msgSize);
|
tPrint("Performance: %.3f requests per second, msgSize:%d bytes", 1000.0*numOfReqs*appThreads/usedTime, msgSize);
|
||||||
|
|
||||||
|
getchar();
|
||||||
|
|
||||||
taosCloseLogger();
|
taosCloseLogger();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue