Merge pull request #4462 from taosdata/hotfix/TD-2347
[TD-2347]<fix>: Modify some bugs in data migration and add mandatory check
This commit is contained in:
commit
ffadd16e94
|
@ -236,7 +236,14 @@ PRASE_EPS_OVER:
|
||||||
dnodeResetEps(eps);
|
dnodeResetEps(eps);
|
||||||
if (eps) free(eps);
|
if (eps) free(eps);
|
||||||
|
|
||||||
|
#if 0
|
||||||
dnodeUpdateEp(dnodeGetDnodeId(), tsLocalEp, tsLocalFqdn, &tsServerPort);
|
dnodeUpdateEp(dnodeGetDnodeId(), tsLocalEp, tsLocalFqdn, &tsServerPort);
|
||||||
|
#else
|
||||||
|
if (dnodeCheckEpChanged(dnodeGetDnodeId(), tsLocalEp)) {
|
||||||
|
dError("dnode:%d, localEp is changed to %s in dnodeEps.json and need reconfigured", dnodeGetDnodeId(), tsLocalEp);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
terrno = 0;
|
terrno = 0;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -157,12 +157,13 @@ static void dnodeResetMInfos(SMInfos *pMinfos) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t dnodeReadMInfos() {
|
static int32_t dnodeReadMInfos() {
|
||||||
int32_t len = 0;
|
int32_t len = 0;
|
||||||
int32_t maxLen = 2000;
|
int32_t maxLen = 2000;
|
||||||
char * content = calloc(1, maxLen + 1);
|
char * content = calloc(1, maxLen + 1);
|
||||||
cJSON * root = NULL;
|
cJSON * root = NULL;
|
||||||
FILE * fp = NULL;
|
FILE * fp = NULL;
|
||||||
SMInfos minfos = {0};
|
SMInfos minfos = {0};
|
||||||
|
bool nodeChanged = false;
|
||||||
|
|
||||||
char file[TSDB_FILENAME_LEN + 20] = {0};
|
char file[TSDB_FILENAME_LEN + 20] = {0};
|
||||||
sprintf(file, "%s/mnodeEpSet.json", tsDnodeDir);
|
sprintf(file, "%s/mnodeEpSet.json", tsDnodeDir);
|
||||||
|
@ -221,14 +222,19 @@ static int32_t dnodeReadMInfos() {
|
||||||
dError("failed to read mnodeEpSet.json, nodeId not found");
|
dError("failed to read mnodeEpSet.json, nodeId not found");
|
||||||
goto PARSE_MINFOS_OVER;
|
goto PARSE_MINFOS_OVER;
|
||||||
}
|
}
|
||||||
minfos.mnodeInfos[i].mnodeId = nodeId->valueint;
|
|
||||||
|
|
||||||
cJSON *nodeEp = cJSON_GetObjectItem(nodeInfo, "nodeEp");
|
cJSON *nodeEp = cJSON_GetObjectItem(nodeInfo, "nodeEp");
|
||||||
if (!nodeEp || nodeEp->type != cJSON_String || nodeEp->valuestring == NULL) {
|
if (!nodeEp || nodeEp->type != cJSON_String || nodeEp->valuestring == NULL) {
|
||||||
dError("failed to read mnodeEpSet.json, nodeName not found");
|
dError("failed to read mnodeEpSet.json, nodeName not found");
|
||||||
goto PARSE_MINFOS_OVER;
|
goto PARSE_MINFOS_OVER;
|
||||||
}
|
}
|
||||||
strncpy(minfos.mnodeInfos[i].mnodeEp, nodeEp->valuestring, TSDB_EP_LEN);
|
|
||||||
|
SMInfo *pMinfo = &minfos.mnodeInfos[i];
|
||||||
|
pMinfo->mnodeId = nodeId->valueint;
|
||||||
|
tstrncpy(pMinfo->mnodeEp, nodeEp->valuestring, TSDB_EP_LEN);
|
||||||
|
|
||||||
|
bool changed = dnodeCheckEpChanged(pMinfo->mnodeId, pMinfo->mnodeEp);
|
||||||
|
if (changed) nodeChanged = changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
dInfo("read file %s successed", file);
|
dInfo("read file %s successed", file);
|
||||||
|
@ -245,6 +251,11 @@ PARSE_MINFOS_OVER:
|
||||||
dnodeUpdateEp(mInfo->mnodeId, mInfo->mnodeEp, NULL, NULL);
|
dnodeUpdateEp(mInfo->mnodeId, mInfo->mnodeEp, NULL, NULL);
|
||||||
}
|
}
|
||||||
dnodeResetMInfos(&minfos);
|
dnodeResetMInfos(&minfos);
|
||||||
|
|
||||||
|
if (nodeChanged) {
|
||||||
|
dnodeWriteMInfos();
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -58,10 +58,10 @@ typedef struct {
|
||||||
static const SDnodeComponent tsDnodeComponents[] = {
|
static const SDnodeComponent tsDnodeComponents[] = {
|
||||||
{"tfile", tfInit, tfCleanup},
|
{"tfile", tfInit, tfCleanup},
|
||||||
{"rpc", rpcInit, rpcCleanup},
|
{"rpc", rpcInit, rpcCleanup},
|
||||||
|
{"globalcfg" ,taosCheckGlobalCfg, NULL},
|
||||||
{"storage", dnodeInitStorage, dnodeCleanupStorage},
|
{"storage", dnodeInitStorage, dnodeCleanupStorage},
|
||||||
{"dnodecfg", dnodeInitCfg, dnodeCleanupCfg},
|
{"dnodecfg", dnodeInitCfg, dnodeCleanupCfg},
|
||||||
{"dnodeeps", dnodeInitEps, dnodeCleanupEps},
|
{"dnodeeps", dnodeInitEps, dnodeCleanupEps},
|
||||||
{"globalcfg" ,taosCheckGlobalCfg, NULL},
|
|
||||||
{"mnodeinfos",dnodeInitMInfos, dnodeCleanupMInfos},
|
{"mnodeinfos",dnodeInitMInfos, dnodeCleanupMInfos},
|
||||||
{"wal", walInit, walCleanUp},
|
{"wal", walInit, walCleanUp},
|
||||||
{"check", dnodeInitCheck, dnodeCleanupCheck}, // NOTES: dnodeInitCheck must be behind the dnodeinitStorage component !!!
|
{"check", dnodeInitCheck, dnodeCleanupCheck}, // NOTES: dnodeInitCheck must be behind the dnodeinitStorage component !!!
|
||||||
|
|
|
@ -339,7 +339,12 @@ static int32_t dnodeOpenVnodes() {
|
||||||
}
|
}
|
||||||
|
|
||||||
free(threads);
|
free(threads);
|
||||||
dInfo("there are total vnodes:%d, openned:%d failed:%d", numOfVnodes, openVnodes, failedVnodes);
|
dInfo("there are total vnodes:%d, openned:%d", numOfVnodes, openVnodes);
|
||||||
|
|
||||||
|
if (failedVnodes != 0) {
|
||||||
|
dError("there are total vnodes:%d, failed:%d", numOfVnodes, failedVnodes);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -226,7 +226,7 @@ int64_t syncStart(const SSyncInfo *pInfo) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pNode->selfIndex < 0) {
|
if (pNode->selfIndex < 0) {
|
||||||
sInfo("vgId:%d, this node is not configured", pNode->vgId);
|
sError("vgId:%d, this node is not configured", pNode->vgId);
|
||||||
terrno = TSDB_CODE_SYN_INVALID_CONFIG;
|
terrno = TSDB_CODE_SYN_INVALID_CONFIG;
|
||||||
syncStop(pNode->rid);
|
syncStop(pNode->rid);
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -242,9 +242,8 @@ int32_t vnodeReadCfg(SVnodeObj *pVnode) {
|
||||||
}
|
}
|
||||||
tstrncpy(node->nodeEp, nodeEp->valuestring, TSDB_EP_LEN);
|
tstrncpy(node->nodeEp, nodeEp->valuestring, TSDB_EP_LEN);
|
||||||
|
|
||||||
if (!nodeChanged) {
|
bool changed = dnodeCheckEpChanged(node->nodeId, node->nodeEp);
|
||||||
nodeChanged = dnodeCheckEpChanged(node->nodeId, node->nodeEp);
|
if (changed) nodeChanged = changed;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = TSDB_CODE_SUCCESS;
|
ret = TSDB_CODE_SUCCESS;
|
||||||
|
|
|
@ -362,9 +362,8 @@ int32_t vnodeOpen(int32_t vnode, char *rootDir) {
|
||||||
pVnode->role = TAOS_SYNC_ROLE_MASTER;
|
pVnode->role = TAOS_SYNC_ROLE_MASTER;
|
||||||
#else
|
#else
|
||||||
if (pVnode->sync <= 0) {
|
if (pVnode->sync <= 0) {
|
||||||
vError("vgId:%d, failed to open sync module, replica:%d reason:%s", pVnode->vgId, pVnode->syncCfg.replica,
|
vError("vgId:%d, failed to open sync, replica:%d reason:%s", pVnode->vgId, pVnode->syncCfg.replica,
|
||||||
tstrerror(terrno));
|
tstrerror(terrno));
|
||||||
vnodeRelease(pVnode);
|
|
||||||
vnodeCleanUp(pVnode);
|
vnodeCleanUp(pVnode);
|
||||||
return terrno;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue