[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);
|
void *pVnode = vnodeAcquireVnode(pCreate->cfg.vgId);
|
||||||
if (pVnode != NULL) {
|
if (pVnode != NULL) {
|
||||||
|
dDebug("vgId:%d, already exist, processed as alter msg", pCreate->cfg.vgId);
|
||||||
int32_t code = vnodeAlter(pVnode, pCreate);
|
int32_t code = vnodeAlter(pVnode, pCreate);
|
||||||
vnodeRelease(pVnode);
|
vnodeRelease(pVnode);
|
||||||
return code;
|
return code;
|
||||||
|
|
|
@ -696,9 +696,9 @@ static void mnodeProcessCreateVnodeRsp(SRpcMsg *rpcMsg) {
|
||||||
if (rpcMsg->ahandle == NULL) return;
|
if (rpcMsg->ahandle == NULL) return;
|
||||||
|
|
||||||
SMnodeMsg *mnodeMsg = rpcMsg->ahandle;
|
SMnodeMsg *mnodeMsg = rpcMsg->ahandle;
|
||||||
mnodeMsg->received++;
|
atomic_add_fetch_8(&mnodeMsg->received, 1);
|
||||||
if (rpcMsg->code == TSDB_CODE_SUCCESS) {
|
if (rpcMsg->code == TSDB_CODE_SUCCESS) {
|
||||||
mnodeMsg->successed++;
|
atomic_add_fetch_8(&mnodeMsg->successed, 1);
|
||||||
} else {
|
} else {
|
||||||
mnodeMsg->code = rpcMsg->code;
|
mnodeMsg->code = rpcMsg->code;
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,16 +93,18 @@ void taosCloseQueue(taos_queue param) {
|
||||||
|
|
||||||
void *taosAllocateQitem(int size) {
|
void *taosAllocateQitem(int size) {
|
||||||
STaosQnode *pNode = (STaosQnode *)calloc(sizeof(STaosQnode) + size, 1);
|
STaosQnode *pNode = (STaosQnode *)calloc(sizeof(STaosQnode) + size, 1);
|
||||||
|
|
||||||
if (pNode == NULL) return NULL;
|
if (pNode == NULL) return NULL;
|
||||||
|
uTrace("item:%p, node:%p is allocated", pNode->item, pNode);
|
||||||
return (void *)pNode->item;
|
return (void *)pNode->item;
|
||||||
}
|
}
|
||||||
|
|
||||||
void taosFreeQitem(void *param) {
|
void taosFreeQitem(void *param) {
|
||||||
if (param == NULL) return;
|
if (param == NULL) return;
|
||||||
|
|
||||||
uTrace("item:%p is freed", param);
|
|
||||||
char *temp = (char *)param;
|
char *temp = (char *)param;
|
||||||
temp -= sizeof(STaosQnode);
|
temp -= sizeof(STaosQnode);
|
||||||
|
uTrace("item:%p, node:%p is freed", param, temp);
|
||||||
free(temp);
|
free(temp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -161,11 +161,17 @@ int32_t vnodeDrop(int32_t vgId) {
|
||||||
int32_t vnodeAlter(void *param, SMDCreateVnodeMsg *pVnodeCfg) {
|
int32_t vnodeAlter(void *param, SMDCreateVnodeMsg *pVnodeCfg) {
|
||||||
SVnodeObj *pVnode = param;
|
SVnodeObj *pVnode = param;
|
||||||
|
|
||||||
if (pVnode->status != TAOS_VN_STATUS_READY)
|
// vnode in non-ready state and still needs to return success instead of TSDB_CODE_VND_INVALID_STATUS
|
||||||
return 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)
|
// the vnode may always fail to synchronize because of it in low cfgVersion
|
||||||
return TSDB_CODE_VND_NOT_SYNCED;
|
// 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;
|
pVnode->status = TAOS_VN_STATUS_UPDATING;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue