TD-10431 add numOfVgroup to db object
This commit is contained in:
parent
e56168870e
commit
58d819ee86
|
@ -584,6 +584,7 @@ typedef struct SRetrieveTableRsp {
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
char db[TSDB_FULL_DB_NAME_LEN];
|
char db[TSDB_FULL_DB_NAME_LEN];
|
||||||
|
int32_t numOfVgroups;
|
||||||
int32_t cacheBlockSize; // MB
|
int32_t cacheBlockSize; // MB
|
||||||
int32_t totalBlocks;
|
int32_t totalBlocks;
|
||||||
int32_t daysPerFile;
|
int32_t daysPerFile;
|
||||||
|
|
|
@ -232,8 +232,8 @@ do { \
|
||||||
#define TSDB_CQ_SQL_SIZE 1024
|
#define TSDB_CQ_SQL_SIZE 1024
|
||||||
#define TSDB_MIN_VNODES 64
|
#define TSDB_MIN_VNODES 64
|
||||||
#define TSDB_MAX_VNODES 512
|
#define TSDB_MAX_VNODES 512
|
||||||
#define TSDB_MIN_VNODES_PER_DB 2
|
#define TSDB_MIN_VNODES_PER_DB 1
|
||||||
#define TSDB_MAX_VNODES_PER_DB 64
|
#define TSDB_MAX_VNODES_PER_DB 4096
|
||||||
|
|
||||||
#define TSDB_DNODE_ROLE_ANY 0
|
#define TSDB_DNODE_ROLE_ANY 0
|
||||||
#define TSDB_DNODE_ROLE_MGMT 1
|
#define TSDB_DNODE_ROLE_MGMT 1
|
||||||
|
|
|
@ -208,6 +208,7 @@ TEST_F(DndTestDb, 02_CreateDb) {
|
||||||
{
|
{
|
||||||
SCreateDbMsg* pReq = (SCreateDbMsg*)rpcMallocCont(sizeof(SCreateDbMsg));
|
SCreateDbMsg* pReq = (SCreateDbMsg*)rpcMallocCont(sizeof(SCreateDbMsg));
|
||||||
strcpy(pReq->db, "1.d1");
|
strcpy(pReq->db, "1.d1");
|
||||||
|
pReq->numOfVgroups = htonl(2);
|
||||||
pReq->cacheBlockSize = htonl(16);
|
pReq->cacheBlockSize = htonl(16);
|
||||||
pReq->totalBlocks = htonl(10);
|
pReq->totalBlocks = htonl(10);
|
||||||
pReq->daysPerFile = htonl(10);
|
pReq->daysPerFile = htonl(10);
|
||||||
|
|
|
@ -208,6 +208,7 @@ typedef struct {
|
||||||
int64_t updateTime;
|
int64_t updateTime;
|
||||||
int64_t uid;
|
int64_t uid;
|
||||||
int32_t version;
|
int32_t version;
|
||||||
|
int32_t numOfVgroups;
|
||||||
SDbCfg cfg;
|
SDbCfg cfg;
|
||||||
} SDbObj;
|
} SDbObj;
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,7 @@ int32_t mndInitVgroup(SMnode *pMnode);
|
||||||
void mndCleanupVgroup(SMnode *pMnode);
|
void mndCleanupVgroup(SMnode *pMnode);
|
||||||
SVgObj *mndAcquireVgroup(SMnode *pMnode, int32_t vgId);
|
SVgObj *mndAcquireVgroup(SMnode *pMnode, int32_t vgId);
|
||||||
void mndReleaseVgroup(SMnode *pMnode, SVgObj *pVgroup);
|
void mndReleaseVgroup(SMnode *pMnode, SVgObj *pVgroup);
|
||||||
|
int32_t mndAllocVgroup(SMnode *pMnode, SDbObj *pDb);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include "mndShow.h"
|
#include "mndShow.h"
|
||||||
#include "mndTrans.h"
|
#include "mndTrans.h"
|
||||||
#include "mndUser.h"
|
#include "mndUser.h"
|
||||||
|
#include "mndVgroup.h"
|
||||||
|
|
||||||
#define TSDB_DB_VER_NUM 1
|
#define TSDB_DB_VER_NUM 1
|
||||||
#define TSDB_DB_RESERVE_SIZE 64
|
#define TSDB_DB_RESERVE_SIZE 64
|
||||||
|
@ -75,6 +76,7 @@ static SSdbRaw *mndDbActionEncode(SDbObj *pDb) {
|
||||||
SDB_SET_INT64(pRaw, dataPos, pDb->updateTime)
|
SDB_SET_INT64(pRaw, dataPos, pDb->updateTime)
|
||||||
SDB_SET_INT64(pRaw, dataPos, pDb->uid)
|
SDB_SET_INT64(pRaw, dataPos, pDb->uid)
|
||||||
SDB_SET_INT32(pRaw, dataPos, pDb->version)
|
SDB_SET_INT32(pRaw, dataPos, pDb->version)
|
||||||
|
SDB_SET_INT32(pRaw, dataPos, pDb->numOfVgroups)
|
||||||
SDB_SET_INT32(pRaw, dataPos, pDb->cfg.cacheBlockSize)
|
SDB_SET_INT32(pRaw, dataPos, pDb->cfg.cacheBlockSize)
|
||||||
SDB_SET_INT32(pRaw, dataPos, pDb->cfg.totalBlocks)
|
SDB_SET_INT32(pRaw, dataPos, pDb->cfg.totalBlocks)
|
||||||
SDB_SET_INT32(pRaw, dataPos, pDb->cfg.daysPerFile)
|
SDB_SET_INT32(pRaw, dataPos, pDb->cfg.daysPerFile)
|
||||||
|
@ -119,6 +121,7 @@ static SSdbRow *mndDbActionDecode(SSdbRaw *pRaw) {
|
||||||
SDB_GET_INT64(pRaw, pRow, dataPos, &pDb->updateTime)
|
SDB_GET_INT64(pRaw, pRow, dataPos, &pDb->updateTime)
|
||||||
SDB_GET_INT64(pRaw, pRow, dataPos, &pDb->uid)
|
SDB_GET_INT64(pRaw, pRow, dataPos, &pDb->uid)
|
||||||
SDB_GET_INT32(pRaw, pRow, dataPos, &pDb->version)
|
SDB_GET_INT32(pRaw, pRow, dataPos, &pDb->version)
|
||||||
|
SDB_GET_INT32(pRaw, pRow, dataPos, &pDb->numOfVgroups)
|
||||||
SDB_GET_INT32(pRaw, pRow, dataPos, &pDb->cfg.cacheBlockSize)
|
SDB_GET_INT32(pRaw, pRow, dataPos, &pDb->cfg.cacheBlockSize)
|
||||||
SDB_GET_INT32(pRaw, pRow, dataPos, &pDb->cfg.totalBlocks)
|
SDB_GET_INT32(pRaw, pRow, dataPos, &pDb->cfg.totalBlocks)
|
||||||
SDB_GET_INT32(pRaw, pRow, dataPos, &pDb->cfg.daysPerFile)
|
SDB_GET_INT32(pRaw, pRow, dataPos, &pDb->cfg.daysPerFile)
|
||||||
|
@ -341,6 +344,7 @@ static int32_t mndCreateDb(SMnode *pMnode, SMnodeMsg *pMsg, SCreateDbMsg *pCreat
|
||||||
dbObj.createdTime = taosGetTimestampMs();
|
dbObj.createdTime = taosGetTimestampMs();
|
||||||
dbObj.updateTime = dbObj.createdTime;
|
dbObj.updateTime = dbObj.createdTime;
|
||||||
dbObj.uid = mndGenerateUid(dbObj.name, TSDB_FULL_DB_NAME_LEN);
|
dbObj.uid = mndGenerateUid(dbObj.name, TSDB_FULL_DB_NAME_LEN);
|
||||||
|
dbObj.numOfVgroups = pCreate->numOfVgroups;
|
||||||
dbObj.cfg = (SDbCfg){.cacheBlockSize = pCreate->cacheBlockSize,
|
dbObj.cfg = (SDbCfg){.cacheBlockSize = pCreate->cacheBlockSize,
|
||||||
.totalBlocks = pCreate->totalBlocks,
|
.totalBlocks = pCreate->totalBlocks,
|
||||||
.daysPerFile = pCreate->daysPerFile,
|
.daysPerFile = pCreate->daysPerFile,
|
||||||
|
@ -372,6 +376,11 @@ static int32_t mndCreateDb(SMnode *pMnode, SMnodeMsg *pMsg, SCreateDbMsg *pCreat
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mndAllocVgroup(pMnode, &dbObj) != 0) {
|
||||||
|
mError("db:%s, failed to create since %s", pCreate->db, terrstr());
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
STrans *pTrans = mndTransCreate(pMnode, TRN_POLICY_ROLLBACK, pMsg->rpcMsg.handle);
|
STrans *pTrans = mndTransCreate(pMnode, TRN_POLICY_ROLLBACK, pMsg->rpcMsg.handle);
|
||||||
if (pTrans == NULL) {
|
if (pTrans == NULL) {
|
||||||
mError("db:%s, failed to create since %s", pCreate->db, terrstr());
|
mError("db:%s, failed to create since %s", pCreate->db, terrstr());
|
||||||
|
@ -417,6 +426,7 @@ static int32_t mndProcessCreateDbMsg(SMnodeMsg *pMsg) {
|
||||||
SMnode *pMnode = pMsg->pMnode;
|
SMnode *pMnode = pMsg->pMnode;
|
||||||
SCreateDbMsg *pCreate = pMsg->rpcMsg.pCont;
|
SCreateDbMsg *pCreate = pMsg->rpcMsg.pCont;
|
||||||
|
|
||||||
|
pCreate->numOfVgroups = htonl(pCreate->numOfVgroups);
|
||||||
pCreate->cacheBlockSize = htonl(pCreate->cacheBlockSize);
|
pCreate->cacheBlockSize = htonl(pCreate->cacheBlockSize);
|
||||||
pCreate->totalBlocks = htonl(pCreate->totalBlocks);
|
pCreate->totalBlocks = htonl(pCreate->totalBlocks);
|
||||||
pCreate->daysPerFile = htonl(pCreate->daysPerFile);
|
pCreate->daysPerFile = htonl(pCreate->daysPerFile);
|
||||||
|
|
|
@ -152,6 +152,21 @@ void mndReleaseVgroup(SMnode *pMnode, SVgObj *pVgroup) {
|
||||||
sdbRelease(pSdb, pVgroup);
|
sdbRelease(pSdb, pVgroup);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int32_t mndGetDefaultVgroupSize(SMnode *pMnode) { return 4; }
|
||||||
|
|
||||||
|
int32_t mndAllocVgroup(SMnode *pMnode, SDbObj *pDb) {
|
||||||
|
if (pDb->numOfVgroups == -1) {
|
||||||
|
pDb->numOfVgroups = mndGetDefaultVgroupSize(pMnode);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pDb->numOfVgroups < TSDB_MIN_VNODES_PER_DB || pDb->numOfVgroups > TSDB_MAX_VNODES_PER_DB) {
|
||||||
|
terrno = TSDB_CODE_MND_INVALID_DB_OPTION;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int32_t mndProcessCreateVnodeRsp(SMnodeMsg *pMsg) { return 0; }
|
static int32_t mndProcessCreateVnodeRsp(SMnodeMsg *pMsg) { return 0; }
|
||||||
static int32_t mndProcessAlterVnodeRsp(SMnodeMsg *pMsg) { return 0; }
|
static int32_t mndProcessAlterVnodeRsp(SMnodeMsg *pMsg) { return 0; }
|
||||||
static int32_t mndProcessDropVnodeRsp(SMnodeMsg *pMsg) { return 0; }
|
static int32_t mndProcessDropVnodeRsp(SMnodeMsg *pMsg) { return 0; }
|
||||||
|
|
Loading…
Reference in New Issue