diff --git a/src/os/linux/inc/os.h b/src/os/linux/inc/os.h index 82cb439a9462b1f324f6f98876d009e89490d860..e9f1737cd4e9148ca948ee32c91ef9164cc26ba5 100644 --- a/src/os/linux/inc/os.h +++ b/src/os/linux/inc/os.h @@ -224,6 +224,7 @@ int64_t str2int64(char *str); void taosSetCoreDump(); +void taosBlockSIGPIPE(); #define BUILDIN_CLZL(val) __builtin_clzl(val) #define BUILDIN_CLZ(val) __builtin_clz(val) diff --git a/src/os/linux/src/tlinux.c b/src/os/linux/src/tlinux.c index 93ea0144090ada8de7da67beaf54e50b7b65e0ec..83782f49440218846a7aac26bfb9f00d6bac4c5b 100644 --- a/src/os/linux/src/tlinux.c +++ b/src/os/linux/src/tlinux.c @@ -341,3 +341,13 @@ bool taosSkipSocketCheck() { return false; } + +void taosBlockSIGPIPE() { + sigset_t signal_mask; + sigemptyset(&signal_mask); + sigaddset(&signal_mask, SIGPIPE); + int rc = pthread_sigmask(SIG_BLOCK, &signal_mask, NULL); + if (rc != 0) { + pError("failed to block SIGPIPE"); + } +} diff --git a/src/system/detail/src/dnodeMgmt.c b/src/system/detail/src/dnodeMgmt.c index 2d184afd413c17cc471fea8fad504ab62721bad7..c96be412815477947ba2ae9f2fe60769cfd5c7a3 100644 --- a/src/system/detail/src/dnodeMgmt.c +++ b/src/system/detail/src/dnodeMgmt.c @@ -350,8 +350,9 @@ int vnodeProcessVPeerCfg(char *msg, int msgLen, SMgmtObj *pMgmtObj) { pCfg->rowsInFileBlock = htonl(pCfg->rowsInFileBlock); if (pCfg->replications > 0) { - dPrint("vid:%d, vpeer cfg received, replica:%d session:%d, vnodeList replica:%d session:%d", - vnode, pCfg->replications, pCfg->maxSessions, vnodeList[vnode].cfg.replications, vnodeList[vnode].cfg.maxSessions); + dPrint("vid:%d, vpeer cfg received, replica:%d session:%d, vnodeList replica:%d session:%d, acct:%s db:%s", + vnode, pCfg->replications, pCfg->maxSessions, vnodeList[vnode].cfg.replications, vnodeList[vnode].cfg.maxSessions, + pCfg->acct, pCfg->db); for (i = 0; i < pCfg->replications; ++i) { pMsg->vpeerDesc[i].vnode = htonl(pMsg->vpeerDesc[i].vnode); pMsg->vpeerDesc[i].ip = htonl(pMsg->vpeerDesc[i].ip); diff --git a/src/system/detail/src/mgmtDnodeInt.c b/src/system/detail/src/mgmtDnodeInt.c index a58f48ead10a2d726b1289b76e20a7c72ae49540..6b6571b06c713bd9b6c41dab690652cf1c6fd639 100644 --- a/src/system/detail/src/mgmtDnodeInt.c +++ b/src/system/detail/src/mgmtDnodeInt.c @@ -142,7 +142,7 @@ int mgmtProcessVPeersRsp(char *msg, int msgLen, SDnodeObj *pObj) { SDbObj *pDb = mgmtGetDb(pRsp->more); if (!pDb) { - mError("dnode:%s, db not find, code:%d", taosIpStr(pObj->privateIp), pRsp->code); + mError("dnode:%s, db:%s not find, code:%d", taosIpStr(pObj->privateIp), pRsp->more, pRsp->code); return 0; } diff --git a/src/system/detail/src/vnodeMeter.c b/src/system/detail/src/vnodeMeter.c index 4195138a29e0694d84871c48f79309ecf3ba669d..f5619d72b8f8833ae927b0d59099242ad87771e1 100644 --- a/src/system/detail/src/vnodeMeter.c +++ b/src/system/detail/src/vnodeMeter.c @@ -24,6 +24,7 @@ #include "vnodeMgmt.h" #include "vnodeShell.h" #include "vnodeUtil.h" +#include "tstatus.h" #pragma GCC diagnostic ignored "-Wpointer-sign" @@ -717,7 +718,8 @@ void vnodeUpdateMeter(void *param, void *tmrId) { SVnodeObj* pVnode = &vnodeList[pNew->vnode]; if (pVnode->meterList == NULL) { - dTrace("vid:%d sid:%d id:%s, vnode is deleted, abort update schema", pNew->vnode, pNew->sid, pNew->meterId); + dTrace("vid:%d sid:%d id:%s, vnode is deleted, status:%s, abort update schema", + pNew->vnode, pNew->sid, pNew->meterId, taosGetVnodeStatusStr(vnodeList[pNew->vnode].vnodeStatus)); free(pNew->schema); free(pNew); return; diff --git a/src/system/detail/src/vnodeShell.c b/src/system/detail/src/vnodeShell.c index c0d149b0d1659583a4a977cce8a324349fd68e79..91e6c9527b2bf0ea8f33eecd64121b9a5472ced0 100644 --- a/src/system/detail/src/vnodeShell.c +++ b/src/system/detail/src/vnodeShell.c @@ -184,13 +184,15 @@ int vnodeOpenShellVnode(int vnode) { static void vnodeDelayedFreeResource(void *param, void *tmrId) { int32_t vnode = *(int32_t*) param; - dTrace("vid:%d, start to free resources", vnode); + dTrace("vid:%d, start to free resources for 500ms arrived", vnode); taosCloseRpcChann(pShellServer, vnode); // close connection tfree(shellList[vnode]); //free SShellObj tfree(param); memset(vnodeList + vnode, 0, sizeof(SVnodeObj)); + dTrace("vid:%d, status set to %s", vnode, taosGetVnodeStatusStr(vnodeList[vnode].vnodeStatus)); + vnodeCalcOpenVnodes(); } diff --git a/src/system/detail/src/vnodeStore.c b/src/system/detail/src/vnodeStore.c index ea64181577a0f1e3550304cf63b5c309a0518705..f2617f09b6c3da28054872809fd5ae053e2c436a 100644 --- a/src/system/detail/src/vnodeStore.c +++ b/src/system/detail/src/vnodeStore.c @@ -250,7 +250,7 @@ static void vnodeRemoveDataFiles(int vnode) { sprintf(vnodeDir, "%s/vnode%d", tsDirectory, vnode); rmdir(vnodeDir); - dPrint("vid:%d, vnode is removed!", vnode); + dPrint("vid:%d, vnode is removed, status:%s", vnode, taosGetVnodeStatusStr(vnodeList[vnode].vnodeStatus)); } int vnodeRemoveVnode(int vnode) { @@ -261,7 +261,7 @@ int vnodeRemoveVnode(int vnode) { if (pVnode->vnodeStatus == TSDB_VN_STATUS_CREATING || pVnode->vnodeStatus == TSDB_VN_STATUS_OFFLINE || pVnode->vnodeStatus == TSDB_VN_STATUS_DELETING) { - dError("vid:%d, status:%s, cannot enter close/delete operation", vnode, taosGetVnodeStatusStr(pVnode->vnodeStatus)); + dTrace("vid:%d, status:%s, cannot enter close/delete operation", vnode, taosGetVnodeStatusStr(pVnode->vnodeStatus)); return TSDB_CODE_ACTION_IN_PROGRESS; } else { int32_t ret = vnodeCloseVnode(vnode); @@ -269,6 +269,7 @@ int vnodeRemoveVnode(int vnode) { return ret; } + dTrace("vid:%d, status:%s, do delete operation", vnode, taosGetVnodeStatusStr(pVnode->vnodeStatus)); vnodeRemoveDataFiles(vnode); }