[TD-853] change error code while vnode not ready
This commit is contained in:
parent
a54a425c75
commit
86e087920d
|
@ -402,6 +402,7 @@ static int32_t dnodeProcessCreateVnodeMsg(SRpcMsg *rpcMsg) {
|
|||
|
||||
void *pVnode = vnodeAcquireVnode(pCreate->cfg.vgId);
|
||||
if (pVnode != NULL) {
|
||||
dDebug("vgId:%d, already exist, processed as alter msg", pCreate->cfg.vgId);
|
||||
int32_t code = vnodeAlter(pVnode, pCreate);
|
||||
vnodeRelease(pVnode);
|
||||
return code;
|
||||
|
|
|
@ -696,9 +696,9 @@ static void mnodeProcessCreateVnodeRsp(SRpcMsg *rpcMsg) {
|
|||
if (rpcMsg->ahandle == NULL) return;
|
||||
|
||||
SMnodeMsg *mnodeMsg = rpcMsg->ahandle;
|
||||
mnodeMsg->received++;
|
||||
atomic_add_fetch_8(&mnodeMsg->received, 1);
|
||||
if (rpcMsg->code == TSDB_CODE_SUCCESS) {
|
||||
mnodeMsg->successed++;
|
||||
atomic_add_fetch_8(&mnodeMsg->successed, 1);
|
||||
} else {
|
||||
mnodeMsg->code = rpcMsg->code;
|
||||
}
|
||||
|
|
|
@ -93,16 +93,18 @@ void taosCloseQueue(taos_queue param) {
|
|||
|
||||
void *taosAllocateQitem(int size) {
|
||||
STaosQnode *pNode = (STaosQnode *)calloc(sizeof(STaosQnode) + size, 1);
|
||||
|
||||
if (pNode == NULL) return NULL;
|
||||
uTrace("item:%p, node:%p is allocated", pNode->item, pNode);
|
||||
return (void *)pNode->item;
|
||||
}
|
||||
|
||||
void taosFreeQitem(void *param) {
|
||||
if (param == NULL) return;
|
||||
|
||||
uTrace("item:%p is freed", param);
|
||||
char *temp = (char *)param;
|
||||
temp -= sizeof(STaosQnode);
|
||||
uTrace("item:%p, node:%p is freed", param, temp);
|
||||
free(temp);
|
||||
}
|
||||
|
||||
|
|
|
@ -161,11 +161,17 @@ int32_t vnodeDrop(int32_t vgId) {
|
|||
int32_t vnodeAlter(void *param, SMDCreateVnodeMsg *pVnodeCfg) {
|
||||
SVnodeObj *pVnode = param;
|
||||
|
||||
if (pVnode->status != TAOS_VN_STATUS_READY)
|
||||
return TSDB_CODE_VND_INVALID_STATUS;
|
||||
// vnode in non-ready state and still needs to return success instead of TSDB_CODE_VND_INVALID_STATUS
|
||||
// cfgVersion can be corrected by status msg
|
||||
if (pVnode->status != TAOS_VN_STATUS_READY) {
|
||||
vDebug("vgId:%d, vnode is not ready, do alter operation later", pVnode->vgId);
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
if (pVnode->syncCfg.replica > 1 && pVnode->role == TAOS_SYNC_ROLE_UNSYNCED)
|
||||
return TSDB_CODE_VND_NOT_SYNCED;
|
||||
// the vnode may always fail to synchronize because of it in low cfgVersion
|
||||
// so cannot use the following codes
|
||||
// if (pVnode->syncCfg.replica > 1 && pVnode->role == TAOS_SYNC_ROLE_UNSYNCED)
|
||||
// return TSDB_CODE_VND_NOT_SYNCED;
|
||||
|
||||
pVnode->status = TAOS_VN_STATUS_UPDATING;
|
||||
|
||||
|
|
Loading…
Reference in New Issue