Merge pull request #6617 from taosdata/fix/TD-4895
[TD-4895]<fix>: more checking for creating mnode
This commit is contained in:
commit
71b953e102
|
@ -637,6 +637,19 @@ int32_t bnDropDnode(SDnodeObj *pDnode) {
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t bnDnodeCanCreateMnode(struct SDnodeObj *pDnode) {
|
||||||
|
if (pDnode == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (pDnode->isMgmt || pDnode->alternativeRole == TAOS_DN_ALTERNATIVE_ROLE_VNODE
|
||||||
|
|| pDnode->status == TAOS_DN_STATUS_DROPPING
|
||||||
|
|| pDnode->status == TAOS_DN_STATUS_OFFLINE) {
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void bnMonitorDnodeModule() {
|
static void bnMonitorDnodeModule() {
|
||||||
int32_t numOfMnodes = mnodeGetMnodesNum();
|
int32_t numOfMnodes = mnodeGetMnodesNum();
|
||||||
if (numOfMnodes >= tsNumOfMnodes) return;
|
if (numOfMnodes >= tsNumOfMnodes) return;
|
||||||
|
@ -645,13 +658,7 @@ static void bnMonitorDnodeModule() {
|
||||||
SDnodeObj *pDnode = tsBnDnodes.list[i];
|
SDnodeObj *pDnode = tsBnDnodes.list[i];
|
||||||
if (pDnode == NULL) break;
|
if (pDnode == NULL) break;
|
||||||
|
|
||||||
if (pDnode->isMgmt || pDnode->status == TAOS_DN_STATUS_DROPPING || pDnode->status == TAOS_DN_STATUS_OFFLINE) {
|
if (!bnDnodeCanCreateMnode(pDnode)) continue;
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pDnode->alternativeRole == TAOS_DN_ALTERNATIVE_ROLE_VNODE) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
mLInfo("dnode:%d, numOfMnodes:%d expect:%d, create mnode in this dnode", pDnode->dnodeId, numOfMnodes, tsNumOfMnodes);
|
mLInfo("dnode:%d, numOfMnodes:%d expect:%d, create mnode in this dnode", pDnode->dnodeId, numOfMnodes, tsNumOfMnodes);
|
||||||
mnodeCreateMnode(pDnode->dnodeId, pDnode->dnodeEp, true);
|
mnodeCreateMnode(pDnode->dnodeId, pDnode->dnodeEp, true);
|
||||||
|
|
|
@ -31,6 +31,7 @@ void bnReset();
|
||||||
int32_t bnAllocVnodes(struct SVgObj *pVgroup);
|
int32_t bnAllocVnodes(struct SVgObj *pVgroup);
|
||||||
int32_t bnAlterDnode(struct SDnodeObj *pDnode, int32_t vnodeId, int32_t dnodeId);
|
int32_t bnAlterDnode(struct SDnodeObj *pDnode, int32_t vnodeId, int32_t dnodeId);
|
||||||
int32_t bnDropDnode(struct SDnodeObj *pDnode);
|
int32_t bnDropDnode(struct SDnodeObj *pDnode);
|
||||||
|
int32_t bnDnodeCanCreateMnode(struct SDnodeObj *pDnode);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
#define _DEFAULT_SOURCE
|
#define _DEFAULT_SOURCE
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
#include "tgrant.h"
|
#include "tgrant.h"
|
||||||
#include "tbn.h"
|
|
||||||
#include "tglobal.h"
|
#include "tglobal.h"
|
||||||
#include "tconfig.h"
|
#include "tconfig.h"
|
||||||
#include "tutil.h"
|
#include "tutil.h"
|
||||||
|
@ -632,7 +631,8 @@ static int32_t mnodeProcessDnodeStatusMsg(SMnodeMsg *pMsg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t numOfMnodes = mnodeGetMnodesNum();
|
int32_t numOfMnodes = mnodeGetMnodesNum();
|
||||||
if (numOfMnodes < tsNumOfMnodes && numOfMnodes < mnodeGetOnlineDnodesNum() && !pDnode->isMgmt) {
|
if (numOfMnodes < tsNumOfMnodes && numOfMnodes < mnodeGetOnlineDnodesNum()
|
||||||
|
&& bnDnodeCanCreateMnode(pDnode)) {
|
||||||
bnNotify();
|
bnNotify();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue