diff --git a/source/dnode/mgmt/bnode/src/bmInt.c b/source/dnode/mgmt/bnode/src/bmInt.c index 4af17f723e58a42674861a4a86096f119f06c444..02d1f62904281fcb6d17d98295b9a2cedac6f4ab 100644 --- a/source/dnode/mgmt/bnode/src/bmInt.c +++ b/source/dnode/mgmt/bnode/src/bmInt.c @@ -16,15 +16,7 @@ #define _DEFAULT_SOURCE #include "bmInt.h" -static bool bmRequire(SMgmtWrapper *pWrapper) { - SBnodeMgmt mgmt = {0}; - mgmt.path = pWrapper->path; - - bool deployed = false; - (void)dndReadFile(pWrapper, &deployed); - - return deployed; -} +static int32_t bmRequire(SMgmtWrapper *pWrapper, bool *required) { return dndReadFile(pWrapper, required); } static void bmInitOption(SBnodeMgmt *pMgmt, SBnodeOpt *pOption) { SDnode *pDnode = pMgmt->pDnode; diff --git a/source/dnode/mgmt/container/inc/dnd.h b/source/dnode/mgmt/container/inc/dnd.h index b919473729ef6a8b1286e616b902548ca8c48016..6c29d807da682db896a9b32a65cde476c250d3e3 100644 --- a/source/dnode/mgmt/container/inc/dnd.h +++ b/source/dnode/mgmt/container/inc/dnd.h @@ -76,7 +76,7 @@ typedef int32_t (*OpenNodeFp)(SMgmtWrapper *pWrapper); typedef void (*CloseNodeFp)(SMgmtWrapper *pWrapper); typedef int32_t (*CreateNodeFp)(SMgmtWrapper *pWrapper, SNodeMsg *pMsg); typedef int32_t (*DropNodeFp)(SMgmtWrapper *pWrapper, SNodeMsg *pMsg); -typedef bool (*RequireNodeFp)(SMgmtWrapper *pWrapper); +typedef int32_t (*RequireNodeFp)(SMgmtWrapper *pWrapper, bool *required); typedef struct { EWorkerType type; diff --git a/source/dnode/mgmt/container/src/dndExec.c b/source/dnode/mgmt/container/src/dndExec.c index 163912763ff815409a2e95144492ac6dfb5cb020..ed789be56214d0e0c427407b0c28a13d16058aa7 100644 --- a/source/dnode/mgmt/container/src/dndExec.c +++ b/source/dnode/mgmt/container/src/dndExec.c @@ -26,7 +26,8 @@ static void dndResetLog(SMgmtWrapper *pMgmt) { } static bool dndRequireNode(SMgmtWrapper *pWrapper) { - bool required = (*pWrapper->fp.requiredFp)(pWrapper); + bool required = false; + int32_t code =(*pWrapper->fp.requiredFp)(pWrapper, &required); if (!required) { dDebug("node:%s, no need to start", pWrapper->name); } else { diff --git a/source/dnode/mgmt/container/src/dndFile.c b/source/dnode/mgmt/container/src/dndFile.c index d87bff4515f7c6a8b29196b7488104a43315b175..aa9203edd836b2c12221f3579e7db18291e51348 100644 --- a/source/dnode/mgmt/container/src/dndFile.c +++ b/source/dnode/mgmt/container/src/dndFile.c @@ -30,33 +30,33 @@ int32_t dndReadFile(SMgmtWrapper *pWrapper, bool *pDeployed) { if (pFile == NULL) { dDebug("file %s not exist", file); code = 0; - goto PRASE_BNODE_OVER; + goto _OVER; } len = (int32_t)taosReadFile(pFile, content, maxLen); if (len <= 0) { dError("failed to read %s since content is null", file); - goto PRASE_BNODE_OVER; + goto _OVER; } content[len] = 0; root = cJSON_Parse(content); if (root == NULL) { dError("failed to read %s since invalid json format", file); - goto PRASE_BNODE_OVER; + goto _OVER; } cJSON *deployed = cJSON_GetObjectItem(root, "deployed"); if (!deployed || deployed->type != cJSON_Number) { dError("failed to read %s since deployed not found", file); - goto PRASE_BNODE_OVER; + goto _OVER; } *pDeployed = deployed->valueint != 0; code = 0; dDebug("succcessed to read file %s, deployed:%d", file, *pDeployed); -PRASE_BNODE_OVER: +_OVER: if (content != NULL) free(content); if (root != NULL) cJSON_Delete(root); if (pFile != NULL) taosCloseFile(&pFile); diff --git a/source/dnode/mgmt/dnode/src/dmInt.c b/source/dnode/mgmt/dnode/src/dmInt.c index c5867789b259dc85ba06dc526f90f34aeda9ace0..4d4717f039654638d48c0a24fa7fde3328eaddc0 100644 --- a/source/dnode/mgmt/dnode/src/dmInt.c +++ b/source/dnode/mgmt/dnode/src/dmInt.c @@ -136,7 +136,10 @@ void dmCleanup(SMgmtWrapper *pWrapper) { dInfo("dnode-mgmt is cleaned up"); } -bool dmRequire(SMgmtWrapper *pWrapper) { return true; } +int32_t dmRequire(SMgmtWrapper *pWrapper, bool *required) { + *required = true; + return 0; +} void dmGetMgmtFp(SMgmtWrapper *pWrapper) { SMgmtFp mgmtFp = {0}; diff --git a/source/dnode/mgmt/mnode/src/mmInt.c b/source/dnode/mgmt/mnode/src/mmInt.c index d6c3ef9a964a375b9fb8814cb18f76275a20a67f..c59210d65c5bf2c1cf0033e52cc1e0f0c532ea74 100644 --- a/source/dnode/mgmt/mnode/src/mmInt.c +++ b/source/dnode/mgmt/mnode/src/mmInt.c @@ -277,30 +277,31 @@ static bool mmDeployRequired(SDnode *pDnode) { return true; } -static bool mmRequire(SMgmtWrapper *pWrapper) { +static int32_t mmRequire(SMgmtWrapper *pWrapper, bool *required) { SMnodeMgmt mgmt = {0}; mgmt.path = pWrapper->path; if (mmReadFile(&mgmt) != 0) { - return false; + return -1; } if (mgmt.dropped) { dInfo("mnode has been dropped and needs to be deleted"); mndDestroy(mgmt.path); - return false; + return -1; } if (mgmt.deployed) { + *required = true; dInfo("mnode has been deployed"); - return true; + return 0; } - bool required = mmDeployRequired(pWrapper->pDnode); - if (required) { + *required = mmDeployRequired(pWrapper->pDnode); + if (*required) { dInfo("mnode need to be deployed"); } - return required; + return 0; } void mmGetMgmtFp(SMgmtWrapper *pWrapper) { diff --git a/source/dnode/mgmt/qnode/src/qmInt.c b/source/dnode/mgmt/qnode/src/qmInt.c index 37b475518d32b300ea55d33a9485a93e7d7f6983..c15a15c6c154082ae4679240474abccc9f07e071 100644 --- a/source/dnode/mgmt/qnode/src/qmInt.c +++ b/source/dnode/mgmt/qnode/src/qmInt.c @@ -16,13 +16,13 @@ #define _DEFAULT_SOURCE #include "qmInt.h" -bool qmRequireNode(SMgmtWrapper *pWrapper) { return false; } +static int32_t qmRequire(SMgmtWrapper *pWrapper, bool *required) { return dndReadFile(pWrapper, required); } void qmGetMgmtFp(SMgmtWrapper *pWrapper) { SMgmtFp mgmtFp = {0}; mgmtFp.openFp = NULL; mgmtFp.closeFp = NULL; - mgmtFp.requiredFp = qmRequireNode; + mgmtFp.requiredFp = qmRequire; // qmInitMsgHandles(pWrapper); pWrapper->name = "qnode"; diff --git a/source/dnode/mgmt/snode/src/smInt.c b/source/dnode/mgmt/snode/src/smInt.c index 80c190bf985ce38bacaf86841f14ef97c219d60a..051fe265f6f99e40dea927af40151e4cb7af31fd 100644 --- a/source/dnode/mgmt/snode/src/smInt.c +++ b/source/dnode/mgmt/snode/src/smInt.c @@ -16,14 +16,13 @@ #define _DEFAULT_SOURCE #include "smInt.h" -bool smRequireNode(SMgmtWrapper *pWrapper) { return false; } - +static int32_t smRequire(SMgmtWrapper *pWrapper, bool *required) { return dndReadFile(pWrapper, required); } void smGetMgmtFp(SMgmtWrapper *pWrapper) { SMgmtFp mgmtFp = {0}; mgmtFp.openFp = NULL; mgmtFp.closeFp = NULL; - mgmtFp.requiredFp = smRequireNode; + mgmtFp.requiredFp = smRequire; // smInitMsgHandles(pWrapper); pWrapper->name = "snode"; diff --git a/source/dnode/mgmt/vnode/src/vmInt.c b/source/dnode/mgmt/vnode/src/vmInt.c index bcdb821c7054d486254073e861a18f0ba7400654..1c28b02aa38e3a3d1b9bb4f7129956ac5789e5c2 100644 --- a/source/dnode/mgmt/vnode/src/vmInt.c +++ b/source/dnode/mgmt/vnode/src/vmInt.c @@ -324,9 +324,10 @@ _OVER: return 0; } -static bool vmRequire(SMgmtWrapper *pWrapper) { +static int32_t vmRequire(SMgmtWrapper *pWrapper, bool *required) { SDnode *pDnode = pWrapper->pDnode; - return pDnode->numOfSupportVnodes > 0; + *required = pDnode->numOfSupportVnodes > 0; + return 0; } void vmGetMgmtFp(SMgmtWrapper *pWrapper) {