Merge pull request #11360 from taosdata/feature/node

fix[cluster]: redirect msg when node not deployed
This commit is contained in:
Shengliang Guan 2022-04-10 17:55:48 +08:00 committed by GitHub
commit 4188f3fa9c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 37 additions and 36 deletions

View File

@ -286,14 +286,15 @@ int32_t* taosGetErrno();
#define TSDB_CODE_MND_INVALID_STREAM_OPTION TAOS_DEF_ERROR_CODE(0, 0x03F2) #define TSDB_CODE_MND_INVALID_STREAM_OPTION TAOS_DEF_ERROR_CODE(0, 0x03F2)
// mnode-sma // mnode-sma
#define TSDB_CODE_MND_SMA_ALREADY_EXIST TAOS_DEF_ERROR_CODE(0, 0x0400) #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, 0x0401) #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, 0x0402) #define TSDB_CODE_MND_INVALID_SMA_OPTION TAOS_DEF_ERROR_CODE(0, 0x0482)
// dnode // dnode
#define TSDB_CODE_NODE_OFFLINE TAOS_DEF_ERROR_CODE(0, 0x04A1) #define TSDB_CODE_NODE_REDIRECT TAOS_DEF_ERROR_CODE(0, 0x0400)
#define TSDB_CODE_NODE_ALREADY_DEPLOYED TAOS_DEF_ERROR_CODE(0, 0x04A3) #define TSDB_CODE_NODE_OFFLINE TAOS_DEF_ERROR_CODE(0, 0x0401)
#define TSDB_CODE_NODE_NOT_DEPLOYED TAOS_DEF_ERROR_CODE(0, 0x04A4) #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 // vnode
#define TSDB_CODE_VND_ACTION_IN_PROGRESS TAOS_DEF_ERROR_CODE(0, 0x0500) #define TSDB_CODE_VND_ACTION_IN_PROGRESS TAOS_DEF_ERROR_CODE(0, 0x0500)

View File

@ -158,7 +158,7 @@ SMgmtWrapper *dndAcquireWrapper(SDnode *pDnode, EDndType ntype) {
int32_t refCount = atomic_add_fetch_32(&pWrapper->refCount, 1); int32_t refCount = atomic_add_fetch_32(&pWrapper->refCount, 1);
dTrace("node:%s, is acquired, refCount:%d", pWrapper->name, refCount); dTrace("node:%s, is acquired, refCount:%d", pWrapper->name, refCount);
} else { } else {
terrno = TSDB_CODE_NODE_NOT_DEPLOYED; terrno = TSDB_CODE_NODE_REDIRECT;
pRetWrapper = NULL; pRetWrapper = NULL;
} }
taosRUnLockLatch(&pWrapper->latch); taosRUnLockLatch(&pWrapper->latch);
@ -174,7 +174,7 @@ int32_t dndMarkWrapper(SMgmtWrapper *pWrapper) {
int32_t refCount = atomic_add_fetch_32(&pWrapper->refCount, 1); int32_t refCount = atomic_add_fetch_32(&pWrapper->refCount, 1);
dTrace("node:%s, is marked, refCount:%d", pWrapper->name, refCount); dTrace("node:%s, is marked, refCount:%d", pWrapper->name, refCount);
} else { } else {
terrno = TSDB_CODE_NODE_NOT_DEPLOYED; terrno = TSDB_CODE_NODE_REDIRECT;
code = -1; code = -1;
} }
taosRUnLockLatch(&pWrapper->latch); taosRUnLockLatch(&pWrapper->latch);

View File

