minor changes
This commit is contained in:
		
							parent
							
								
									55f2efc6d3
								
							
						
					
					
						commit
						acacf74bae
					
				| 
						 | 
					@ -704,7 +704,7 @@ typedef struct {
 | 
				
			||||||
  SVnodeLoad data[];
 | 
					  SVnodeLoad data[];
 | 
				
			||||||
} SVnodeLoads;
 | 
					} SVnodeLoads;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct SStatusMsg {
 | 
					typedef struct {
 | 
				
			||||||
  int32_t     sver;
 | 
					  int32_t     sver;
 | 
				
			||||||
  int32_t     dnodeId;
 | 
					  int32_t     dnodeId;
 | 
				
			||||||
  int32_t     clusterId;
 | 
					  int32_t     clusterId;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,13 +16,12 @@
 | 
				
			||||||
#define _DEFAULT_SOURCE
 | 
					#define _DEFAULT_SOURCE
 | 
				
			||||||
#include "mndDb.h"
 | 
					#include "mndDb.h"
 | 
				
			||||||
#include "mndDnode.h"
 | 
					#include "mndDnode.h"
 | 
				
			||||||
#include "mndMnode.h"
 | 
					 | 
				
			||||||
#include "mndShow.h"
 | 
					#include "mndShow.h"
 | 
				
			||||||
#include "mndTrans.h"
 | 
					#include "mndTrans.h"
 | 
				
			||||||
#include "mndUser.h"
 | 
					#include "mndUser.h"
 | 
				
			||||||
#include "mndVgroup.h"
 | 
					#include "mndVgroup.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define TSDB_DB_VER_NUM 1
 | 
					#define TSDB_DB_VER_NUMBER 1
 | 
				
			||||||
#define TSDB_DB_RESERVE_SIZE 64
 | 
					#define TSDB_DB_RESERVE_SIZE 64
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static SSdbRaw *mndDbActionEncode(SDbObj *pDb);
 | 
					static SSdbRaw *mndDbActionEncode(SDbObj *pDb);
 | 
				
			||||||
| 
						 | 
					@ -66,7 +65,7 @@ int32_t mndInitDb(SMnode *pMnode) {
 | 
				
			||||||
void mndCleanupDb(SMnode *pMnode) {}
 | 
					void mndCleanupDb(SMnode *pMnode) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static SSdbRaw *mndDbActionEncode(SDbObj *pDb) {
 | 
					static SSdbRaw *mndDbActionEncode(SDbObj *pDb) {
 | 
				
			||||||
  SSdbRaw *pRaw = sdbAllocRaw(SDB_DB, TSDB_DB_VER_NUM, sizeof(SDbObj) + TSDB_DB_RESERVE_SIZE);
 | 
					  SSdbRaw *pRaw = sdbAllocRaw(SDB_DB, TSDB_DB_VER_NUMBER, sizeof(SDbObj) + TSDB_DB_RESERVE_SIZE);
 | 
				
			||||||
  if (pRaw == NULL) return NULL;
 | 
					  if (pRaw == NULL) return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  int32_t dataPos = 0;
 | 
					  int32_t dataPos = 0;
 | 
				
			||||||
| 
						 | 
					@ -106,7 +105,7 @@ static SSdbRow *mndDbActionDecode(SSdbRaw *pRaw) {
 | 
				
			||||||
  int8_t sver = 0;
 | 
					  int8_t sver = 0;
 | 
				
			||||||
  if (sdbGetRawSoftVer(pRaw, &sver) != 0) return NULL;
 | 
					  if (sdbGetRawSoftVer(pRaw, &sver) != 0) return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (sver != TSDB_DB_VER_NUM) {
 | 
					  if (sver != TSDB_DB_VER_NUMBER) {
 | 
				
			||||||
    mError("failed to decode db since %s", terrstr());
 | 
					    mError("failed to decode db since %s", terrstr());
 | 
				
			||||||
    terrno = TSDB_CODE_SDB_INVALID_DATA_VER;
 | 
					    terrno = TSDB_CODE_SDB_INVALID_DATA_VER;
 | 
				
			||||||
    return NULL;
 | 
					    return NULL;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,10 +18,10 @@
 | 
				
			||||||
#include "mndMnode.h"
 | 
					#include "mndMnode.h"
 | 
				
			||||||
#include "mndShow.h"
 | 
					#include "mndShow.h"
 | 
				
			||||||
#include "mndTrans.h"
 | 
					#include "mndTrans.h"
 | 
				
			||||||
#include "ttime.h"
 | 
					 | 
				
			||||||
#include "tep.h"
 | 
					#include "tep.h"
 | 
				
			||||||
 | 
					#include "ttime.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define TSDB_DNODE_VER 1
 | 
					#define TSDB_DNODE_VER_NUMBER 1
 | 
				
			||||||
#define TSDB_DNODE_RESERVE_SIZE 64
 | 
					#define TSDB_DNODE_RESERVE_SIZE 64
 | 
				
			||||||
#define TSDB_CONFIG_OPTION_LEN 16
 | 
					#define TSDB_CONFIG_OPTION_LEN 16
 | 
				
			||||||
#define TSDB_CONIIG_VALUE_LEN 48
 | 
					#define TSDB_CONIIG_VALUE_LEN 48
 | 
				
			||||||
| 
						 | 
					@ -101,14 +101,14 @@ static int32_t mndCreateDefaultDnode(SMnode *pMnode) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  SSdbRaw *pRaw = mndDnodeActionEncode(&dnodeObj);
 | 
					  SSdbRaw *pRaw = mndDnodeActionEncode(&dnodeObj);
 | 
				
			||||||
  if (pRaw == NULL) return -1;
 | 
					  if (pRaw == NULL) return -1;
 | 
				
			||||||
  sdbSetRawStatus(pRaw, SDB_STATUS_READY);
 | 
					  if (sdbSetRawStatus(pRaw, SDB_STATUS_READY) != 0) return -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  mDebug("dnode:%d, will be created while deploy sdb", dnodeObj.id);
 | 
					  mDebug("dnode:%d, will be created while deploy sdb", dnodeObj.id);
 | 
				
			||||||
  return sdbWrite(pMnode->pSdb, pRaw);
 | 
					  return sdbWrite(pMnode->pSdb, pRaw);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static SSdbRaw *mndDnodeActionEncode(SDnodeObj *pDnode) {
 | 
					static SSdbRaw *mndDnodeActionEncode(SDnodeObj *pDnode) {
 | 
				
			||||||
  SSdbRaw *pRaw = sdbAllocRaw(SDB_DNODE, TSDB_DNODE_VER, sizeof(SDnodeObj) + TSDB_DNODE_RESERVE_SIZE);
 | 
					  SSdbRaw *pRaw = sdbAllocRaw(SDB_DNODE, TSDB_DNODE_VER_NUMBER, sizeof(SDnodeObj) + TSDB_DNODE_RESERVE_SIZE);
 | 
				
			||||||
  if (pRaw == NULL) return NULL;
 | 
					  if (pRaw == NULL) return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  int32_t dataPos = 0;
 | 
					  int32_t dataPos = 0;
 | 
				
			||||||
| 
						 | 
					@ -127,7 +127,7 @@ static SSdbRow *mndDnodeActionDecode(SSdbRaw *pRaw) {
 | 
				
			||||||
  int8_t sver = 0;
 | 
					  int8_t sver = 0;
 | 
				
			||||||
  if (sdbGetRawSoftVer(pRaw, &sver) != 0) return NULL;
 | 
					  if (sdbGetRawSoftVer(pRaw, &sver) != 0) return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (sver != TSDB_DNODE_VER) {
 | 
					  if (sver != TSDB_DNODE_VER_NUMBER) {
 | 
				
			||||||
    terrno = TSDB_CODE_SDB_INVALID_DATA_VER;
 | 
					    terrno = TSDB_CODE_SDB_INVALID_DATA_VER;
 | 
				
			||||||
    mError("failed to decode dnode since %s", terrstr());
 | 
					    mError("failed to decode dnode since %s", terrstr());
 | 
				
			||||||
    return NULL;
 | 
					    return NULL;
 | 
				
			||||||
| 
						 | 
					@ -150,21 +150,8 @@ static SSdbRow *mndDnodeActionDecode(SSdbRaw *pRaw) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int32_t mndDnodeActionInsert(SSdb *pSdb, SDnodeObj *pDnode) {
 | 
					static int32_t mndDnodeActionInsert(SSdb *pSdb, SDnodeObj *pDnode) {
 | 
				
			||||||
  mTrace("dnode:%d, perform insert action", pDnode->id);
 | 
					  mTrace("dnode:%d, perform insert action", pDnode->id);
 | 
				
			||||||
 | 
					 | 
				
			||||||
  pDnode->rebootTime = 0;
 | 
					 | 
				
			||||||
  pDnode->lastAccessTime = 0;
 | 
					 | 
				
			||||||
  pDnode->accessTimes = 0;
 | 
					 | 
				
			||||||
  pDnode->numOfMnodes = 0;
 | 
					 | 
				
			||||||
  pDnode->numOfVnodes = 0;
 | 
					 | 
				
			||||||
  pDnode->numOfQnodes = 0;
 | 
					 | 
				
			||||||
  pDnode->numOfSupportMnodes = 0;
 | 
					 | 
				
			||||||
  pDnode->numOfSupportVnodes = 0;
 | 
					 | 
				
			||||||
  pDnode->numOfSupportQnodes = 0;
 | 
					 | 
				
			||||||
  pDnode->numOfCores = 0;
 | 
					 | 
				
			||||||
  pDnode->status = DND_STATUS_OFFLINE;
 | 
					 | 
				
			||||||
  pDnode->offlineReason = DND_REASON_STATUS_NOT_RECEIVED;
 | 
					  pDnode->offlineReason = DND_REASON_STATUS_NOT_RECEIVED;
 | 
				
			||||||
  snprintf(pDnode->ep, TSDB_EP_LEN, "%s:%u", pDnode->fqdn, pDnode->port);
 | 
					  snprintf(pDnode->ep, TSDB_EP_LEN, "%s:%u", pDnode->fqdn, pDnode->port);
 | 
				
			||||||
 | 
					 | 
				
			||||||
  return 0;
 | 
					  return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -225,7 +212,7 @@ int32_t mndGetDnodeSize(SMnode *pMnode) {
 | 
				
			||||||
bool mndIsDnodeInReadyStatus(SMnode *pMnode, SDnodeObj *pDnode) {
 | 
					bool mndIsDnodeInReadyStatus(SMnode *pMnode, SDnodeObj *pDnode) {
 | 
				
			||||||
  int64_t ms = taosGetTimestampMs();
 | 
					  int64_t ms = taosGetTimestampMs();
 | 
				
			||||||
  int64_t interval = ABS(pDnode->lastAccessTime - ms);
 | 
					  int64_t interval = ABS(pDnode->lastAccessTime - ms);
 | 
				
			||||||
  if (interval > 3000 * pMnode->cfg.statusInterval) {
 | 
					  if (interval > 3500 * pMnode->cfg.statusInterval) {
 | 
				
			||||||
    return false;
 | 
					    return false;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  return true;
 | 
					  return true;
 | 
				
			||||||
| 
						 | 
					@ -267,12 +254,9 @@ static int32_t mndCheckClusterCfgPara(SMnode *pMnode, const SClusterCfg *pCfg) {
 | 
				
			||||||
    return DND_REASON_STATUS_INTERVAL_NOT_MATCH;
 | 
					    return DND_REASON_STATUS_INTERVAL_NOT_MATCH;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  int64_t checkTime = 0;
 | 
					  if ((0 != strcasecmp(pCfg->timezone, pMnode->cfg.timezone)) && (pMnode->checkTime != pCfg->checkTime)) {
 | 
				
			||||||
  char    timestr[32] = "1970-01-01 00:00:00.00";
 | 
					 | 
				
			||||||
  (void)taosParseTime(timestr, &checkTime, (int32_t)strlen(timestr), TSDB_TIME_PRECISION_MILLI, 0);
 | 
					 | 
				
			||||||
  if ((0 != strcasecmp(pCfg->timezone, pMnode->cfg.timezone)) && (checkTime != pCfg->checkTime)) {
 | 
					 | 
				
			||||||
    mError("timezone [%s - %s] [%" PRId64 " - %" PRId64 "] cfg inconsistent", pCfg->timezone, pMnode->cfg.timezone,
 | 
					    mError("timezone [%s - %s] [%" PRId64 " - %" PRId64 "] cfg inconsistent", pCfg->timezone, pMnode->cfg.timezone,
 | 
				
			||||||
           pCfg->checkTime, checkTime);
 | 
					           pCfg->checkTime, pMnode->checkTime);
 | 
				
			||||||
    return DND_REASON_TIME_ZONE_NOT_MATCH;
 | 
					    return DND_REASON_TIME_ZONE_NOT_MATCH;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,7 +21,7 @@
 | 
				
			||||||
#include "mndShow.h"
 | 
					#include "mndShow.h"
 | 
				
			||||||
#include "mndTrans.h"
 | 
					#include "mndTrans.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define TSDB_VGROUP_VER_NUM 1
 | 
					#define TSDB_VGROUP_VER_NUMBER 1
 | 
				
			||||||
#define TSDB_VGROUP_RESERVE_SIZE 64
 | 
					#define TSDB_VGROUP_RESERVE_SIZE 64
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static SSdbRow *mndVgroupActionDecode(SSdbRaw *pRaw);
 | 
					static SSdbRow *mndVgroupActionDecode(SSdbRaw *pRaw);
 | 
				
			||||||
| 
						 | 
					@ -70,7 +70,7 @@ int32_t mndInitVgroup(SMnode *pMnode) {
 | 
				
			||||||
void mndCleanupVgroup(SMnode *pMnode) {}
 | 
					void mndCleanupVgroup(SMnode *pMnode) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SSdbRaw *mndVgroupActionEncode(SVgObj *pVgroup) {
 | 
					SSdbRaw *mndVgroupActionEncode(SVgObj *pVgroup) {
 | 
				
			||||||
  SSdbRaw *pRaw = sdbAllocRaw(SDB_VGROUP, TSDB_VGROUP_VER_NUM, sizeof(SVgObj) + TSDB_VGROUP_RESERVE_SIZE);
 | 
					  SSdbRaw *pRaw = sdbAllocRaw(SDB_VGROUP, TSDB_VGROUP_VER_NUMBER, sizeof(SVgObj) + TSDB_VGROUP_RESERVE_SIZE);
 | 
				
			||||||
  if (pRaw == NULL) return NULL;
 | 
					  if (pRaw == NULL) return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  int32_t dataPos = 0;
 | 
					  int32_t dataPos = 0;
 | 
				
			||||||
| 
						 | 
					@ -98,7 +98,7 @@ SSdbRow *mndVgroupActionDecode(SSdbRaw *pRaw) {
 | 
				
			||||||
  int8_t sver = 0;
 | 
					  int8_t sver = 0;
 | 
				
			||||||
  if (sdbGetRawSoftVer(pRaw, &sver) != 0) return NULL;
 | 
					  if (sdbGetRawSoftVer(pRaw, &sver) != 0) return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (sver != TSDB_VGROUP_VER_NUM) {
 | 
					  if (sver != TSDB_VGROUP_VER_NUMBER) {
 | 
				
			||||||
    mError("failed to decode vgroup since %s", terrstr());
 | 
					    mError("failed to decode vgroup since %s", terrstr());
 | 
				
			||||||
    terrno = TSDB_CODE_SDB_INVALID_DATA_VER;
 | 
					    terrno = TSDB_CODE_SDB_INVALID_DATA_VER;
 | 
				
			||||||
    return NULL;
 | 
					    return NULL;
 | 
				
			||||||
| 
						 | 
					@ -142,14 +142,20 @@ static int32_t mndVgroupActionUpdate(SSdb *pSdb, SVgObj *pOldVgroup, SVgObj *pNe
 | 
				
			||||||
  mTrace("vgId:%d, perform update action", pOldVgroup->vgId);
 | 
					  mTrace("vgId:%d, perform update action", pOldVgroup->vgId);
 | 
				
			||||||
  pOldVgroup->updateTime = pNewVgroup->updateTime;
 | 
					  pOldVgroup->updateTime = pNewVgroup->updateTime;
 | 
				
			||||||
  pOldVgroup->version = pNewVgroup->version;
 | 
					  pOldVgroup->version = pNewVgroup->version;
 | 
				
			||||||
 | 
					  pOldVgroup->hashBegin = pNewVgroup->hashBegin;
 | 
				
			||||||
 | 
					  pOldVgroup->hashEnd = pNewVgroup->hashEnd;
 | 
				
			||||||
  pOldVgroup->replica = pNewVgroup->replica;
 | 
					  pOldVgroup->replica = pNewVgroup->replica;
 | 
				
			||||||
  memcpy(pOldVgroup->vnodeGid, pNewVgroup->vnodeGid, TSDB_MAX_REPLICA * sizeof(SVnodeGid));
 | 
					  memcpy(pOldVgroup->vnodeGid, pNewVgroup->vnodeGid, TSDB_MAX_REPLICA * sizeof(SVnodeGid));
 | 
				
			||||||
  return 0;
 | 
					  return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SVgObj *mndAcquireVgroup(SMnode *pMnode, int32_t vgId) {
 | 
					SVgObj *mndAcquireVgroup(SMnode *pMnode, int32_t vgId) {
 | 
				
			||||||
  SSdb *pSdb = pMnode->pSdb;
 | 
					  SSdb   *pSdb = pMnode->pSdb;
 | 
				
			||||||
  return sdbAcquire(pSdb, SDB_VGROUP, &vgId);
 | 
					  SVgObj *pVgroup = sdbAcquire(pSdb, SDB_VGROUP, &vgId);
 | 
				
			||||||
 | 
					  if (pVgroup == NULL) {
 | 
				
			||||||
 | 
					    terrno = TSDB_CODE_MND_VGROUP_NOT_EXIST;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return pVgroup;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void mndReleaseVgroup(SMnode *pMnode, SVgObj *pVgroup) {
 | 
					void mndReleaseVgroup(SMnode *pMnode, SVgObj *pVgroup) {
 | 
				
			||||||
| 
						 | 
					@ -158,14 +164,14 @@ void mndReleaseVgroup(SMnode *pMnode, SVgObj *pVgroup) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SCreateVnodeMsg *mndBuildCreateVnodeMsg(SMnode *pMnode, SDnodeObj *pDnode, SDbObj *pDb, SVgObj *pVgroup) {
 | 
					SCreateVnodeMsg *mndBuildCreateVnodeMsg(SMnode *pMnode, SDnodeObj *pDnode, SDbObj *pDb, SVgObj *pVgroup) {
 | 
				
			||||||
  SCreateVnodeMsg *pCreate = malloc(sizeof(SCreateVnodeMsg));
 | 
					  SCreateVnodeMsg *pCreate = calloc(1, sizeof(SCreateVnodeMsg));
 | 
				
			||||||
  if (pCreate == NULL) {
 | 
					  if (pCreate == NULL) {
 | 
				
			||||||
    terrno = TSDB_CODE_OUT_OF_MEMORY;
 | 
					    terrno = TSDB_CODE_OUT_OF_MEMORY;
 | 
				
			||||||
    return NULL;
 | 
					    return NULL;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  pCreate->dnodeId = htonl(pDnode->id);
 | 
					 | 
				
			||||||
  pCreate->vgId = htonl(pVgroup->vgId);
 | 
					  pCreate->vgId = htonl(pVgroup->vgId);
 | 
				
			||||||
 | 
					  pCreate->dnodeId = htonl(pDnode->id);
 | 
				
			||||||
  memcpy(pCreate->db, pDb->name, TSDB_FULL_DB_NAME_LEN);
 | 
					  memcpy(pCreate->db, pDb->name, TSDB_FULL_DB_NAME_LEN);
 | 
				
			||||||
  pCreate->dbUid = htobe64(pDb->uid);
 | 
					  pCreate->dbUid = htobe64(pDb->uid);
 | 
				
			||||||
  pCreate->vgVersion = htonl(pVgroup->version);
 | 
					  pCreate->vgVersion = htonl(pVgroup->version);
 | 
				
			||||||
| 
						 | 
					@ -194,7 +200,6 @@ SCreateVnodeMsg *mndBuildCreateVnodeMsg(SMnode *pMnode, SDnodeObj *pDnode, SDbOb
 | 
				
			||||||
    SDnodeObj *pVgidDnode = mndAcquireDnode(pMnode, pVgid->dnodeId);
 | 
					    SDnodeObj *pVgidDnode = mndAcquireDnode(pMnode, pVgid->dnodeId);
 | 
				
			||||||
    if (pVgidDnode == NULL) {
 | 
					    if (pVgidDnode == NULL) {
 | 
				
			||||||
      free(pCreate);
 | 
					      free(pCreate);
 | 
				
			||||||
      terrno = TSDB_CODE_MND_APP_ERROR;
 | 
					 | 
				
			||||||
      return NULL;
 | 
					      return NULL;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -218,7 +223,7 @@ SCreateVnodeMsg *mndBuildCreateVnodeMsg(SMnode *pMnode, SDnodeObj *pDnode, SDbOb
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SDropVnodeMsg *mndBuildDropVnodeMsg(SMnode *pMnode, SDnodeObj *pDnode, SDbObj *pDb, SVgObj *pVgroup) {
 | 
					SDropVnodeMsg *mndBuildDropVnodeMsg(SMnode *pMnode, SDnodeObj *pDnode, SDbObj *pDb, SVgObj *pVgroup) {
 | 
				
			||||||
  SDropVnodeMsg *pDrop = malloc(sizeof(SDropVnodeMsg));
 | 
					  SDropVnodeMsg *pDrop = calloc(1, sizeof(SDropVnodeMsg));
 | 
				
			||||||
  if (pDrop == NULL) {
 | 
					  if (pDrop == NULL) {
 | 
				
			||||||
    terrno = TSDB_CODE_OUT_OF_MEMORY;
 | 
					    terrno = TSDB_CODE_OUT_OF_MEMORY;
 | 
				
			||||||
    return NULL;
 | 
					    return NULL;
 | 
				
			||||||
| 
						 | 
					@ -270,7 +275,7 @@ int32_t mndAllocVgroup(SMnode *pMnode, SDbObj *pDb, SVgObj **ppVgroups) {
 | 
				
			||||||
    return -1;
 | 
					    return -1;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  int32_t  alloceVgroups = 0;
 | 
					  int32_t  allocedVgroups = 0;
 | 
				
			||||||
  int32_t  maxVgId = sdbGetMaxId(pMnode->pSdb, SDB_VGROUP);
 | 
					  int32_t  maxVgId = sdbGetMaxId(pMnode->pSdb, SDB_VGROUP);
 | 
				
			||||||
  uint32_t hashMin = 0;
 | 
					  uint32_t hashMin = 0;
 | 
				
			||||||
  uint32_t hashMax = UINT32_MAX;
 | 
					  uint32_t hashMax = UINT32_MAX;
 | 
				
			||||||
| 
						 | 
					@ -282,7 +287,6 @@ int32_t mndAllocVgroup(SMnode *pMnode, SDbObj *pDb, SVgObj **ppVgroups) {
 | 
				
			||||||
    pVgroup->createdTime = taosGetTimestampMs();
 | 
					    pVgroup->createdTime = taosGetTimestampMs();
 | 
				
			||||||
    pVgroup->updateTime = pVgroups->createdTime;
 | 
					    pVgroup->updateTime = pVgroups->createdTime;
 | 
				
			||||||
    pVgroup->version = 1;
 | 
					    pVgroup->version = 1;
 | 
				
			||||||
    pVgroup->dbUid = pDb->uid;
 | 
					 | 
				
			||||||
    pVgroup->hashBegin = hashMin + hashInterval * v;
 | 
					    pVgroup->hashBegin = hashMin + hashInterval * v;
 | 
				
			||||||
    if (v == pDb->cfg.numOfVgroups - 1) {
 | 
					    if (v == pDb->cfg.numOfVgroups - 1) {
 | 
				
			||||||
      pVgroup->hashEnd = hashMax;
 | 
					      pVgroup->hashEnd = hashMax;
 | 
				
			||||||
| 
						 | 
					@ -291,6 +295,7 @@ int32_t mndAllocVgroup(SMnode *pMnode, SDbObj *pDb, SVgObj **ppVgroups) {
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    memcpy(pVgroup->dbName, pDb->name, TSDB_FULL_DB_NAME_LEN);
 | 
					    memcpy(pVgroup->dbName, pDb->name, TSDB_FULL_DB_NAME_LEN);
 | 
				
			||||||
 | 
					    pVgroup->dbUid = pDb->uid;
 | 
				
			||||||
    pVgroup->replica = pDb->cfg.replications;
 | 
					    pVgroup->replica = pDb->cfg.replications;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (mndGetAvailableDnode(pMnode, pVgroup) != 0) {
 | 
					    if (mndGetAvailableDnode(pMnode, pVgroup) != 0) {
 | 
				
			||||||
| 
						 | 
					@ -299,7 +304,7 @@ int32_t mndAllocVgroup(SMnode *pMnode, SDbObj *pDb, SVgObj **ppVgroups) {
 | 
				
			||||||
      return -1;
 | 
					      return -1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    alloceVgroups++;
 | 
					    allocedVgroups++;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  *ppVgroups = pVgroups;
 | 
					  *ppVgroups = pVgroups;
 | 
				
			||||||
| 
						 | 
					@ -313,8 +318,7 @@ static int32_t mndProcessSyncVnodeRsp(SMnodeMsg *pMsg) { return 0; }
 | 
				
			||||||
static int32_t mndProcessCompactVnodeRsp(SMnodeMsg *pMsg) { return 0; }
 | 
					static int32_t mndProcessCompactVnodeRsp(SMnodeMsg *pMsg) { return 0; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int32_t mndGetVgroupMaxReplica(SMnode *pMnode, char *dbName, int8_t *pReplica, int32_t *pNumOfVgroups) {
 | 
					static int32_t mndGetVgroupMaxReplica(SMnode *pMnode, char *dbName, int8_t *pReplica, int32_t *pNumOfVgroups) {
 | 
				
			||||||
  SSdb *pSdb = pMnode->pSdb;
 | 
					  SSdb   *pSdb = pMnode->pSdb;
 | 
				
			||||||
 | 
					 | 
				
			||||||
  SDbObj *pDb = mndAcquireDb(pMnode, dbName);
 | 
					  SDbObj *pDb = mndAcquireDb(pMnode, dbName);
 | 
				
			||||||
  if (pDb == NULL) {
 | 
					  if (pDb == NULL) {
 | 
				
			||||||
    terrno = TSDB_CODE_MND_DB_NOT_SELECTED;
 | 
					    terrno = TSDB_CODE_MND_DB_NOT_SELECTED;
 | 
				
			||||||
| 
						 | 
					@ -330,7 +334,7 @@ static int32_t mndGetVgroupMaxReplica(SMnode *pMnode, char *dbName, int8_t *pRep
 | 
				
			||||||
    pIter = sdbFetch(pSdb, SDB_VGROUP, pIter, (void **)&pVgroup);
 | 
					    pIter = sdbFetch(pSdb, SDB_VGROUP, pIter, (void **)&pVgroup);
 | 
				
			||||||
    if (pIter == NULL) break;
 | 
					    if (pIter == NULL) break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (strcmp(pVgroup->dbName, dbName) == 0) {
 | 
					    if (pVgroup->dbUid == pDb->uid) {
 | 
				
			||||||
      replica = MAX(replica, pVgroup->replica);
 | 
					      replica = MAX(replica, pVgroup->replica);
 | 
				
			||||||
      numOfVgroups++;
 | 
					      numOfVgroups++;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -442,11 +446,25 @@ static void mndCancelGetNextVgroup(SMnode *pMnode, void *pIter) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int32_t mndGetVnodesNum(SMnode *pMnode, int32_t dnodeId) {
 | 
					static int32_t mndGetVnodesNum(SMnode *pMnode, int32_t dnodeId) {
 | 
				
			||||||
  if (dnodeId == 0) {
 | 
					  SSdb   *pSdb = pMnode->pSdb;
 | 
				
			||||||
    return 0;
 | 
					  int32_t numOfVnodes = 0;
 | 
				
			||||||
 | 
					  void   *pIter = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  while (1) {
 | 
				
			||||||
 | 
					    SVgObj *pVgroup = NULL;
 | 
				
			||||||
 | 
					    pIter = sdbFetch(pSdb, SDB_VGROUP, pIter, (void **)&pVgroup);
 | 
				
			||||||
 | 
					    if (pIter == NULL) break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for (int32_t v = 0; v < pVgroup->replica; ++v) {
 | 
				
			||||||
 | 
					      if (pVgroup->vnodeGid[v].dnodeId == dnodeId) {
 | 
				
			||||||
 | 
					        numOfVnodes++;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sdbRelease(pSdb, pVgroup);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return 0;
 | 
					  return numOfVnodes;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int32_t mndGetVnodeMeta(SMnodeMsg *pMsg, SShowObj *pShow, STableMetaMsg *pMeta) {
 | 
					static int32_t mndGetVnodeMeta(SMnodeMsg *pMsg, SShowObj *pShow, STableMetaMsg *pMeta) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -237,6 +237,9 @@ SMnode *mndOpen(const char *path, const SMnodeOpt *pOption) {
 | 
				
			||||||
    return NULL;
 | 
					    return NULL;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  char timestr[24] = "1970-01-01 00:00:00.00";
 | 
				
			||||||
 | 
					  (void)taosParseTime(timestr, &pMnode->checkTime, (int32_t)strlen(timestr), TSDB_TIME_PRECISION_MILLI, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  pMnode->pSteps = taosArrayInit(24, sizeof(SMnodeStep));
 | 
					  pMnode->pSteps = taosArrayInit(24, sizeof(SMnodeStep));
 | 
				
			||||||
  if (pMnode->pSteps == NULL) {
 | 
					  if (pMnode->pSteps == NULL) {
 | 
				
			||||||
    free(pMnode);
 | 
					    free(pMnode);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue