diff --git a/src/mnode/inc/mnodeDb.h b/src/mnode/inc/mnodeDb.h index 0fa1a15e2d..8f014ae9c8 100644 --- a/src/mnode/inc/mnodeDb.h +++ b/src/mnode/inc/mnodeDb.h @@ -40,6 +40,7 @@ void mnodeIncDbRef(SDbObj *pDb); void mnodeDecDbRef(SDbObj *pDb); bool mnodeCheckIsMonitorDB(char *db, char *monitordb); void mnodeDropAllDbs(SAcctObj *pAcct); +int mnodeInsertAlterRow(SDbObj *pDb, void *pMsg); int32_t mnodeCompactDbs(); diff --git a/src/mnode/src/mnodeDb.c b/src/mnode/src/mnodeDb.c index 8b0faaf75c..0c03cbb5a0 100644 --- a/src/mnode/src/mnodeDb.c +++ b/src/mnode/src/mnodeDb.c @@ -1102,6 +1102,17 @@ static int32_t mnodeAlterDbFp(SMnodeMsg *pMsg) { return TSDB_CODE_MND_ACTION_IN_PROGRESS; } +int mnodeInsertAlterRow(SDbObj *pDb, void *pMsg) { + SSdbRow desc = { + .type = SDB_OPER_GLOBAL, + .pTable = tsDbSdb, + .pObj = pDb, + .pMsg = pMsg, + }; + + return sdbInsertRowToQueue(&desc); +} + static int32_t mnodeAlterDb(SDbObj *pDb, SAlterDbMsg *pAlter, void *pMsg) { mDebug("db:%s, type:%d do alter operation", pDb->name, pDb->cfg.dbType); diff --git a/src/mnode/src/mnodeVgroup.c b/src/mnode/src/mnodeVgroup.c index 47773dcd90..9eb736f0bb 100644 --- a/src/mnode/src/mnodeVgroup.c +++ b/src/mnode/src/mnodeVgroup.c @@ -961,6 +961,7 @@ void mnodeSendAlterVgroupMsg(SVgObj *pVgroup,SMnodeMsg *pMsg) { pVgroup->dbName); if (pMsg) { pMsg->pVgroup = pVgroup; + mnodeIncVgroupRef(pVgroup); } for (int32_t i = 0; i < pVgroup->numOfVnodes; ++i) { SRpcEpSet epSet = mnodeGetEpSetFromIp(pVgroup->vnodeGid[i].pDnode->dnodeEp); @@ -1044,7 +1045,9 @@ static void mnodeProcessAlterVnodeRsp(SRpcMsg *rpcMsg) { if (mnodeMsg->received != mnodeMsg->expected) return; - dnodeReprocessMWriteMsg(mnodeMsg); + mnodeInsertAlterRow(pVgroup->pDb, mnodeMsg); + + dnodeSendRpcMWriteRsp(mnodeMsg, TSDB_CODE_SUCCESS); } static void mnodeProcessCreateVnodeRsp(SRpcMsg *rpcMsg) {