@ -85,6 +85,7 @@ _OVER:
} else { } else {
dError("msg:%p, failed to process since 0x%04x:%s", pMsg, code & 0XFFFF, terrstr()); dError("msg:%p, failed to process since 0x%04x:%s", pMsg, code & 0XFFFF, terrstr());
if (pRpc->msgType & 1U) { if (pRpc->msgType & 1U) {
if (terrno != 0) code = terrno;
SRpcMsg rsp = {.handle = pRpc->handle, .ahandle = pRpc->ahandle, .code = terrno}; SRpcMsg rsp = {.handle = pRpc->handle, .ahandle = pRpc->ahandle, .code = terrno};
tmsgSendRsp(&rsp); 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) { static void dndSendRpcRsp(SMgmtWrapper *pWrapper, const SRpcMsg *pRsp) {
if (pRsp->code == TSDB_CODE_APP_NOT_READY) { if (pRsp->code == TSDB_CODE_APP_NOT_READY || pRsp->code == TSDB_CODE_NODE_REDIRECT ||
if (pWrapper->ntype == MNODE) { pRsp->code == TSDB_CODE_NODE_OFFLINE) {
dmSendRedirectRsp(pWrapper->pMgmt, pRsp); dmSendRedirectRsp(pWrapper->pMgmt, pRsp);
return; } else {
} rpcSendResponse(pRsp);
} }
rpcSendResponse(pRsp);
} }
static int32_t dndSendReq(SMgmtWrapper *pWrapper, const SEpSet *pEpSet, SRpcMsg *pReq) { static int32_t dndSendReq(SMgmtWrapper *pWrapper, const SEpSet *pEpSet, SRpcMsg *pReq) {

View File

@ -1,11 +1,11 @@
aux_source_directory(. BQTEST_SRC) aux_source_directory(. BQTEST_SRC)
add_executable(dnode_test_bnode ${BQTEST_SRC}) add_executable(dbnodeTest ${BQTEST_SRC})
target_link_libraries( target_link_libraries(
dnode_test_bnode dbnodeTest
PUBLIC sut PUBLIC sut
) )
add_test( add_test(
NAME dnode_test_bnode NAME dbnodeTest
COMMAND dnode_test_bnode COMMAND dbnodeTest
) )

View File

@ -1,11 +1,11 @@
aux_source_directory(. DMTEST_SRC) aux_source_directory(. DMTEST_SRC)
add_executable(dnode_test_mnode ${DMTEST_SRC}) add_executable(dmnodeTest ${DMTEST_SRC})
target_link_libraries( target_link_libraries(
dnode_test_mnode dmnodeTest
PUBLIC sut PUBLIC sut
) )
add_test( add_test(
NAME dnode_test_mnode NAME dmnodeTest
COMMAND dnode_test_mnode COMMAND dmnodeTest
) )

View File

@ -188,7 +188,7 @@ TEST_F(DndTestMnode, 03_Drop_Mnode) {
SRpcMsg* pRsp = test.SendReq(TDMT_DND_ALTER_MNODE, pReq, contLen); SRpcMsg* pRsp = test.SendReq(TDMT_DND_ALTER_MNODE, pReq, contLen);
ASSERT_NE(pRsp, nullptr); ASSERT_NE(pRsp, nullptr);
ASSERT_EQ(pRsp->code, TSDB_CODE_NODE_NOT_DEPLOYED); ASSERT_EQ(pRsp->code, TSDB_CODE_RPC_REDIRECT);
} }
{ {

View File

@ -1,11 +1,11 @@
aux_source_directory(. DQTEST_SRC) aux_source_directory(. DQTEST_SRC)
add_executable(dnode_test_qnode ${DQTEST_SRC}) add_executable(dqnodeTest ${DQTEST_SRC})
target_link_libraries( target_link_libraries(
dnode_test_qnode dqnodeTest
PUBLIC sut PUBLIC sut
) )
add_test( add_test(
NAME dnode_test_qnode NAME dqnodeTest
COMMAND dnode_test_qnode COMMAND dqnodeTest
) )

View File

@ -1,11 +1,11 @@
aux_source_directory(. SQTEST_SRC) aux_source_directory(. SQTEST_SRC)
add_executable(dnode_test_snode ${SQTEST_SRC}) add_executable(dsnodeTest ${SQTEST_SRC})
target_link_libraries( target_link_libraries(
dnode_test_snode dsnodeTest
PUBLIC sut PUBLIC sut
) )
add_test( add_test(
NAME dnode_test_snode NAME dsnodeTest
COMMAND dnode_test_snode COMMAND dsnodeTest
) )

View File

@ -1,11 +1,11 @@
aux_source_directory(. VNODE_SRC) aux_source_directory(. VNODE_SRC)
add_executable(dnode_test_vnode ${VNODE_SRC}) add_executable(dvnodeTest ${VNODE_SRC})
target_link_libraries( target_link_libraries(
dnode_test_vnode dvnodeTest
PUBLIC sut PUBLIC sut
) )
add_test( add_test(
NAME dnode_test_vnode NAME dvnodeTest
COMMAND dnode_test_vnode COMMAND dvnodeTest
) )

View File

@ -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") TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_SMA_OPTION, "Invalid sma option")
// dnode // 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_OFFLINE, "Node is offline")
TAOS_DEFINE_ERROR(TSDB_CODE_NODE_ALREADY_DEPLOYED, "Node already deployed") TAOS_DEFINE_ERROR(TSDB_CODE_NODE_ALREADY_DEPLOYED, "Node already deployed")
TAOS_DEFINE_ERROR(TSDB_CODE_NODE_NOT_DEPLOYED, "Node not deployed") TAOS_DEFINE_ERROR(TSDB_CODE_NODE_NOT_DEPLOYED, "Node not deployed")