From 225602af15f6c2274cd03645f8315c9e1c586952 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Fri, 18 Mar 2022 09:54:30 +0800 Subject: [PATCH] shm --- source/dnode/mgmt/bnode/src/bmInt.c | 10 +--------- source/dnode/mgmt/container/inc/dnd.h | 2 +- source/dnode/mgmt/container/src/dndExec.c | 3 ++- source/dnode/mgmt/container/src/dndFile.c | 10 +++++----- source/dnode/mgmt/dnode/src/dmInt.c | 5 ++++- source/dnode/mgmt/mnode/src/mmInt.c | 15 ++++++++------- source/dnode/mgmt/qnode/src/qmInt.c | 4 ++-- source/dnode/mgmt/snode/src/smInt.c | 5 ++--- source/dnode/mgmt/vnode/src/vmInt.c | 5 +++-- 9 files changed, 28 insertions(+), 31 deletions(-) diff --git a/source/dnode/mgmt/bnode/src/bmInt.c b/source/dnode/mgmt/bnode/src/bmInt.c index 4af17f723e..02d1f62904 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 b919473729..6c29d807da 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 163912763f..ed789be562 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 d87bff4515..aa9203edd8 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 c5867789b2..4d4717f039 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 d6c3ef9a96..c59210d65c 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 37b475518d..c15a15c6c1 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 80c190bf98..051fe265f6 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 bcdb821c70..1c28b02aa3 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) { -- GitLab