diff --git a/src/inc/vnode.h b/src/inc/vnode.h index 1714f1336af7a9b014079a25b1a54b27ee8774f2..f4fb8060feabc12e0f6bfcb933572ed4090ebb6e 100644 --- a/src/inc/vnode.h +++ b/src/inc/vnode.h @@ -22,7 +22,7 @@ extern "C" { typedef enum _VN_STATUS { TAOS_VN_STATUS_INIT, - TAOS_VN_STATUS_CREATING, + TAOS_VN_STATUS_UPDATING, TAOS_VN_STATUS_READY, TAOS_VN_STATUS_CLOSING, TAOS_VN_STATUS_DELETING, diff --git a/src/vnode/src/vnodeMain.c b/src/vnode/src/vnodeMain.c index 2a7d133039616e7d77847e5478b38adaa39b9dc2..f9904f7fa8a677cd80bf1026243cf39d360db4b5 100644 --- a/src/vnode/src/vnodeMain.c +++ b/src/vnode/src/vnodeMain.c @@ -140,6 +140,8 @@ int32_t vnodeDrop(int32_t vgId) { int32_t vnodeAlter(void *param, SMDCreateVnodeMsg *pVnodeCfg) { SVnodeObj *pVnode = param; + pVnode->status = TAOS_VN_STATUS_UPDATING; + int32_t code = vnodeSaveCfg(pVnodeCfg); if (code != TSDB_CODE_SUCCESS) { dError("vgId:%d, failed to save vnode cfg, reason:%s", pVnodeCfg->cfg.vgId, tstrerror(code)); @@ -167,6 +169,8 @@ int32_t vnodeAlter(void *param, SMDCreateVnodeMsg *pVnodeCfg) { return code; } + pVnode->status = TAOS_VN_STATUS_READY; + dTrace("pVnode:%p vgId:%d, vnode is altered", pVnode, pVnode->vgId); return TSDB_CODE_SUCCESS; } @@ -181,7 +185,7 @@ int32_t vnodeOpen(int32_t vnode, char *rootDir) { pVnode->refCount = 1; pVnode->version = 0; taosAddIntHash(tsDnodeVnodesHash, pVnode->vgId, (char *)(&pVnode)); - + int32_t code = vnodeReadCfg(pVnode); if (code != TSDB_CODE_SUCCESS) { dError("pVnode:%p vgId:%d, failed to read cfg file", pVnode, pVnode->vgId); diff --git a/src/vnode/src/vnodeWrite.c b/src/vnode/src/vnodeWrite.c index 278a2bb7478c3bae3039e7343c5e8fef2b1f341f..cc13d9d02624f50671c82fb44ac56cc7236b5133 100644 --- a/src/vnode/src/vnodeWrite.c +++ b/src/vnode/src/vnodeWrite.c @@ -51,7 +51,7 @@ int32_t vnodeProcessWrite(void *param1, int qtype, void *param2, void *item) { if (vnodeProcessWriteMsgFp[pHead->msgType] == NULL) return TSDB_CODE_MSG_NOT_PROCESSED; - if (pVnode->status == TAOS_VN_STATUS_DELETING || pVnode->status == TAOS_VN_STATUS_CLOSING) + if (pVnode->status != TAOS_VN_STATUS_READY) return TSDB_CODE_NOT_ACTIVE_VNODE; if (pHead->version == 0) { // from client