allocate vnodeObj in standard way, not through hash function
This commit is contained in:
parent
d4254489da
commit
6b14aeb230
|
@ -40,7 +40,7 @@ static void vnodeInit() {
|
||||||
|
|
||||||
vnodeInitWriteFp();
|
vnodeInitWriteFp();
|
||||||
|
|
||||||
tsDnodeVnodesHash = taosInitIntHash(TSDB_MAX_VNODES, sizeof(SVnodeObj), taosHashInt);
|
tsDnodeVnodesHash = taosInitIntHash(TSDB_MAX_VNODES, sizeof(SVnodeObj *), taosHashInt);
|
||||||
if (tsDnodeVnodesHash == NULL) {
|
if (tsDnodeVnodesHash == NULL) {
|
||||||
dError("failed to init vnode list");
|
dError("failed to init vnode list");
|
||||||
}
|
}
|
||||||
|
@ -113,12 +113,12 @@ int32_t vnodeOpen(int32_t vnode, char *rootDir) {
|
||||||
char temp[TSDB_FILENAME_LEN];
|
char temp[TSDB_FILENAME_LEN];
|
||||||
pthread_once(&vnodeModuleInit, vnodeInit);
|
pthread_once(&vnodeModuleInit, vnodeInit);
|
||||||
|
|
||||||
SVnodeObj vnodeObj = {0};
|
SVnodeObj *pVnode = calloc(sizeof(SVnodeObj), 1);
|
||||||
vnodeObj.vgId = vnode;
|
pVnode->vgId = vnode;
|
||||||
vnodeObj.status = VN_STATUS_INIT;
|
pVnode->status = VN_STATUS_INIT;
|
||||||
vnodeObj.refCount = 1;
|
pVnode->refCount = 1;
|
||||||
vnodeObj.version = 0;
|
pVnode->version = 0;
|
||||||
SVnodeObj *pVnode = (SVnodeObj *)taosAddIntHash(tsDnodeVnodesHash, vnodeObj.vgId, (char *)(&vnodeObj));
|
taosAddIntHash(tsDnodeVnodesHash, pVnode->vgId, (char *)(&pVnode));
|
||||||
|
|
||||||
sprintf(temp, "%s/tsdb", rootDir);
|
sprintf(temp, "%s/tsdb", rootDir);
|
||||||
void *pTsdb = tsdbOpenRepo(temp);
|
void *pTsdb = tsdbOpenRepo(temp);
|
||||||
|
@ -149,7 +149,7 @@ int32_t vnodeOpen(int32_t vnode, char *rootDir) {
|
||||||
|
|
||||||
int32_t vnodeClose(int32_t vgId) {
|
int32_t vnodeClose(int32_t vgId) {
|
||||||
|
|
||||||
SVnodeObj *pVnode = (SVnodeObj *) taosGetIntHashData(tsDnodeVnodesHash, vgId);
|
SVnodeObj *pVnode = *(SVnodeObj **)taosGetIntHashData(tsDnodeVnodesHash, vgId);
|
||||||
if (pVnode == NULL) return 0;
|
if (pVnode == NULL) return 0;
|
||||||
|
|
||||||
dTrace("pVnode:%p vgId:%d, vnode will be closed", pVnode, pVnode->vgId);
|
dTrace("pVnode:%p vgId:%d, vnode will be closed", pVnode, pVnode->vgId);
|
||||||
|
@ -182,7 +182,7 @@ void vnodeRelease(void *pVnodeRaw) {
|
||||||
}
|
}
|
||||||
|
|
||||||
dTrace("pVnode:%p vgId:%d, vnode is released", pVnode, pVnode->vgId);
|
dTrace("pVnode:%p vgId:%d, vnode is released", pVnode, pVnode->vgId);
|
||||||
taosDeleteIntHash(tsDnodeVnodesHash, pVnode->vgId);
|
free(pVnode);
|
||||||
|
|
||||||
tsOpennedVnodes--;
|
tsOpennedVnodes--;
|
||||||
if (tsOpennedVnodes <= 0) {
|
if (tsOpennedVnodes <= 0) {
|
||||||
|
@ -193,17 +193,12 @@ void vnodeRelease(void *pVnodeRaw) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void *vnodeGetVnode(int32_t vgId) {
|
void *vnodeGetVnode(int32_t vgId) {
|
||||||
SVnodeObj *pVnode = (SVnodeObj *) taosGetIntHashData(tsDnodeVnodesHash, vgId);
|
SVnodeObj *pVnode = *(SVnodeObj **) taosGetIntHashData(tsDnodeVnodesHash, vgId);
|
||||||
if (pVnode == NULL) {
|
if (pVnode == NULL) {
|
||||||
terrno = TSDB_CODE_INVALID_VGROUP_ID;
|
terrno = TSDB_CODE_INVALID_VGROUP_ID;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pVnode->status == VN_STATUS_CLOSING || pVnode->status == VN_STATUS_DELETING) {
|
|
||||||
terrno = TSDB_CODE_INVALID_VGROUP_ID;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
atomic_add_fetch_32(&pVnode->refCount, 1);
|
atomic_add_fetch_32(&pVnode->refCount, 1);
|
||||||
dTrace("pVnode:%p vgId:%d, get vnode, refCount:%d", pVnode, pVnode->vgId, pVnode->refCount);
|
dTrace("pVnode:%p vgId:%d, get vnode, refCount:%d", pVnode, pVnode->vgId, pVnode->refCount);
|
||||||
|
|
||||||
|
@ -234,7 +229,7 @@ void vnodeBuildStatusMsg(void *param) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void vnodeBuildVloadMsg(char *pNode, void * param) {
|
static void vnodeBuildVloadMsg(char *pNode, void * param) {
|
||||||
SVnodeObj *pVnode = (SVnodeObj *) pNode;
|
SVnodeObj *pVnode = *(SVnodeObj **) pNode;
|
||||||
if (pVnode->status == VN_STATUS_DELETING) return;
|
if (pVnode->status == VN_STATUS_DELETING) return;
|
||||||
|
|
||||||
SDMStatusMsg *pStatus = param;
|
SDMStatusMsg *pStatus = param;
|
||||||
|
@ -248,6 +243,8 @@ static void vnodeBuildVloadMsg(char *pNode, void * param) {
|
||||||
|
|
||||||
static void vnodeCleanUp(SVnodeObj *pVnode) {
|
static void vnodeCleanUp(SVnodeObj *pVnode) {
|
||||||
|
|
||||||
|
taosDeleteIntHash(tsDnodeVnodesHash, pVnode->vgId);
|
||||||
|
|
||||||
//syncStop(pVnode->sync);
|
//syncStop(pVnode->sync);
|
||||||
tsdbCloseRepo(pVnode->tsdb);
|
tsdbCloseRepo(pVnode->tsdb);
|
||||||
walClose(pVnode->wal);
|
walClose(pVnode->wal);
|
||||||
|
|
Loading…
Reference in New Issue