diff --git a/source/dnode/mgmt/mgmt_vnode/src/vmHandle.c b/source/dnode/mgmt/mgmt_vnode/src/vmHandle.c index 179fe17cc0511d6c4b00cec253be52c54b676ea8..05b649e16e29f7165203c1a58b92fe7879643f49 100644 --- a/source/dnode/mgmt/mgmt_vnode/src/vmHandle.c +++ b/source/dnode/mgmt/mgmt_vnode/src/vmHandle.c @@ -245,22 +245,6 @@ int32_t vmProcessCreateVnodeReq(SVnodeMgmt *pMgmt, SRpcMsg *pMsg) { vmGenerateVnodeCfg(&req, &vnodeCfg); - snprintf(path, TSDB_FILENAME_LEN, "vnode%svnode%d", TD_DIRSEP, vnodeCfg.vgId); - - if (pMgmt->pTfs) { - if (tfsDirExistAt(pMgmt->pTfs, path, (SDiskID){0})) { - terrno = TSDB_CODE_VND_DIR_ALREADY_EXIST; - dError("vgId:%d, failed to restore vnode since %s", req.vgId, terrstr()); - return -1; - } - } else { - if (taosDirExist(path)) { - terrno = TSDB_CODE_VND_DIR_ALREADY_EXIST; - dError("vgId:%d, failed to restore vnode since %s", req.vgId, terrstr()); - return -1; - } - } - if (vmTsmaAdjustDays(&vnodeCfg, &req) < 0) { dError("vgId:%d, failed to adjust tsma days since %s", req.vgId, terrstr()); code = terrno; @@ -271,7 +255,7 @@ int32_t vmProcessCreateVnodeReq(SVnodeMgmt *pMgmt, SRpcMsg *pMsg) { SVnodeObj *pVnode = vmAcquireVnode(pMgmt, req.vgId); if (pVnode != NULL) { - dInfo("vgId:%d, already exist", req.vgId); + dError("vgId:%d, already exist", req.vgId); tFreeSCreateVnodeReq(&req); vmReleaseVnode(pMgmt, pVnode); terrno = TSDB_CODE_VND_ALREADY_EXIST; @@ -279,7 +263,23 @@ int32_t vmProcessCreateVnodeReq(SVnodeMgmt *pMgmt, SRpcMsg *pMsg) { return 0; } - if (vnodeCreate(path, &vnodeCfg, pMgmt->pTfs) < 0) { + snprintf(path, TSDB_FILENAME_LEN, "vnode%svnode%d", TD_DIRSEP, vnodeCfg.vgId); + + if (pMgmt->pTfs) { + if (tfsDirExistAt(pMgmt->pTfs, path, (SDiskID){0})) { + terrno = TSDB_CODE_VND_DIR_ALREADY_EXIST; + dError("vgId:%d, failed to restore vnode since %s", req.vgId, terrstr()); + return -1; + } + } else { + if (taosDirExist(path)) { + terrno = TSDB_CODE_VND_DIR_ALREADY_EXIST; + dError("vgId:%d, failed to restore vnode since %s", req.vgId, terrstr()); + return -1; + } + } + +if (vnodeCreate(path, &vnodeCfg, pMgmt->pTfs) < 0) { tFreeSCreateVnodeReq(&req); dError("vgId:%d, failed to create vnode since %s", req.vgId, terrstr()); code = terrno; @@ -359,6 +359,7 @@ int32_t vmProcessAlterVnodeTypeReq(SVnodeMgmt *pMgmt, SRpcMsg *pMsg) { ESyncRole role = vnodeGetRole(pVnode->pImpl); dInfo("vgId:%d, checking node role:%d", req.vgId, role); if(role == TAOS_SYNC_ROLE_VOTER){ + dError("vgId:%d, failed to alter vnode type since node already is role:%d", req.vgId, role); terrno = TSDB_CODE_VND_ALREADY_IS_VOTER; vmReleaseVnode(pMgmt, pVnode); return -1; diff --git a/source/dnode/mgmt/node_mgmt/src/dmEnv.c b/source/dnode/mgmt/node_mgmt/src/dmEnv.c index 3459af1a3a99693f6667728ffe4ab6f2b3923c91..56bff0c760b042c8dd1bf389ff93ce371df6a9df 100644 --- a/source/dnode/mgmt/node_mgmt/src/dmEnv.c +++ b/source/dnode/mgmt/node_mgmt/src/dmEnv.c @@ -218,6 +218,7 @@ static int32_t dmProcessAlterNodeTypeReq(EDndNodeType ntype, SRpcMsg *pMsg) { ESyncRole role = (*pWrapper->func.nodeRoleFp)(pWrapper->pMgmt); dInfo("node:%s, checking node role:%d", pWrapper->name, role); if(role == TAOS_SYNC_ROLE_VOTER){ + dError("node:%s, failed to alter node type since node already is role:%d", pWrapper->name, role); terrno = TSDB_CODE_MNODE_ALREADY_IS_VOTER; return -1; } diff --git a/source/dnode/mnode/impl/src/mndDnode.c b/source/dnode/mnode/impl/src/mndDnode.c index da90cf06ede12c6257d5b328376ca21d96c993f4..71c9aaa285bcb8928bc782a7c9129a7c21020df0 100644 --- a/source/dnode/mnode/impl/src/mndDnode.c +++ b/source/dnode/mnode/impl/src/mndDnode.c @@ -625,7 +625,6 @@ static int32_t mndRestoreDnode(SMnode *pMnode, SRpcMsg *pReq, SDnodeObj *pDnode, newMnodeObj.role = TAOS_SYNC_ROLE_LEARNER; newMnodeObj.lastIndex = pMnode->applied; if (mndSetRestoreCreateMnodeRedoActions(pMnode, pTrans, pDnode, &newMnodeObj) != 0) goto _OVER; - if (mndSetRestoreCreateMnodeRedoLogs(pMnode, pTrans, &newMnodeObj) != 0) goto _OVER; SMnodeObj mnodeLeaderObj = {0}; mnodeLeaderObj.id = pDnode->id; @@ -634,7 +633,6 @@ static int32_t mndRestoreDnode(SMnode *pMnode, SRpcMsg *pReq, SDnodeObj *pDnode, mnodeLeaderObj.role = TAOS_SYNC_ROLE_VOTER; mnodeLeaderObj.lastIndex = pMnode->applied + 1; if (mndSetRestoreAlterMnodeTypeRedoActions(pMnode, pTrans, pDnode, &mnodeLeaderObj) != 0) goto _OVER; - if (mndSetRestoreCreateMnodeRedoLogs(pMnode, pTrans, &mnodeLeaderObj) != 0) goto _OVER; if (mndSetCreateMnodeCommitLogs(pMnode, pTrans, &mnodeLeaderObj) != 0) goto _OVER; @@ -861,51 +859,7 @@ int32_t mndProcessRestoreDnodeReq(SRpcMsg *pReq){ #ifndef TD_ENTERPRISE int32_t mndProcessRestoreDnodeReqImpl(SRpcMsg *pReq){ - SMnode *pMnode = pReq->info.node; - int32_t code = -1; - SDnodeObj *pDnode = NULL; - SMnodeObj *pMObj = NULL; - SQnodeObj *pQObj = NULL; - SSnodeObj *pSObj = NULL; - SRestoreDnodeReq restoreReq = {0}; - - if (tDeserializeSRestoreDnodeReq(pReq->pCont, pReq->contLen, &restoreReq) != 0) { - terrno = TSDB_CODE_INVALID_MSG; - goto _OVER; - } - - //mInfo("dnode:%d, start to restore, ep:%s:%d", restoreReq.dnodeId, restoreReq.fqdn, restoreReq.port); - mInfo("dnode:%d, start to restore", restoreReq.dnodeId); - if (mndCheckOperPrivilege(pMnode, pReq->info.conn.user, MND_OPER_DROP_MNODE) != 0) { - goto _OVER; - } - - pDnode = mndAcquireDnode(pMnode, restoreReq.dnodeId); - /*if (pDnode == NULL) { - int32_t err = terrno; - char ep[TSDB_EP_LEN + 1] = {0}; - snprintf(ep, sizeof(ep), restoreReq.fqdn, restoreReq.port); - pDnode = mndAcquireDnodeByEp(pMnode, ep); - if (pDnode == NULL) { - terrno = err; - goto _OVER; - } - } - */ - if (pDnode == NULL) { - goto _OVER; - } - - code = mndRestoreDnode(pMnode, pReq, pDnode, restoreReq.restoreType); - if (code == 0) code = TSDB_CODE_ACTION_IN_PROGRESS; - -_OVER: - if (code != 0 && code != TSDB_CODE_ACTION_IN_PROGRESS) { - mError("dnode:%d, failed to restore since %s", restoreReq.dnodeId, terrstr()); - } - - mndReleaseDnode(pMnode, pDnode); - return code; + return 0; } #endif diff --git a/source/util/src/terror.c b/source/util/src/terror.c index f7a7ae30f4c1036749da9c5a6d07826ee4391b85..5d3583c0e958f1ea23df0d488d273e811c2b0e31 100644 --- a/source/util/src/terror.c +++ b/source/util/src/terror.c @@ -335,6 +335,8 @@ TAOS_DEFINE_ERROR(TSDB_CODE_VND_NO_AVAIL_BUFPOOL, "No availabe buffer po TAOS_DEFINE_ERROR(TSDB_CODE_VND_STOPPED, "Vnode stopped") TAOS_DEFINE_ERROR(TSDB_CODE_VND_DUP_REQUEST, "Duplicate write request") TAOS_DEFINE_ERROR(TSDB_CODE_VND_QUERY_BUSY, "Query busy") +TAOS_DEFINE_ERROR(TSDB_CODE_VND_NOT_CATCH_UP, "Vnode didn't catch up its leader") +TAOS_DEFINE_ERROR(TSDB_CODE_VND_ALREADY_IS_VOTER, "Vnode already is a voter") TAOS_DEFINE_ERROR(TSDB_CODE_VND_DIR_ALREADY_EXIST, "Vnode directory already exist") // tsdb