fix(tsdb/cache): copy entry before transfering to lru
This commit is contained in:
parent
884a94a7ad
commit
1bd0702a48
|
@ -678,14 +678,14 @@ int32_t tsdbCacheCommitNoLock(STsdb *pTsdb) {
|
||||||
|
|
||||||
static int32_t tsdbCacheGetValuesFromRocks(STsdb *pTsdb, size_t numKeys, const char *const *ppKeysList,
|
static int32_t tsdbCacheGetValuesFromRocks(STsdb *pTsdb, size_t numKeys, const char *const *ppKeysList,
|
||||||
size_t *pKeysListSizes, char ***pppValuesList, size_t **ppValuesListSizes) {
|
size_t *pKeysListSizes, char ***pppValuesList, size_t **ppValuesListSizes) {
|
||||||
char **valuesList = taosMemoryCalloc(numKeys, sizeof(char *));
|
char **valuesList = taosMemoryCalloc(numKeys, sizeof(char *));
|
||||||
if(!valuesList) return terrno;
|
if (!valuesList) return terrno;
|
||||||
size_t *valuesListSizes = taosMemoryCalloc(numKeys, sizeof(size_t));
|
size_t *valuesListSizes = taosMemoryCalloc(numKeys, sizeof(size_t));
|
||||||
if(!valuesListSizes) {
|
if (!valuesListSizes) {
|
||||||
taosMemoryFreeClear(valuesList);
|
taosMemoryFreeClear(valuesList);
|
||||||
return terrno;
|
return terrno;
|
||||||
}
|
}
|
||||||
char **errs = taosMemoryCalloc(numKeys, sizeof(char *));
|
char **errs = taosMemoryCalloc(numKeys, sizeof(char *));
|
||||||
if (!errs) {
|
if (!errs) {
|
||||||
taosMemoryFreeClear(valuesList);
|
taosMemoryFreeClear(valuesList);
|
||||||
taosMemoryFreeClear(valuesListSizes);
|
taosMemoryFreeClear(valuesListSizes);
|
||||||
|
@ -1178,7 +1178,7 @@ static int32_t tsdbCacheUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, SArray
|
||||||
size_t *values_list_sizes = NULL;
|
size_t *values_list_sizes = NULL;
|
||||||
char **errs = NULL;
|
char **errs = NULL;
|
||||||
keys_list = taosMemoryCalloc(num_keys, sizeof(char *));
|
keys_list = taosMemoryCalloc(num_keys, sizeof(char *));
|
||||||
if(!keys_list) {
|
if (!keys_list) {
|
||||||
(void)taosThreadMutexUnlock(&pTsdb->lruMutex);
|
(void)taosThreadMutexUnlock(&pTsdb->lruMutex);
|
||||||
return terrno;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
@ -1692,19 +1692,18 @@ static int32_t tsdbCacheLoadFromRocks(STsdb *pTsdb, tb_uid_t uid, SArray *pLastA
|
||||||
goto _exit;
|
goto _exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SLastCol lastCol = *pLastCol;
|
||||||
|
TAOS_CHECK_EXIT(tsdbCacheReallocSLastCol(&lastCol, NULL));
|
||||||
|
|
||||||
LRUStatus status = taosLRUCacheInsert(pCache, &idxKey->key, ROCKS_KEY_LEN, pLastCol, charge, tsdbCacheDeleter,
|
LRUStatus status = taosLRUCacheInsert(pCache, &idxKey->key, ROCKS_KEY_LEN, pLastCol, charge, tsdbCacheDeleter,
|
||||||
NULL, TAOS_LRU_PRIORITY_LOW, &pTsdb->flushState);
|
NULL, TAOS_LRU_PRIORITY_LOW, &pTsdb->flushState);
|
||||||
if (status != TAOS_LRU_STATUS_OK) {
|
if (status != TAOS_LRU_STATUS_OK) {
|
||||||
code = -1;
|
code = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
SLastCol lastCol = *pLastCol;
|
|
||||||
TAOS_CHECK_EXIT(tsdbCacheReallocSLastCol(&lastCol, NULL));
|
|
||||||
|
|
||||||
taosArraySet(pLastArray, idxKey->idx, &lastCol);
|
taosArraySet(pLastArray, idxKey->idx, &lastCol);
|
||||||
taosArrayRemove(remainCols, j);
|
taosArrayRemove(remainCols, j);
|
||||||
taosArrayRemove(ignoreFromRocks, j);
|
taosArrayRemove(ignoreFromRocks, j);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
++j;
|
++j;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue