Merge pull request #6732 from junli1026/jun/hash
Make taosHashGetSize thread-safe and rename function
This commit is contained in:
commit
68e41b7e32
|
@ -920,7 +920,7 @@ int tscProcessLocalCmd(SSqlObj *pSql) {
|
|||
} else if (pCmd->command == TSDB_SQL_SHOW_CREATE_DATABASE) {
|
||||
pRes->code = tscProcessShowCreateDatabase(pSql);
|
||||
} else if (pCmd->command == TSDB_SQL_RESET_CACHE) {
|
||||
taosHashEmpty(tscTableMetaInfo);
|
||||
taosHashClear(tscTableMetaInfo);
|
||||
pRes->code = TSDB_CODE_SUCCESS;
|
||||
} else if (pCmd->command == TSDB_SQL_SERV_VERSION) {
|
||||
pRes->code = tscProcessServerVer(pSql);
|
||||
|
|
|
@ -1163,7 +1163,7 @@ static void insertBatchClean(STscStmt* pStmt) {
|
|||
pCmd->insertParam.pDataBlocks = tscDestroyBlockArrayList(pCmd->insertParam.pDataBlocks);
|
||||
pCmd->insertParam.numOfTables = 0;
|
||||
|
||||
taosHashEmpty(pCmd->insertParam.pTableBlockHashList);
|
||||
taosHashClear(pCmd->insertParam.pTableBlockHashList);
|
||||
tscFreeSqlResult(pSql);
|
||||
tscFreeSubobj(pSql);
|
||||
tfree(pSql->pSubs);
|
||||
|
|
|
@ -2309,7 +2309,7 @@ int tscProcessDropDbRsp(SSqlObj *pSql) {
|
|||
//TODO LOCK DB WHEN MODIFY IT
|
||||
//pSql->pTscObj->db[0] = 0;
|
||||
|
||||
taosHashEmpty(tscTableMetaInfo);
|
||||
taosHashClear(tscTableMetaInfo);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -2340,7 +2340,7 @@ int tscProcessAlterTableMsgRsp(SSqlObj *pSql) {
|
|||
tfree(pTableMetaInfo->pTableMeta);
|
||||
|
||||
if (isSuperTable) { // if it is a super table, iterate the hashTable and remove all the childTableMeta
|
||||
taosHashEmpty(tscTableMetaInfo);
|
||||
taosHashClear(tscTableMetaInfo);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -771,7 +771,7 @@ int tsdbLoadMetaCache(STsdbRepo *pRepo, bool recoverMeta) {
|
|||
int64_t maxBufSize = 0;
|
||||
SMFInfo minfo;
|
||||
|
||||
taosHashEmpty(pfs->metaCache);
|
||||
taosHashClear(pfs->metaCache);
|
||||
|
||||
// No meta file, just return
|
||||
if (pfs->cstatus->pmf == NULL) return 0;
|
||||
|
|
|
@ -140,7 +140,7 @@ int32_t taosHashRemoveWithData(SHashObj *pHashObj, const void *key, size_t keyLe
|
|||
|
||||
int32_t taosHashCondTraverse(SHashObj *pHashObj, bool (*fp)(void *, void *), void *param);
|
||||
|
||||
void taosHashEmpty(SHashObj *pHashObj);
|
||||
void taosHashClear(SHashObj *pHashObj);
|
||||
|
||||
/**
|
||||
* clean up hash table
|
||||
|
|
|
@ -144,6 +144,14 @@ static FORCE_INLINE SHashNode *doUpdateHashNode(SHashObj *pHashObj, SHashEntry*
|
|||
*/
|
||||
static void pushfrontNodeInEntryList(SHashEntry *pEntry, SHashNode *pNode);
|
||||
|
||||
/**
|
||||
* Check whether the hash table is empty or not.
|
||||
*
|
||||
* @param pHashObj the hash table object
|
||||
* @return if the hash table is empty or not
|
||||
*/
|
||||
static FORCE_INLINE bool taosHashTableEmpty(const SHashObj *pHashObj);
|
||||
|
||||
/**
|
||||
* Get the next element in hash table for iterator
|
||||
* @param pIter
|
||||
|
@ -195,7 +203,16 @@ void taosHashSetEqualFp(SHashObj *pHashObj, _equal_fn_t fp) {
|
|||
}
|
||||
}
|
||||
|
||||
int32_t taosHashGetSize(const SHashObj *pHashObj) { return (int32_t)((pHashObj == NULL) ? 0 : pHashObj->size); }
|
||||
int32_t taosHashGetSize(const SHashObj *pHashObj) {
|
||||
if (!pHashObj) {
|
||||
return 0;
|
||||
}
|
||||
return (int32_t)atomic_load_64(&pHashObj->size);
|
||||
}
|
||||
|
||||
static FORCE_INLINE bool taosHashTableEmpty(const SHashObj *pHashObj) {
|
||||
return taosHashGetSize(pHashObj) == 0;
|
||||
}
|
||||
|
||||
int32_t taosHashPut(SHashObj *pHashObj, const void *key, size_t keyLen, void *data, size_t size) {
|
||||
uint32_t hashVal = (*pHashObj->hashFp)(key, (uint32_t)keyLen);
|
||||
|
@ -281,7 +298,7 @@ void *taosHashGet(SHashObj *pHashObj, const void *key, size_t keyLen) {
|
|||
}
|
||||
|
||||
void* taosHashGetClone(SHashObj *pHashObj, const void *key, size_t keyLen, void (*fp)(void *), void* d, size_t dsize) {
|
||||
if (pHashObj->size <= 0 || keyLen == 0 || key == NULL) {
|
||||
if (taosHashTableEmpty(pHashObj) || keyLen == 0 || key == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -338,7 +355,7 @@ int32_t taosHashRemove(SHashObj *pHashObj, const void *key, size_t keyLen) {
|
|||
}
|
||||
|
||||
int32_t taosHashRemoveWithData(SHashObj *pHashObj, const void *key, size_t keyLen, void *data, size_t dsize) {
|
||||
if (pHashObj == NULL || pHashObj->size <= 0) {
|
||||
if (pHashObj == NULL || taosHashTableEmpty(pHashObj)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -405,7 +422,7 @@ int32_t taosHashRemoveWithData(SHashObj *pHashObj, const void *key, size_t keyLe
|
|||
}
|
||||
|
||||
int32_t taosHashCondTraverse(SHashObj *pHashObj, bool (*fp)(void *, void *), void *param) {
|
||||
if (pHashObj == NULL || pHashObj->size == 0) {
|
||||
if (pHashObj == NULL || taosHashTableEmpty(pHashObj)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -478,7 +495,7 @@ int32_t taosHashCondTraverse(SHashObj *pHashObj, bool (*fp)(void *, void *), voi
|
|||
return 0;
|
||||
}
|
||||
|
||||
void taosHashEmpty(SHashObj *pHashObj) {
|
||||
void taosHashClear(SHashObj *pHashObj) {
|
||||
if (pHashObj == NULL) {
|
||||
return;
|
||||
}
|
||||
|
@ -517,7 +534,7 @@ void taosHashCleanup(SHashObj *pHashObj) {
|
|||
return;
|
||||
}
|
||||
|
||||
taosHashEmpty(pHashObj);
|
||||
taosHashClear(pHashObj);
|
||||
tfree(pHashObj->hashList);
|
||||
|
||||
// destroy mem block
|
||||
|
@ -535,7 +552,7 @@ void taosHashCleanup(SHashObj *pHashObj) {
|
|||
|
||||
// for profile only
|
||||
int32_t taosHashGetMaxOverflowLinkLength(const SHashObj *pHashObj) {
|
||||
if (pHashObj == NULL || pHashObj->size == 0) {
|
||||
if (pHashObj == NULL || taosHashTableEmpty(pHashObj)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue