diff --git a/src/dnode/src/dnodeMgmt.c b/src/dnode/src/dnodeMgmt.c index f34acdeae3fca4f6b73bf7be95ad148559f18141..81d426b49637c5028ad415d2ea7d7b37ad3e9e8b 100644 --- a/src/dnode/src/dnodeMgmt.c +++ b/src/dnode/src/dnodeMgmt.c @@ -173,7 +173,6 @@ static int32_t dnodeOpenVnodes() { int32_t numOfVnodes; int32_t status; - vnodeInit(); status = dnodeGetVnodeList(vnodeList, &numOfVnodes); if (status != TSDB_CODE_SUCCESS) { diff --git a/src/inc/vnode.h b/src/inc/vnode.h index 7ca17cafcc0660f9c3bfa103fd6f974fdc34cdee..f4fb8060feabc12e0f6bfcb933572ed4090ebb6e 100644 --- a/src/inc/vnode.h +++ b/src/inc/vnode.h @@ -35,7 +35,6 @@ typedef struct { void *qhandle; //used by query and retrieve msg } SRspRet; -void vnodeInit(); int32_t vnodeCreate(SMDCreateVnodeMsg *pVnodeCfg); int32_t vnodeDrop(int32_t vgId); int32_t vnodeOpen(int32_t vgId, char *rootDir); diff --git a/src/rpc/src/rpcUdp.c b/src/rpc/src/rpcUdp.c index 8d5721a437bcfe531cbdeea580d33dc5401bba5b..c551f6b1db1acfe847ce51ef70b1f883ed66cb05 100644 --- a/src/rpc/src/rpcUdp.c +++ b/src/rpc/src/rpcUdp.c @@ -18,7 +18,6 @@ #include "tsystem.h" #include "ttimer.h" #include "tutil.h" -#include "thash.h" #include "rpcLog.h" #include "rpcHaship.h" #include "rpcUdp.h" diff --git a/src/util/inc/thash.h b/src/util/inc/thash.h deleted file mode 100644 index 592db62fe5e1e122fe2183c18350e5d86ac30a04..0000000000000000000000000000000000000000 --- a/src/util/inc/thash.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2019 TAOS Data, Inc. - * - * This program is free software: you can use, redistribute, and/or modify - * it under the terms of the GNU Affero General Public License, version 3 - * or later ("AGPL"), as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -#ifndef TDENGINE_THASH_H -#define TDENGINE_THASH_H - -#ifdef __cplusplus -extern "C" { -#endif - -void *taosOpenHash(int maxSessions, int (*fp)(void *, uint64_t)); - -void taosCloseHash(void *handle); - -int taosAddHash(void *handle, uint64_t, uint32_t id); - -void taosDeleteHash(void *handle, uint64_t); - -int32_t taosGetIdFromHash(void *handle, uint64_t); - -int taosHashLong(void *, uint64_t ip); - -uint64_t taosHashUInt64(uint64_t handle); - -#ifdef __cplusplus -} -#endif - -#endif // TDENGINE_THASH_H diff --git a/src/util/src/thash.c b/src/util/src/thash.c deleted file mode 100644 index e3c6fe26b4e98185d48ff55d8cbfecd08a16ddbb..0000000000000000000000000000000000000000 --- a/src/util/src/thash.c +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Copyright (c) 2019 TAOS Data, Inc. - * - * This program is free software: you can use, redistribute, and/or modify - * it under the terms of the GNU Affero General Public License, version 3 - * or later ("AGPL"), as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -#include "os.h" -#include "tmempool.h" - -typedef struct _long_hash_t { - unsigned int id; - struct _long_hash_t *prev; - struct _long_hash_t *next; - uint64_t cont; -} SLongHash; - -typedef struct { - SLongHash **longHashList; - mpool_h longHashMemPool; - int (*hashFp)(void *, uint64_t); - int maxSessions; - pthread_mutex_t mutex; -} SHashObj; - -uint64_t taosHashUInt64(uint64_t handle) { - uint64_t hash = handle >> 16; - hash += handle & 0xFFFF; - return hash; -} - -int taosHashLong(void *handle, uint64_t ip) { - SHashObj *pObj = (SHashObj *)handle; - int hash = 0; - - hash = (int)(ip >> 16); - hash += (int)(ip & 0xFFFF); - - hash = hash % pObj->maxSessions; - - return hash; -} - -int taosAddHash(void *handle, uint64_t cont, unsigned int id) { - int hash; - SLongHash *pNode; - SHashObj * pObj; - - pObj = (SHashObj *)handle; - if (pObj == NULL || pObj->maxSessions == 0) return -1; - - pthread_mutex_lock(&pObj->mutex); - - hash = (*pObj->hashFp)(pObj, cont); - - pNode = (SLongHash *)taosMemPoolMalloc(pObj->longHashMemPool); - pNode->cont = cont; - pNode->id = id; - pNode->prev = 0; - pNode->next = pObj->longHashList[hash]; - - if (pObj->longHashList[hash] != 0) (pObj->longHashList[hash])->prev = pNode; - pObj->longHashList[hash] = pNode; - - pthread_mutex_unlock(&pObj->mutex); - - return 0; -} - -void taosDeleteHash(void *handle, uint64_t cont) { - int hash; - SLongHash *pNode; - SHashObj * pObj; - - pObj = (SHashObj *)handle; - if (pObj == NULL || pObj->maxSessions == 0) return; - - hash = (*pObj->hashFp)(pObj, cont); - - pthread_mutex_lock(&pObj->mutex); - - pNode = pObj->longHashList[hash]; - while (pNode) { - if (pNode->cont == cont) break; - - pNode = pNode->next; - } - - if (pNode) { - if (pNode->prev) { - pNode->prev->next = pNode->next; - } else { - pObj->longHashList[hash] = pNode->next; - } - - if (pNode->next) { - pNode->next->prev = pNode->prev; - } - - taosMemPoolFree(pObj->longHashMemPool, (char *)pNode); - } - - pthread_mutex_unlock(&pObj->mutex); -} - -int32_t taosGetIdFromHash(void *handle, uint64_t cont) { - int hash; - SLongHash *pNode; - SHashObj * pObj; - - pObj = (SHashObj *)handle; - if (pObj == NULL || pObj->maxSessions == 0) return -1; - - hash = (*pObj->hashFp)(pObj, cont); - - pthread_mutex_lock(&pObj->mutex); - - pNode = pObj->longHashList[hash]; - - while (pNode) { - if (pNode->cont == cont) { - break; - } - - pNode = pNode->next; - } - - pthread_mutex_unlock(&pObj->mutex); - - if (pNode) return (int32_t)pNode->id; - - return -1; -} - -void *taosOpenHash(int maxSessions, int (*fp)(void *, uint64_t)) { - SLongHash **longHashList; - mpool_h longHashMemPool; - SHashObj * pObj; - - longHashMemPool = taosMemPoolInit(maxSessions, sizeof(SLongHash)); - if (longHashMemPool == 0) return NULL; - - longHashList = calloc(sizeof(SLongHash *), (size_t)maxSessions); - if (longHashList == 0) { - taosMemPoolCleanUp(longHashMemPool); - return NULL; - } - - pObj = malloc(sizeof(SHashObj)); - if (pObj == NULL) { - taosMemPoolCleanUp(longHashMemPool); - free(longHashList); - return NULL; - } - - pObj->maxSessions = maxSessions; - pObj->longHashMemPool = longHashMemPool; - pObj->longHashList = longHashList; - pObj->hashFp = fp; - - pthread_mutex_init(&pObj->mutex, NULL); - - return pObj; -} - -void taosCloseHash(void *handle) { - SHashObj *pObj; - - pObj = (SHashObj *)handle; - if (pObj == NULL || pObj->maxSessions == 0) return; - - pthread_mutex_lock(&pObj->mutex); - - if (pObj->longHashMemPool) taosMemPoolCleanUp(pObj->longHashMemPool); - - if (pObj->longHashList) free(pObj->longHashList); - - pthread_mutex_unlock(&pObj->mutex); - - pthread_mutex_destroy(&pObj->mutex); - - memset(pObj, 0, sizeof(SHashObj)); - free(pObj); -} diff --git a/src/vnode/src/vnodeMain.c b/src/vnode/src/vnodeMain.c index 20ec430916971abb2f006dc5b7120d35559baf24..5b36fcba1645d4d6640b7c487647569d45b44289 100644 --- a/src/vnode/src/vnodeMain.c +++ b/src/vnode/src/vnodeMain.c @@ -54,7 +54,7 @@ int syncGetNodesRole(tsync_h shandle, SNodesRole * cfg) { return 0; } void syncConfirmForward(tsync_h shandle, uint64_t version, int32_t code) {} #endif -void vnodeInit() { +static void vnodeInit() { vnodeInitWriteFp(); vnodeInitReadFp(); @@ -299,6 +299,8 @@ void vnodeRelease(void *pVnodeRaw) { } void *vnodeGetVnode(int32_t vgId) { + if (tsDnodeVnodesHash == NULL) return NULL; + SVnodeObj **ppVnode = (SVnodeObj **)taosHashGet(tsDnodeVnodesHash, (const char *)&vgId, sizeof(int32_t)); if (ppVnode == NULL || *ppVnode == NULL) { terrno = TSDB_CODE_INVALID_VGROUP_ID;