diff --git a/include/util/taoserror.h b/include/util/taoserror.h index b1eb17a00ff4adb450215c33e66199a5ef784b89..93efbdb98918cf00f7e55403258926c4b7187646 100644 --- a/include/util/taoserror.h +++ b/include/util/taoserror.h @@ -286,14 +286,15 @@ int32_t* taosGetErrno(); #define TSDB_CODE_MND_INVALID_STREAM_OPTION TAOS_DEF_ERROR_CODE(0, 0x03F2) // mnode-sma -#define TSDB_CODE_MND_SMA_ALREADY_EXIST TAOS_DEF_ERROR_CODE(0, 0x0400) -#define TSDB_CODE_MND_SMA_NOT_EXIST TAOS_DEF_ERROR_CODE(0, 0x0401) -#define TSDB_CODE_MND_INVALID_SMA_OPTION TAOS_DEF_ERROR_CODE(0, 0x0402) +#define TSDB_CODE_MND_SMA_ALREADY_EXIST TAOS_DEF_ERROR_CODE(0, 0x0480) +#define TSDB_CODE_MND_SMA_NOT_EXIST TAOS_DEF_ERROR_CODE(0, 0x0481) +#define TSDB_CODE_MND_INVALID_SMA_OPTION TAOS_DEF_ERROR_CODE(0, 0x0482) // dnode -#define TSDB_CODE_NODE_OFFLINE TAOS_DEF_ERROR_CODE(0, 0x04A1) -#define TSDB_CODE_NODE_ALREADY_DEPLOYED TAOS_DEF_ERROR_CODE(0, 0x04A3) -#define TSDB_CODE_NODE_NOT_DEPLOYED TAOS_DEF_ERROR_CODE(0, 0x04A4) +#define TSDB_CODE_NODE_REDIRECT TAOS_DEF_ERROR_CODE(0, 0x0400) +#define TSDB_CODE_NODE_OFFLINE TAOS_DEF_ERROR_CODE(0, 0x0401) +#define TSDB_CODE_NODE_ALREADY_DEPLOYED TAOS_DEF_ERROR_CODE(0, 0x0403) +#define TSDB_CODE_NODE_NOT_DEPLOYED TAOS_DEF_ERROR_CODE(0, 0x0404) // vnode #define TSDB_CODE_VND_ACTION_IN_PROGRESS TAOS_DEF_ERROR_CODE(0, 0x0500) diff --git a/source/dnode/mgmt/main/dndInt.c b/source/dnode/mgmt/main/dndInt.c index d406b0c02e99d438d20539f0125ac589a23c77ed..7b207fd49622a7fda45d74788a2e7f2eb4000569 100644 --- a/source/dnode/mgmt/main/dndInt.c +++ b/source/dnode/mgmt/main/dndInt.c @@ -158,7 +158,7 @@ SMgmtWrapper *dndAcquireWrapper(SDnode *pDnode, EDndType ntype) { int32_t refCount = atomic_add_fetch_32(&pWrapper->refCount, 1); dTrace("node:%s, is acquired, refCount:%d", pWrapper->name, refCount); } else { - terrno = TSDB_CODE_NODE_NOT_DEPLOYED; + terrno = TSDB_CODE_NODE_REDIRECT; pRetWrapper = NULL; } taosRUnLockLatch(&pWrapper->latch); @@ -174,7 +174,7 @@ int32_t dndMarkWrapper(SMgmtWrapper *pWrapper) { int32_t refCount = atomic_add_fetch_32(&pWrapper->refCount, 1); dTrace("node:%s, is marked, refCount:%d", pWrapper->name, refCount); } else { - terrno = TSDB_CODE_NODE_NOT_DEPLOYED; + terrno = TSDB_CODE_NODE_REDIRECT; code = -1; } taosRUnLockLatch(&pWrapper->latch); diff --git a/source/dnode/mgmt/main/dndTransport.c b/source/dnode/mgmt/main/dndTransport.c index 5e4f403b1e2f9a7d516f4d8dd99c3f49fae0f1ed..75722c8f9c1424df5b41f294414096f5c6910b7d 100644 --- a/source/dnode/mgmt/main/dndTransport.c +++ b/source/dnode/mgmt/main/dndTransport.c @@ -85,6 +85,7 @@ _OVER: } else { dError("msg:%p, failed to process since 0x%04x:%s", pMsg, code & 0XFFFF, terrstr()); if (pRpc->msgType & 1U) { + if (terrno != 0) code = terrno; SRpcMsg rsp = {.handle = pRpc->handle, .ahandle = pRpc->ahandle, .code = terrno}; tmsgSendRsp(&rsp); } @@ -347,14 +348,12 @@ static int32_t dndSendRpcReq(STransMgmt *pMgmt, const SEpSet *pEpSet, SRpcMsg *p } static void dndSendRpcRsp(SMgmtWrapper *pWrapper, const SRpcMsg *pRsp) { - if (pRsp->code == TSDB_CODE_APP_NOT_READY) { - if (pWrapper->ntype == MNODE) { - dmSendRedirectRsp(pWrapper->pMgmt, pRsp); - return; - } + if (pRsp->code == TSDB_CODE_APP_NOT_READY || pRsp->code == TSDB_CODE_NODE_REDIRECT || + pRsp->code == TSDB_CODE_NODE_OFFLINE) { + dmSendRedirectRsp(pWrapper->pMgmt, pRsp); + } else { + rpcSendResponse(pRsp); } - - rpcSendResponse(pRsp); } static int32_t dndSendReq(SMgmtWrapper *pWrapper, const SEpSet *pEpSet, SRpcMsg *pReq) { diff --git a/source/dnode/mgmt/test/bnode/CMakeLists.txt b/source/dnode/mgmt/test/bnode/CMakeLists.txt index 22edc9b257f961e84debcfef3eebb21cfe3d07aa..0c0006488d22a5d3ce88adbdfd840e824d99bde7 100644 --- a/source/dnode/mgmt/test/bnode/CMakeLists.txt +++ b/source/dnode/mgmt/test/bnode/CMakeLists.txt @@ -1,11 +1,11 @@ aux_source_directory(. BQTEST_SRC) -add_executable(dnode_test_bnode ${BQTEST_SRC}) +add_executable(dbnodeTest ${BQTEST_SRC}) target_link_libraries( - dnode_test_bnode + dbnodeTest PUBLIC sut ) add_test( - NAME dnode_test_bnode - COMMAND dnode_test_bnode + NAME dbnodeTest + COMMAND dbnodeTest ) diff --git a/source/dnode/mgmt/test/mnode/CMakeLists.txt b/source/dnode/mgmt/test/mnode/CMakeLists.txt index be29b93b02d264b3e97e97aa8df8dc5b1a3fecc6..323748724285ae0e57b9783789aa2cb08837e0c7 100644 --- a/source/dnode/mgmt/test/mnode/CMakeLists.txt +++ b/source/dnode/mgmt/test/mnode/CMakeLists.txt @@ -1,11 +1,11 @@ aux_source_directory(. DMTEST_SRC) -add_executable(dnode_test_mnode ${DMTEST_SRC}) +add_executable(dmnodeTest ${DMTEST_SRC}) target_link_libraries( - dnode_test_mnode + dmnodeTest PUBLIC sut ) add_test( - NAME dnode_test_mnode - COMMAND dnode_test_mnode + NAME dmnodeTest + COMMAND dmnodeTest ) diff --git a/source/dnode/mgmt/test/mnode/dmnode.cpp b/source/dnode/mgmt/test/mnode/dmnode.cpp index e92e51fa39c33bd8808e0f70c2dd5a32bc01ed83..348eb50c8fb4f4718029e267c20487628064306c 100644 --- a/source/dnode/mgmt/test/mnode/dmnode.cpp +++ b/source/dnode/mgmt/test/mnode/dmnode.cpp @@ -188,7 +188,7 @@ TEST_F(DndTestMnode, 03_Drop_Mnode) { SRpcMsg* pRsp = test.SendReq(TDMT_DND_ALTER_MNODE, pReq, contLen); ASSERT_NE(pRsp, nullptr); - ASSERT_EQ(pRsp->code, TSDB_CODE_NODE_NOT_DEPLOYED); + ASSERT_EQ(pRsp->code, TSDB_CODE_RPC_REDIRECT); } { diff --git a/source/dnode/mgmt/test/qnode/CMakeLists.txt b/source/dnode/mgmt/test/qnode/CMakeLists.txt index 2536001231c82537d64735ce14ada91f45501d07..d118a8723a7926dd0d9088e45c5fed17494d988e 100644 --- a/source/dnode/mgmt/test/qnode/CMakeLists.txt +++ b/source/dnode/mgmt/test/qnode/CMakeLists.txt @@ -1,11 +1,11 @@ aux_source_directory(. DQTEST_SRC) -add_executable(dnode_test_qnode ${DQTEST_SRC}) +add_executable(dqnodeTest ${DQTEST_SRC}) target_link_libraries( - dnode_test_qnode + dqnodeTest PUBLIC sut ) add_test( - NAME dnode_test_qnode - COMMAND dnode_test_qnode + NAME dqnodeTest + COMMAND dqnodeTest ) diff --git a/source/dnode/mgmt/test/snode/CMakeLists.txt b/source/dnode/mgmt/test/snode/CMakeLists.txt index 9c163d1999a209b21fc138795b84be0fd8b42c09..eaabc5647bb048e5a716f9dc91faf772e6351ca0 100644 --- a/source/dnode/mgmt/test/snode/CMakeLists.txt +++ b/source/dnode/mgmt/test/snode/CMakeLists.txt @@ -1,11 +1,11 @@ aux_source_directory(. SQTEST_SRC) -add_executable(dnode_test_snode ${SQTEST_SRC}) +add_executable(dsnodeTest ${SQTEST_SRC}) target_link_libraries( - dnode_test_snode + dsnodeTest PUBLIC sut ) add_test( - NAME dnode_test_snode - COMMAND dnode_test_snode + NAME dsnodeTest + COMMAND dsnodeTest ) diff --git a/source/dnode/mgmt/test/vnode/CMakeLists.txt b/source/dnode/mgmt/test/vnode/CMakeLists.txt index 6fb8bb4ba4a599ecad81314c86ff061442a768d3..e2cd868513c9e0dd0fe265e61f62ba9da45ab2c6 100644 --- a/source/dnode/mgmt/test/vnode/CMakeLists.txt +++ b/source/dnode/mgmt/test/vnode/CMakeLists.txt @@ -1,11 +1,11 @@ aux_source_directory(. VNODE_SRC) -add_executable(dnode_test_vnode ${VNODE_SRC}) +add_executable(dvnodeTest ${VNODE_SRC}) target_link_libraries( - dnode_test_vnode + dvnodeTest PUBLIC sut ) add_test( - NAME dnode_test_vnode - COMMAND dnode_test_vnode + NAME dvnodeTest + COMMAND dvnodeTest ) diff --git a/source/util/src/terror.c b/source/util/src/terror.c index a14ba94515af340c3d711298030bc2fee8614031..ded42365b6e6d188b23cb13751ce3eca68798ccd 100644 --- a/source/util/src/terror.c +++ b/source/util/src/terror.c @@ -283,6 +283,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_MND_SMA_NOT_EXIST, "SMA does not exist") TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_SMA_OPTION, "Invalid sma option") // dnode +TAOS_DEFINE_ERROR(TSDB_CODE_NODE_REDIRECT, "Node need redirect") TAOS_DEFINE_ERROR(TSDB_CODE_NODE_OFFLINE, "Node is offline") TAOS_DEFINE_ERROR(TSDB_CODE_NODE_ALREADY_DEPLOYED, "Node already deployed") TAOS_DEFINE_ERROR(TSDB_CODE_NODE_NOT_DEPLOYED, "Node not deployed")