fix/TD-31622-avoid-refrence-prow
This commit is contained in:
parent
22fa18842d
commit
fee9a14b69
|
@ -1521,7 +1521,7 @@ static void mndCancelRetrieveIdx(SMnode *pMnode, void *pIter) {
|
||||||
if (p != NULL) {
|
if (p != NULL) {
|
||||||
SSdb *pSdb = pMnode->pSdb;
|
SSdb *pSdb = pMnode->pSdb;
|
||||||
sdbCancelFetch(pSdb, p->pSmaIter);
|
sdbCancelFetch(pSdb, p->pSmaIter);
|
||||||
sdbCancelFetch(pSdb, p->pIdxIter);
|
sdbCancelFetchByType(pSdb, p->pIdxIter, SDB_IDX);
|
||||||
}
|
}
|
||||||
taosMemoryFree(p);
|
taosMemoryFree(p);
|
||||||
}
|
}
|
||||||
|
|
|
@ -334,10 +334,19 @@ void *sdbFetchAll(SSdb *pSdb, ESdbType type, void *pIter, void **ppObj, ESdbStat
|
||||||
* @brief Cancel a traversal
|
* @brief Cancel a traversal
|
||||||
*
|
*
|
||||||
* @param pSdb The sdb object.
|
* @param pSdb The sdb object.
|
||||||
* @param type The initial iterator of table.
|
* @param pIter The initial iterator of table.
|
||||||
*/
|
*/
|
||||||
void sdbCancelFetch(SSdb *pSdb, void *pIter);
|
void sdbCancelFetch(SSdb *pSdb, void *pIter);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Cancel a traversal
|
||||||
|
*
|
||||||
|
* @param pSdb The sdb object.
|
||||||
|
* @param pIter The initial iterator of table.
|
||||||
|
* @param type The type of table.
|
||||||
|
*/
|
||||||
|
void sdbCancelFetchByType(SSdb *pSdb, void *pIter, ESdbType type);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Traverse a sdb
|
* @brief Traverse a sdb
|
||||||
*
|
*
|
||||||
|
|
|
@ -103,14 +103,14 @@ void sdbPrintOper(SSdb *pSdb, SSdbRow *pRow, const char *oper) {
|
||||||
EKeyType keyType = pSdb->keyTypes[pRow->type];
|
EKeyType keyType = pSdb->keyTypes[pRow->type];
|
||||||
|
|
||||||
if (keyType == SDB_KEY_BINARY) {
|
if (keyType == SDB_KEY_BINARY) {
|
||||||
mTrace("%s:%s, ref:%d oper:%s row:%p status:%s", sdbTableName(pRow->type), (char *)pRow->pObj, pRow->refCount, oper,
|
mTrace("%s:%s, ref:%d oper:%s row:%p row->pObj:%p status:%s", sdbTableName(pRow->type), (char *)pRow->pObj,
|
||||||
pRow->pObj, sdbStatusName(pRow->status));
|
pRow->refCount, oper, pRow, pRow->pObj, sdbStatusName(pRow->status));
|
||||||
} else if (keyType == SDB_KEY_INT32) {
|
} else if (keyType == SDB_KEY_INT32) {
|
||||||
mTrace("%s:%d, ref:%d oper:%s row:%p status:%s", sdbTableName(pRow->type), *(int32_t *)pRow->pObj, pRow->refCount,
|
mTrace("%s:%d, ref:%d oper:%s row:%p row->pObj:%p status:%s", sdbTableName(pRow->type), *(int32_t *)pRow->pObj,
|
||||||
oper, pRow->pObj, sdbStatusName(pRow->status));
|
pRow->refCount, oper, pRow, pRow->pObj, sdbStatusName(pRow->status));
|
||||||
} else if (keyType == SDB_KEY_INT64) {
|
} else if (keyType == SDB_KEY_INT64) {
|
||||||
mTrace("%s:%" PRId64 ", ref:%d oper:%s row:%p status:%s", sdbTableName(pRow->type), *(int64_t *)pRow->pObj,
|
mTrace("%s:%" PRId64 ", ref:%d oper:%s row:%p row->pObj:%p status:%s", sdbTableName(pRow->type),
|
||||||
pRow->refCount, oper, pRow->pObj, sdbStatusName(pRow->status));
|
*(int64_t *)pRow->pObj, pRow->refCount, oper, pRow, pRow->pObj, sdbStatusName(pRow->status));
|
||||||
} else {
|
} else {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -439,6 +439,7 @@ void *sdbFetchAll(SSdb *pSdb, ESdbType type, void *pIter, void **ppObj, ESdbStat
|
||||||
void sdbCancelFetch(SSdb *pSdb, void *pIter) {
|
void sdbCancelFetch(SSdb *pSdb, void *pIter) {
|
||||||
if (pIter == NULL) return;
|
if (pIter == NULL) return;
|
||||||
SSdbRow *pRow = *(SSdbRow **)pIter;
|
SSdbRow *pRow = *(SSdbRow **)pIter;
|
||||||
|
mTrace("cancel fetch row:%p", pRow);
|
||||||
SHashObj *hash = sdbGetHash(pSdb, pRow->type);
|
SHashObj *hash = sdbGetHash(pSdb, pRow->type);
|
||||||
if (hash == NULL) return;
|
if (hash == NULL) return;
|
||||||
|
|
||||||
|
@ -448,6 +449,17 @@ void sdbCancelFetch(SSdb *pSdb, void *pIter) {
|
||||||
sdbUnLock(pSdb, type);
|
sdbUnLock(pSdb, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sdbCancelFetchByType(SSdb *pSdb, void *pIter, ESdbType type) {
|
||||||
|
if (pIter == NULL) return;
|
||||||
|
if (type >= SDB_MAX || type < 0) return;
|
||||||
|
SHashObj *hash = sdbGetHash(pSdb, type);
|
||||||
|
if (hash == NULL) return;
|
||||||
|
|
||||||
|
sdbReadLock(pSdb, type);
|
||||||
|
taosHashCancelIterate(hash, pIter);
|
||||||
|
sdbUnLock(pSdb, type);
|
||||||
|
}
|
||||||
|
|
||||||
void sdbTraverse(SSdb *pSdb, ESdbType type, sdbTraverseFp fp, void *p1, void *p2, void *p3) {
|
void sdbTraverse(SSdb *pSdb, ESdbType type, sdbTraverseFp fp, void *p1, void *p2, void *p3) {
|
||||||
SHashObj *hash = sdbGetHash(pSdb, type);
|
SHashObj *hash = sdbGetHash(pSdb, type);
|
||||||
if (hash == NULL) return;
|
if (hash == NULL) return;
|
||||||
|
|
Loading…
Reference in New Issue