From 729afc6ab51783d3d991332eeba1fa3bf67b7f8b Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Tue, 17 Jan 2023 10:26:59 +0800 Subject: [PATCH 1/3] fix: config error if ep.json invalid --- source/dnode/mgmt/node_util/src/dmEps.c | 35 +++++++++++++++---------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/source/dnode/mgmt/node_util/src/dmEps.c b/source/dnode/mgmt/node_util/src/dmEps.c index 2b06a24a54..12827e8413 100644 --- a/source/dnode/mgmt/node_util/src/dmEps.c +++ b/source/dnode/mgmt/node_util/src/dmEps.c @@ -172,8 +172,9 @@ _OVER: dDebug("reset dnode list on startup"); dmResetEps(pData, pData->dnodeEps); - if (pData->dnodeEps == NULL && dmIsEpChanged(pData, pData->dnodeId, tsLocalEp)) { + if (pData->oldDnodeEps == NULL && dmIsEpChanged(pData, pData->dnodeId, tsLocalEp)) { dError("localEp %s different with %s and need reconfigured", tsLocalEp, file); + terrno = TSDB_CODE_INVALID_CFG; return -1; } @@ -506,8 +507,22 @@ _OVER: if (code != 0) { dError("failed to read dnode file:%s since %s", file, terrstr()); + return code; } + // update old fqdn and port + for (int32_t i = 0; i < (int32_t)taosArrayGetSize(pData->oldDnodeEps); ++i) { + SDnodeEpPair *pair = taosArrayGet(pData->oldDnodeEps, i); + for (int32_t j = 0; j < (int32_t)taosArrayGetSize(pData->dnodeEps); ++j) { + SDnodeEp *pDnodeEp = taosArrayGet(pData->dnodeEps, j); + if (pDnodeEp->id == pair->id) { + tstrncpy(pair->oldFqdn, pDnodeEp->ep.fqdn, TSDB_FQDN_LEN); + pair->oldPort = pair->newPort; + } + } + } + + // check new fqdn and port for (int32_t i = 0; i < (int32_t)taosArrayGetSize(pData->oldDnodeEps); ++i) { SDnodeEpPair *pair = taosArrayGet(pData->oldDnodeEps, i); for (int32_t j = 0; j < (int32_t)taosArrayGetSize(pData->dnodeEps); ++j) { @@ -516,19 +531,11 @@ _OVER: (strcmp(pDnodeEp->ep.fqdn, pair->newFqdn) == 0 && pDnodeEp->ep.port == pair->newPort)) { dError("dnode:%d, can't update ep:%s:%u to %s:%u since already exists as dnode:%d", pair->id, pair->oldFqdn, pair->oldPort, pair->newFqdn, pair->newPort, pDnodeEp->id); - tstrncpy(pDnodeEp->ep.fqdn, pair->newFqdn, TSDB_FQDN_LEN); - pDnodeEp->ep.port = pair->newPort; + taosArrayDestroy(pData->oldDnodeEps); + pData->oldDnodeEps = NULL; + terrno = TSDB_CODE_INVALID_CFG; + return -1; } - -#if 0 - if (pDnodeEp->id == pair->id && - (strcmp(pDnodeEp->ep.fqdn, pair->oldFqdn) == 0 && pDnodeEp->ep.port == pair->oldPort)) { - dError("dnode:%d, can't update ep:%s:%u to %s:%u since endpoint not matched", pair->id, pair->oldFqdn, - pair->oldPort, pair->newFqdn, pair->newPort, pDnodeEp->id); - tstrncpy(pDnodeEp->ep.fqdn, pair->newFqdn, TSDB_FQDN_LEN); - pDnodeEp->ep.port = pair->newPort; - } -#endif } } @@ -546,5 +553,5 @@ _OVER: } pData->dnodeVer = 0; - return code; + return 0; } From ca33abe26c8cc4171b2af3b47298334e3a8d87dd Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Tue, 17 Jan 2023 10:43:02 +0800 Subject: [PATCH 2/3] fix: more --- source/dnode/mgmt/node_util/src/dmEps.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/dnode/mgmt/node_util/src/dmEps.c b/source/dnode/mgmt/node_util/src/dmEps.c index 12827e8413..b653ef74dc 100644 --- a/source/dnode/mgmt/node_util/src/dmEps.c +++ b/source/dnode/mgmt/node_util/src/dmEps.c @@ -516,7 +516,7 @@ _OVER: for (int32_t j = 0; j < (int32_t)taosArrayGetSize(pData->dnodeEps); ++j) { SDnodeEp *pDnodeEp = taosArrayGet(pData->dnodeEps, j); if (pDnodeEp->id == pair->id) { - tstrncpy(pair->oldFqdn, pDnodeEp->ep.fqdn, TSDB_FQDN_LEN); + tstrncpy(pair->oldFqdn, pair->newFqdn, TSDB_FQDN_LEN); pair->oldPort = pair->newPort; } } From e155757ac6a17eb20ba746aa5b4b6c8626db02d5 Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Tue, 17 Jan 2023 10:46:31 +0800 Subject: [PATCH 3/3] fix: more --- source/dnode/mgmt/node_util/src/dmEps.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/dnode/mgmt/node_util/src/dmEps.c b/source/dnode/mgmt/node_util/src/dmEps.c index b653ef74dc..a7a5b8b999 100644 --- a/source/dnode/mgmt/node_util/src/dmEps.c +++ b/source/dnode/mgmt/node_util/src/dmEps.c @@ -516,8 +516,8 @@ _OVER: for (int32_t j = 0; j < (int32_t)taosArrayGetSize(pData->dnodeEps); ++j) { SDnodeEp *pDnodeEp = taosArrayGet(pData->dnodeEps, j); if (pDnodeEp->id == pair->id) { - tstrncpy(pair->oldFqdn, pair->newFqdn, TSDB_FQDN_LEN); - pair->oldPort = pair->newPort; + tstrncpy(pair->oldFqdn, pDnodeEp->ep.fqdn, TSDB_FQDN_LEN); + pair->oldPort = pDnodeEp->ep.port; } } }