[TD-814] change the key of httpContext
This commit is contained in:
parent
91bd6fa944
commit
36afb75940
|
@ -148,7 +148,7 @@ void taos_init_imp() {
|
||||||
refreshTime = refreshTime < 10 ? 10 : refreshTime;
|
refreshTime = refreshTime < 10 ? 10 : refreshTime;
|
||||||
|
|
||||||
if (tscCacheHandle == NULL) {
|
if (tscCacheHandle == NULL) {
|
||||||
tscCacheHandle = taosCacheInit(TSDB_DATA_TYPE_BINARY, refreshTime, false, NULL);
|
tscCacheHandle = taosCacheInit(TSDB_DATA_TYPE_BINARY, refreshTime, false, NULL, "client");
|
||||||
}
|
}
|
||||||
|
|
||||||
tscDebug("client is initialized successfully");
|
tscDebug("client is initialized successfully");
|
||||||
|
|
|
@ -68,7 +68,7 @@ int32_t mnodeInitProfile() {
|
||||||
mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_KILL_STREAM, mnodeProcessKillStreamMsg);
|
mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_KILL_STREAM, mnodeProcessKillStreamMsg);
|
||||||
mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_KILL_CONN, mnodeProcessKillConnectionMsg);
|
mnodeAddWriteMsgHandle(TSDB_MSG_TYPE_CM_KILL_CONN, mnodeProcessKillConnectionMsg);
|
||||||
|
|
||||||
tsMnodeConnCache = taosCacheInitWithCb(TSDB_DATA_TYPE_BINARY, CONN_CHECK_TIME,false, mnodeFreeConn);
|
tsMnodeConnCache = taosCacheInitWithCb(TSDB_DATA_TYPE_BINARY, CONN_CHECK_TIME,false, mnodeFreeConn, "profile");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -65,7 +65,7 @@ int32_t mnodeInitShow() {
|
||||||
mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_CONNECT, mnodeProcessConnectMsg);
|
mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_CONNECT, mnodeProcessConnectMsg);
|
||||||
mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_USE_DB, mnodeProcessUseMsg);
|
mnodeAddReadMsgHandle(TSDB_MSG_TYPE_CM_USE_DB, mnodeProcessUseMsg);
|
||||||
|
|
||||||
tsMnodeShowCache = taosCacheInitWithCb(TSDB_DATA_TYPE_BINARY, 5, false, mnodeFreeShowObj);
|
tsMnodeShowCache = taosCacheInitWithCb(TSDB_DATA_TYPE_BINARY, 5, false, mnodeFreeShowObj, "show");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,12 +53,12 @@ static void httpDestroyContext(void *data) {
|
||||||
httpFreeJsonBuf(pContext);
|
httpFreeJsonBuf(pContext);
|
||||||
httpFreeMultiCmds(pContext);
|
httpFreeMultiCmds(pContext);
|
||||||
|
|
||||||
httpDebug("context:%p, is destroyed, refCount:%d", pContext, pContext->refCount);
|
httpDebug("context:%p, is destroyed, refCount:%d data:%p", pContext, pContext->refCount, data);
|
||||||
tfree(pContext);
|
tfree(pContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool httpInitContexts() {
|
bool httpInitContexts() {
|
||||||
tsHttpServer.contextCache = taosCacheInitWithCb(TSDB_DATA_TYPE_BINARY, 2, false, httpDestroyContext);
|
tsHttpServer.contextCache = taosCacheInitWithCb(TSDB_DATA_TYPE_BINARY, 2, false, httpDestroyContext, "restc");
|
||||||
if (tsHttpServer.contextCache == NULL) {
|
if (tsHttpServer.contextCache == NULL) {
|
||||||
httpError("failed to init context cache");
|
httpError("failed to init context cache");
|
||||||
return false;
|
return false;
|
||||||
|
@ -103,17 +103,14 @@ HttpContext *httpCreateContext(int32_t fd) {
|
||||||
HttpContext *pContext = calloc(1, sizeof(HttpContext));
|
HttpContext *pContext = calloc(1, sizeof(HttpContext));
|
||||||
if (pContext == NULL) return NULL;
|
if (pContext == NULL) return NULL;
|
||||||
|
|
||||||
char contextStr[16] = {0};
|
|
||||||
int32_t keySize = snprintf(contextStr, sizeof(contextStr), "%p", pContext);
|
|
||||||
|
|
||||||
pContext->fd = fd;
|
pContext->fd = fd;
|
||||||
pContext->httpVersion = HTTP_VERSION_10;
|
pContext->httpVersion = HTTP_VERSION_10;
|
||||||
pContext->lastAccessTime = taosGetTimestampSec();
|
pContext->lastAccessTime = taosGetTimestampSec();
|
||||||
pContext->state = HTTP_CONTEXT_STATE_READY;
|
pContext->state = HTTP_CONTEXT_STATE_READY;
|
||||||
|
|
||||||
HttpContext **ppContext = taosCachePut(tsHttpServer.contextCache, contextStr, keySize, &pContext, sizeof(HttpContext *), 3);
|
HttpContext **ppContext = taosCachePut(tsHttpServer.contextCache, &pContext, sizeof(void *), &pContext, sizeof(void *), 3);
|
||||||
pContext->ppContext = ppContext;
|
pContext->ppContext = ppContext;
|
||||||
httpDebug("context:%p, fd:%d, is created, item:%p", pContext, fd, ppContext);
|
httpDebug("context:%p, fd:%d, is created, data:%p", pContext, fd, ppContext);
|
||||||
|
|
||||||
// set the ref to 0
|
// set the ref to 0
|
||||||
taosCacheRelease(tsHttpServer.contextCache, (void**)&ppContext, false);
|
taosCacheRelease(tsHttpServer.contextCache, (void**)&ppContext, false);
|
||||||
|
@ -122,16 +119,13 @@ HttpContext *httpCreateContext(int32_t fd) {
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpContext *httpGetContext(void *ptr) {
|
HttpContext *httpGetContext(void *ptr) {
|
||||||
char contextStr[16] = {0};
|
HttpContext **ppContext = taosCacheAcquireByKey(tsHttpServer.contextCache, &ptr, sizeof(HttpContext *));
|
||||||
int32_t len = snprintf(contextStr, sizeof(contextStr), "%p", ptr);
|
|
||||||
|
|
||||||
HttpContext **ppContext = taosCacheAcquireByKey(tsHttpServer.contextCache, contextStr, len);
|
|
||||||
|
|
||||||
if (ppContext) {
|
if (ppContext) {
|
||||||
HttpContext *pContext = *ppContext;
|
HttpContext *pContext = *ppContext;
|
||||||
if (pContext) {
|
if (pContext) {
|
||||||
int32_t refCount = atomic_add_fetch_32(&pContext->refCount, 1);
|
int32_t refCount = atomic_add_fetch_32(&pContext->refCount, 1);
|
||||||
httpDebug("context:%p, fd:%d, is accquired, refCount:%d", pContext, pContext->fd, refCount);
|
httpDebug("context:%p, fd:%d, is accquired, data:%p refCount:%d", pContext, pContext->fd, ppContext, refCount);
|
||||||
return pContext;
|
return pContext;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -141,9 +135,10 @@ HttpContext *httpGetContext(void *ptr) {
|
||||||
void httpReleaseContext(HttpContext *pContext) {
|
void httpReleaseContext(HttpContext *pContext) {
|
||||||
int32_t refCount = atomic_sub_fetch_32(&pContext->refCount, 1);
|
int32_t refCount = atomic_sub_fetch_32(&pContext->refCount, 1);
|
||||||
assert(refCount >= 0);
|
assert(refCount >= 0);
|
||||||
httpDebug("context:%p, is releasd, refCount:%d", pContext, refCount);
|
|
||||||
|
|
||||||
HttpContext **ppContext = pContext->ppContext;
|
HttpContext **ppContext = pContext->ppContext;
|
||||||
|
httpDebug("context:%p, is releasd, data:%p refCount:%d", pContext, ppContext, refCount);
|
||||||
|
|
||||||
if (tsHttpServer.contextCache != NULL) {
|
if (tsHttpServer.contextCache != NULL) {
|
||||||
taosCacheRelease(tsHttpServer.contextCache, (void **)(&ppContext), false);
|
taosCacheRelease(tsHttpServer.contextCache, (void **)(&ppContext), false);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -115,7 +115,7 @@ void httpCleanUpSessions() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool httpInitSessions() {
|
bool httpInitSessions() {
|
||||||
tsHttpServer.sessionCache = taosCacheInitWithCb(TSDB_DATA_TYPE_BINARY, 5, false, httpDestroySession);
|
tsHttpServer.sessionCache = taosCacheInitWithCb(TSDB_DATA_TYPE_BINARY, 5, false, httpDestroySession, "rests");
|
||||||
if (tsHttpServer.sessionCache == NULL) {
|
if (tsHttpServer.sessionCache == NULL) {
|
||||||
httpError("failed to init session cache");
|
httpError("failed to init session cache");
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -65,6 +65,7 @@ typedef struct {
|
||||||
int64_t totalSize; // total allocated buffer in this hash table, SCacheObj is not included.
|
int64_t totalSize; // total allocated buffer in this hash table, SCacheObj is not included.
|
||||||
int64_t refreshTime;
|
int64_t refreshTime;
|
||||||
STrashElem * pTrash;
|
STrashElem * pTrash;
|
||||||
|
const char * cacheName;
|
||||||
// void * tmrCtrl;
|
// void * tmrCtrl;
|
||||||
// void * pTimer;
|
// void * pTimer;
|
||||||
SCacheStatis statistics;
|
SCacheStatis statistics;
|
||||||
|
@ -90,7 +91,7 @@ typedef struct {
|
||||||
* @param fn free resource callback function
|
* @param fn free resource callback function
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
SCacheObj *taosCacheInit(int32_t keyType, int64_t refreshTimeInSeconds, bool extendLifespan, __cache_freeres_fn_t fn);
|
SCacheObj *taosCacheInit(int32_t keyType, int64_t refreshTimeInSeconds, bool extendLifespan, __cache_freeres_fn_t fn, const char *cacheName);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* initialize the cache object and set the free object callback function
|
* initialize the cache object and set the free object callback function
|
||||||
|
@ -98,7 +99,7 @@ SCacheObj *taosCacheInit(int32_t keyType, int64_t refreshTimeInSeconds, bool ext
|
||||||
* @param freeCb
|
* @param freeCb
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
SCacheObj *taosCacheInitWithCb(int32_t keyType, int64_t refreshTimeInSeconds, bool extendLifespan, __cache_freeres_fn_t fn);
|
SCacheObj *taosCacheInitWithCb(int32_t keyType, int64_t refreshTimeInSeconds, bool extendLifespan, __cache_freeres_fn_t fn, const char *cacheName);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* add data into cache
|
* add data into cache
|
||||||
|
|
|
@ -118,8 +118,10 @@ static FORCE_INLINE void taosCacheReleaseNode(SCacheObj *pCacheObj, SCacheDataNo
|
||||||
|
|
||||||
int32_t size = pNode->size;
|
int32_t size = pNode->size;
|
||||||
taosHashRemove(pCacheObj->pHashTable, pNode->key, pNode->keySize);
|
taosHashRemove(pCacheObj->pHashTable, pNode->key, pNode->keySize);
|
||||||
|
|
||||||
uDebug("key:%p, is removed from cache,total:%" PRId64 ",size:%dbytes", pNode->key, pCacheObj->totalSize, size);
|
uDebug("key:%p, %p is destroyed from cache, totalNum:%d totalSize:%" PRId64 "bytes size:%dbytes, cacheName:%s",
|
||||||
|
pNode->key, pNode->data, (int32_t)taosHashGetSize(pCacheObj->pHashTable), pCacheObj->totalSize, size,
|
||||||
|
pCacheObj->cacheName);
|
||||||
if (pCacheObj->freeFp) pCacheObj->freeFp(pNode->data);
|
if (pCacheObj->freeFp) pCacheObj->freeFp(pNode->data);
|
||||||
free(pNode);
|
free(pNode);
|
||||||
}
|
}
|
||||||
|
@ -224,7 +226,7 @@ static void doCleanupDataCache(SCacheObj *pCacheObj);
|
||||||
*/
|
*/
|
||||||
static void* taosCacheRefresh(void *handle);
|
static void* taosCacheRefresh(void *handle);
|
||||||
|
|
||||||
SCacheObj *taosCacheInitWithCb(int32_t keyType, int64_t refreshTimeInSeconds, bool extendLifespan, __cache_freeres_fn_t fn) {
|
SCacheObj *taosCacheInitWithCb(int32_t keyType, int64_t refreshTimeInSeconds, bool extendLifespan, __cache_freeres_fn_t fn, const char* cacheName) {
|
||||||
if (refreshTimeInSeconds <= 0) {
|
if (refreshTimeInSeconds <= 0) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -236,6 +238,7 @@ SCacheObj *taosCacheInitWithCb(int32_t keyType, int64_t refreshTimeInSeconds, bo
|
||||||
}
|
}
|
||||||
|
|
||||||
pCacheObj->pHashTable = taosHashInit(128, taosGetDefaultHashFunction(keyType), false);
|
pCacheObj->pHashTable = taosHashInit(128, taosGetDefaultHashFunction(keyType), false);
|
||||||
|
pCacheObj->cacheName = cacheName;
|
||||||
if (pCacheObj->pHashTable == NULL) {
|
if (pCacheObj->pHashTable == NULL) {
|
||||||
free(pCacheObj);
|
free(pCacheObj);
|
||||||
uError("failed to allocate memory, reason:%s", strerror(errno));
|
uError("failed to allocate memory, reason:%s", strerror(errno));
|
||||||
|
@ -265,8 +268,8 @@ SCacheObj *taosCacheInitWithCb(int32_t keyType, int64_t refreshTimeInSeconds, bo
|
||||||
return pCacheObj;
|
return pCacheObj;
|
||||||
}
|
}
|
||||||
|
|
||||||
SCacheObj *taosCacheInit(int32_t keyType, int64_t refreshTimeInSeconds, bool extendLifespan, __cache_freeres_fn_t fn) {
|
SCacheObj *taosCacheInit(int32_t keyType, int64_t refreshTimeInSeconds, bool extendLifespan, __cache_freeres_fn_t fn, const char* cacheName) {
|
||||||
return taosCacheInitWithCb(keyType, refreshTimeInSeconds, extendLifespan, fn);
|
return taosCacheInitWithCb(keyType, refreshTimeInSeconds, extendLifespan, fn, cacheName);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *taosCachePut(SCacheObj *pCacheObj, const void *key, size_t keyLen, const void *pData, size_t dataSize, int duration) {
|
void *taosCachePut(SCacheObj *pCacheObj, const void *key, size_t keyLen, const void *pData, size_t dataSize, int duration) {
|
||||||
|
@ -284,19 +287,21 @@ void *taosCachePut(SCacheObj *pCacheObj, const void *key, size_t keyLen, const v
|
||||||
pNode = taosAddToCacheImpl(pCacheObj, key, keyLen, pData, dataSize, duration * 1000L);
|
pNode = taosAddToCacheImpl(pCacheObj, key, keyLen, pData, dataSize, duration * 1000L);
|
||||||
if (NULL != pNode) {
|
if (NULL != pNode) {
|
||||||
pCacheObj->totalSize += pNode->size;
|
pCacheObj->totalSize += pNode->size;
|
||||||
|
|
||||||
uDebug("key:%p, %p added into cache, added:%" PRIu64 ", expire:%" PRIu64 ", total:%" PRId64 ", size:%" PRId64 " bytes",
|
uDebug("key:%p, %p added into cache, added:%" PRIu64 ", expire:%" PRIu64 ", totalNum:%d totalSize:%" PRId64
|
||||||
key, pNode, pNode->addedTime, (pNode->lifespan * pNode->extendFactor + pNode->addedTime), pCacheObj->totalSize, dataSize);
|
"bytes size:%" PRId64 "bytes, cacheName:%s",
|
||||||
|
key, pNode->data, pNode->addedTime, (pNode->lifespan * pNode->extendFactor + pNode->addedTime),
|
||||||
|
(int32_t)taosHashGetSize(pCacheObj->pHashTable), pCacheObj->totalSize, dataSize, pCacheObj->cacheName);
|
||||||
} else {
|
} else {
|
||||||
uError("key:%p, failed to added into cache, out of memory", key);
|
uError("key:%p, failed to added into cache, out of memory, cacheName:%s", key, pCacheObj->cacheName);
|
||||||
}
|
}
|
||||||
} else { // old data exists, update the node
|
} else { // old data exists, update the node
|
||||||
pNode = taosUpdateCacheImpl(pCacheObj, pOld, key, keyLen, pData, dataSize, duration * 1000L);
|
pNode = taosUpdateCacheImpl(pCacheObj, pOld, key, keyLen, pData, dataSize, duration * 1000L);
|
||||||
uDebug("key:%p, %p exist in cache, updated", key, pNode);
|
uDebug("key:%p, %p exist in cache, updated, cacheName:%s", key, pNode->data, pCacheObj->cacheName);
|
||||||
}
|
}
|
||||||
|
|
||||||
__cache_unlock(pCacheObj);
|
__cache_unlock(pCacheObj);
|
||||||
|
|
||||||
return (pNode != NULL) ? pNode->data : NULL;
|
return (pNode != NULL) ? pNode->data : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -327,10 +332,10 @@ void *taosCacheAcquireByKey(SCacheObj *pCacheObj, const void *key, size_t keyLen
|
||||||
|
|
||||||
if (ptNode != NULL) {
|
if (ptNode != NULL) {
|
||||||
atomic_add_fetch_32(&pCacheObj->statistics.hitCount, 1);
|
atomic_add_fetch_32(&pCacheObj->statistics.hitCount, 1);
|
||||||
uDebug("key:%p, is retrieved from cache, %p refcnt:%d", key, (*ptNode), ref);
|
uDebug("key:%p, %p is retrieved from cache, refcnt:%d, cacheName:%s", key, (*ptNode)->data, ref, pCacheObj->cacheName);
|
||||||
} else {
|
} else {
|
||||||
atomic_add_fetch_32(&pCacheObj->statistics.missCount, 1);
|
atomic_add_fetch_32(&pCacheObj->statistics.missCount, 1);
|
||||||
uDebug("key:%p, not in cache, retrieved failed", key);
|
uDebug("key:%p, not in cache, retrieved failed, cacheName:%s", key, pCacheObj->cacheName);
|
||||||
}
|
}
|
||||||
|
|
||||||
atomic_add_fetch_32(&pCacheObj->statistics.totalAccess, 1);
|
atomic_add_fetch_32(&pCacheObj->statistics.totalAccess, 1);
|
||||||
|
@ -350,17 +355,18 @@ void* taosCacheUpdateExpireTimeByName(SCacheObj *pCacheObj, const char *key, siz
|
||||||
(*ptNode)->extendFactor += 1;
|
(*ptNode)->extendFactor += 1;
|
||||||
// (*ptNode)->lifespan = expireTime;
|
// (*ptNode)->lifespan = expireTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
__cache_unlock(pCacheObj);
|
__cache_unlock(pCacheObj);
|
||||||
|
|
||||||
if (ptNode != NULL) {
|
if (ptNode != NULL) {
|
||||||
atomic_add_fetch_32(&pCacheObj->statistics.hitCount, 1);
|
atomic_add_fetch_32(&pCacheObj->statistics.hitCount, 1);
|
||||||
uDebug("key:%p, expireTime is updated in cache, %p refcnt:%d", key, (*ptNode), T_REF_VAL_GET(*ptNode));
|
uDebug("key:%p, %p expireTime is updated in cache, refcnt:%d, cacheName:%s", key, (*ptNode)->data,
|
||||||
|
T_REF_VAL_GET(*ptNode), pCacheObj->cacheName);
|
||||||
} else {
|
} else {
|
||||||
atomic_add_fetch_32(&pCacheObj->statistics.missCount, 1);
|
atomic_add_fetch_32(&pCacheObj->statistics.missCount, 1);
|
||||||
uDebug("key:%p, not in cache, retrieved failed", key);
|
uDebug("key:%p, not in cache, retrieved failed, cacheName:%s", key, pCacheObj->cacheName);
|
||||||
}
|
}
|
||||||
|
|
||||||
atomic_add_fetch_32(&pCacheObj->statistics.totalAccess, 1);
|
atomic_add_fetch_32(&pCacheObj->statistics.totalAccess, 1);
|
||||||
return (ptNode != NULL) ? (*ptNode)->data : NULL;
|
return (ptNode != NULL) ? (*ptNode)->data : NULL;
|
||||||
}
|
}
|
||||||
|
@ -375,9 +381,9 @@ void *taosCacheAcquireByData(SCacheObj *pCacheObj, void *data) {
|
||||||
uError("key: %p the data from cache is invalid", ptNode);
|
uError("key: %p the data from cache is invalid", ptNode);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t ref = T_REF_INC(ptNode);
|
int32_t ref = T_REF_INC(ptNode);
|
||||||
uDebug("%p acquired by data in cache, refcnt:%d", ptNode, ref)
|
uDebug("%p acquired by data in cache, refcnt:%d, cacheName:%s", ptNode->data, ref, pCacheObj->cacheName);
|
||||||
|
|
||||||
// if the remained life span is less then the (*ptNode)->lifeSpan, add up one lifespan
|
// if the remained life span is less then the (*ptNode)->lifeSpan, add up one lifespan
|
||||||
if (pCacheObj->extendLifespan) {
|
if (pCacheObj->extendLifespan) {
|
||||||
|
@ -385,7 +391,8 @@ void *taosCacheAcquireByData(SCacheObj *pCacheObj, void *data) {
|
||||||
|
|
||||||
if ((now - ptNode->addedTime) < ptNode->lifespan * ptNode->extendFactor) {
|
if ((now - ptNode->addedTime) < ptNode->lifespan * ptNode->extendFactor) {
|
||||||
ptNode->extendFactor += 1;
|
ptNode->extendFactor += 1;
|
||||||
uDebug("key:%p extend life time to %"PRId64, ptNode, ptNode->lifespan * ptNode->extendFactor + ptNode->addedTime);
|
uDebug("%p extend life time to %" PRId64, ptNode->data,
|
||||||
|
ptNode->lifespan * ptNode->extendFactor + ptNode->addedTime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -424,14 +431,14 @@ void taosCacheRelease(SCacheObj *pCacheObj, void **data, bool _remove) {
|
||||||
|
|
||||||
SCacheDataNode *pNode = (SCacheDataNode *)((char *)(*data) - offset);
|
SCacheDataNode *pNode = (SCacheDataNode *)((char *)(*data) - offset);
|
||||||
if (pNode->signature != (uint64_t)pNode) {
|
if (pNode->signature != (uint64_t)pNode) {
|
||||||
uError("key:%p, release invalid cache data", pNode);
|
uError("%p, release invalid cache data", pNode);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
*data = NULL;
|
*data = NULL;
|
||||||
int16_t ref = T_REF_DEC(pNode);
|
int16_t ref = T_REF_DEC(pNode);
|
||||||
uDebug("%p data released, refcnt:%d", pNode, ref);
|
uDebug("key:%p, %p is released, refcnt:%d, cacheName:%s", pNode->key, pNode->data, ref, pCacheObj->cacheName);
|
||||||
|
|
||||||
if (_remove && (!pNode->inTrashCan)) {
|
if (_remove && (!pNode->inTrashCan)) {
|
||||||
__cache_wr_lock(pCacheObj);
|
__cache_wr_lock(pCacheObj);
|
||||||
|
|
||||||
|
@ -474,6 +481,7 @@ void taosCacheCleanup(SCacheObj *pCacheObj) {
|
||||||
pCacheObj->deleting = 1;
|
pCacheObj->deleting = 1;
|
||||||
pthread_join(pCacheObj->refreshWorker, NULL);
|
pthread_join(pCacheObj->refreshWorker, NULL);
|
||||||
|
|
||||||
|
uInfo("cacheName:%p, will be cleanuped", pCacheObj->cacheName);
|
||||||
doCleanupDataCache(pCacheObj);
|
doCleanupDataCache(pCacheObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -522,7 +530,7 @@ void taosAddToTrash(SCacheObj *pCacheObj, SCacheDataNode *pNode) {
|
||||||
pNode->inTrashCan = true;
|
pNode->inTrashCan = true;
|
||||||
pCacheObj->numOfElemsInTrash++;
|
pCacheObj->numOfElemsInTrash++;
|
||||||
|
|
||||||
uDebug("key:%p, %p move to trash, numOfElem in trash:%d", pNode->key, pNode, pCacheObj->numOfElemsInTrash);
|
uDebug("key:%p, %p move to trash, numOfElem in trash:%d", pNode->key, pNode->data, pCacheObj->numOfElemsInTrash);
|
||||||
}
|
}
|
||||||
|
|
||||||
void taosRemoveFromTrashCan(SCacheObj *pCacheObj, STrashElem *pElem) {
|
void taosRemoveFromTrashCan(SCacheObj *pCacheObj, STrashElem *pElem) {
|
||||||
|
@ -547,7 +555,7 @@ void taosRemoveFromTrashCan(SCacheObj *pCacheObj, STrashElem *pElem) {
|
||||||
pCacheObj->freeFp(pElem->pData->data);
|
pCacheObj->freeFp(pElem->pData->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
uError("-------------------free obj:%p", pElem->pData);
|
uError("free obj:%p", pElem->pData);
|
||||||
free(pElem->pData);
|
free(pElem->pData);
|
||||||
free(pElem);
|
free(pElem);
|
||||||
}
|
}
|
||||||
|
@ -574,7 +582,7 @@ void taosTrashCanEmpty(SCacheObj *pCacheObj, bool force) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (force || (T_REF_VAL_GET(pElem->pData) == 0)) {
|
if (force || (T_REF_VAL_GET(pElem->pData) == 0)) {
|
||||||
uDebug("key:%p, %p removed from trash. numOfElem in trash:%d", pElem->pData->key, pElem->pData,
|
uDebug("key:%p, %p removed from trash. numOfElem in trash:%d", pElem->pData->key, pElem->pData->data,
|
||||||
pCacheObj->numOfElemsInTrash - 1);
|
pCacheObj->numOfElemsInTrash - 1);
|
||||||
STrashElem *p = pElem;
|
STrashElem *p = pElem;
|
||||||
|
|
||||||
|
@ -598,7 +606,8 @@ void doCleanupDataCache(SCacheObj *pCacheObj) {
|
||||||
if (T_REF_VAL_GET(pNode) <= 0) {
|
if (T_REF_VAL_GET(pNode) <= 0) {
|
||||||
taosCacheReleaseNode(pCacheObj, pNode);
|
taosCacheReleaseNode(pCacheObj, pNode);
|
||||||
} else {
|
} else {
|
||||||
uDebug("key:%p, will not remove from cache, refcnt:%d", pNode->key, T_REF_VAL_GET(pNode));
|
uDebug("key:%p, %p will not remove from cache, refcnt:%d, cacheName:%s", pNode->key, pNode->data,
|
||||||
|
T_REF_VAL_GET(pNode), pCacheObj->cacheName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
taosHashDestroyIter(pIter);
|
taosHashDestroyIter(pIter);
|
||||||
|
|
|
@ -19,7 +19,7 @@ int32_t tsMaxMeterConnections = 200;
|
||||||
// test cache
|
// test cache
|
||||||
TEST(testCase, client_cache_test) {
|
TEST(testCase, client_cache_test) {
|
||||||
const int32_t REFRESH_TIME_IN_SEC = 2;
|
const int32_t REFRESH_TIME_IN_SEC = 2;
|
||||||
SCacheObj* tscCacheHandle = taosCacheInit(TSDB_DATA_TYPE_BINARY, REFRESH_TIME_IN_SEC, 0, NULL);
|
SCacheObj* tscCacheHandle = taosCacheInit(TSDB_DATA_TYPE_BINARY, REFRESH_TIME_IN_SEC, 0, NULL, "test");
|
||||||
|
|
||||||
const char* key1 = "test1";
|
const char* key1 = "test1";
|
||||||
char data1[] = "test11";
|
char data1[] = "test11";
|
||||||
|
@ -105,7 +105,7 @@ TEST(testCase, client_cache_test) {
|
||||||
|
|
||||||
TEST(testCase, cache_resize_test) {
|
TEST(testCase, cache_resize_test) {
|
||||||
const int32_t REFRESH_TIME_IN_SEC = 2;
|
const int32_t REFRESH_TIME_IN_SEC = 2;
|
||||||
auto* pCache = taosCacheInit(TSDB_DATA_TYPE_BINARY, REFRESH_TIME_IN_SEC, false, NULL);
|
auto* pCache = taosCacheInit(TSDB_DATA_TYPE_BINARY, REFRESH_TIME_IN_SEC, false, NULL, "test");
|
||||||
|
|
||||||
char key[256] = {0};
|
char key[256] = {0};
|
||||||
char data[1024] = "abcdefghijk";
|
char data[1024] = "abcdefghijk";
|
||||||
|
|
|
@ -284,7 +284,7 @@ int32_t vnodeOpen(int32_t vnode, char *rootDir) {
|
||||||
cqStart(pVnode->cq);
|
cqStart(pVnode->cq);
|
||||||
|
|
||||||
const int32_t REFRESH_HANDLE_INTERVAL = 2; // every 2 seconds, rfresh handle pool
|
const int32_t REFRESH_HANDLE_INTERVAL = 2; // every 2 seconds, rfresh handle pool
|
||||||
pVnode->qHandlePool = taosCacheInit(TSDB_DATA_TYPE_BIGINT, REFRESH_HANDLE_INTERVAL, true, vnodeFreeqHandle);
|
pVnode->qHandlePool = taosCacheInit(TSDB_DATA_TYPE_BIGINT, REFRESH_HANDLE_INTERVAL, true, vnodeFreeqHandle, "qhandle");
|
||||||
|
|
||||||
pVnode->events = NULL;
|
pVnode->events = NULL;
|
||||||
pVnode->status = TAOS_VN_STATUS_READY;
|
pVnode->status = TAOS_VN_STATUS_READY;
|
||||||
|
|
|
@ -114,10 +114,11 @@ echo "mDebugFlag 135" >> $TAOS_CFG
|
||||||
echo "sdbDebugFlag 135" >> $TAOS_CFG
|
echo "sdbDebugFlag 135" >> $TAOS_CFG
|
||||||
echo "dDebugFlag 135" >> $TAOS_CFG
|
echo "dDebugFlag 135" >> $TAOS_CFG
|
||||||
echo "vDebugFlag 135" >> $TAOS_CFG
|
echo "vDebugFlag 135" >> $TAOS_CFG
|
||||||
|
echo "tsdbDebugFlag 135" >> $TAOS_CFG
|
||||||
echo "cDebugFlag 135" >> $TAOS_CFG
|
echo "cDebugFlag 135" >> $TAOS_CFG
|
||||||
echo "jnidebugFlag 135" >> $TAOS_CFG
|
echo "jnidebugFlag 135" >> $TAOS_CFG
|
||||||
echo "odbcdebugFlag 135" >> $TAOS_CFG
|
echo "odbcdebugFlag 135" >> $TAOS_CFG
|
||||||
echo "httpDebugFlag 143" >> $TAOS_CFG
|
echo "httpDebugFlag 135" >> $TAOS_CFG
|
||||||
echo "monitorDebugFlag 131" >> $TAOS_CFG
|
echo "monitorDebugFlag 131" >> $TAOS_CFG
|
||||||
echo "mqttDebugFlag 131" >> $TAOS_CFG
|
echo "mqttDebugFlag 131" >> $TAOS_CFG
|
||||||
echo "qdebugFlag 135" >> $TAOS_CFG
|
echo "qdebugFlag 135" >> $TAOS_CFG
|
||||||
|
@ -132,7 +133,7 @@ echo "monitorInterval 1" >> $TAOS_CFG
|
||||||
echo "http 0" >> $TAOS_CFG
|
echo "http 0" >> $TAOS_CFG
|
||||||
echo "numOfThreadsPerCore 2.0" >> $TAOS_CFG
|
echo "numOfThreadsPerCore 2.0" >> $TAOS_CFG
|
||||||
echo "defaultPass taosdata" >> $TAOS_CFG
|
echo "defaultPass taosdata" >> $TAOS_CFG
|
||||||
echo "numOfLogLines 100000000" >> $TAOS_CFG
|
echo "numOfLogLines 10000000" >> $TAOS_CFG
|
||||||
echo "mnodeEqualVnodeNum 0" >> $TAOS_CFG
|
echo "mnodeEqualVnodeNum 0" >> $TAOS_CFG
|
||||||
echo "clog 2" >> $TAOS_CFG
|
echo "clog 2" >> $TAOS_CFG
|
||||||
echo "statusInterval 1" >> $TAOS_CFG
|
echo "statusInterval 1" >> $TAOS_CFG
|
||||||
|
|
Loading…
Reference in New Issue