fix: handle rsma resource leak
This commit is contained in:
parent
602d2aa377
commit
cecec01b75
|
@ -1762,14 +1762,14 @@ void blockDebugShowDataBlocks(const SArray* dataBlocks, const char* flag) {
|
||||||
break;
|
break;
|
||||||
case TSDB_DATA_TYPE_VARCHAR: {
|
case TSDB_DATA_TYPE_VARCHAR: {
|
||||||
char* pData = colDataGetVarData(pColInfoData, j);
|
char* pData = colDataGetVarData(pColInfoData, j);
|
||||||
int32_t dataSize = TMIN(sizeof(pBuf), varDataLen(pData) + 1);
|
int32_t dataSize = TMIN(sizeof(pBuf) - 1, varDataLen(pData));
|
||||||
memset(pBuf, 0, dataSize);
|
memset(pBuf, 0, dataSize + 1);
|
||||||
strncpy(pBuf, varDataVal(pData), dataSize);
|
strncpy(pBuf, varDataVal(pData), dataSize);
|
||||||
printf(" %15s |", pBuf);
|
printf(" %15s |", pBuf);
|
||||||
} break;
|
} break;
|
||||||
case TSDB_DATA_TYPE_NCHAR: {
|
case TSDB_DATA_TYPE_NCHAR: {
|
||||||
char* pData = colDataGetVarData(pColInfoData, j);
|
char* pData = colDataGetVarData(pColInfoData, j);
|
||||||
int32_t dataSize = TMIN(sizeof(pBuf), varDataLen(pData) + 1);
|
int32_t dataSize = TMIN(sizeof(pBuf), varDataLen(pData));
|
||||||
memset(pBuf, 0, dataSize);
|
memset(pBuf, 0, dataSize);
|
||||||
taosUcs4ToMbs((TdUcs4*)varDataVal(pData), dataSize, pBuf);
|
taosUcs4ToMbs((TdUcs4*)varDataVal(pData), dataSize, pBuf);
|
||||||
printf(" %15s |", pBuf);
|
printf(" %15s |", pBuf);
|
||||||
|
@ -1948,12 +1948,14 @@ int32_t buildSubmitReqFromDataBlock(SSubmitReq** pReq, const SArray* pDataBlocks
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case TSDB_DATA_TYPE_NCHAR: {
|
case TSDB_DATA_TYPE_NCHAR: {
|
||||||
tdAppendColValToRow(&rb, PRIMARYKEY_TIMESTAMP_COL_ID + k, TSDB_DATA_TYPE_NCHAR, TD_VTYPE_NORM, var, true,
|
void* data = colDataGetData(pColInfoData, j);
|
||||||
|
tdAppendColValToRow(&rb, PRIMARYKEY_TIMESTAMP_COL_ID + k, TSDB_DATA_TYPE_NCHAR, TD_VTYPE_NORM, data, true,
|
||||||
offset, k);
|
offset, k);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_VARCHAR: { // TSDB_DATA_TYPE_BINARY
|
case TSDB_DATA_TYPE_VARCHAR: { // TSDB_DATA_TYPE_BINARY
|
||||||
tdAppendColValToRow(&rb, PRIMARYKEY_TIMESTAMP_COL_ID + k, TSDB_DATA_TYPE_VARCHAR, TD_VTYPE_NORM, var, true,
|
void* data = colDataGetData(pColInfoData, j);
|
||||||
|
tdAppendColValToRow(&rb, PRIMARYKEY_TIMESTAMP_COL_ID + k, TSDB_DATA_TYPE_VARCHAR, TD_VTYPE_NORM, data, true,
|
||||||
offset, k);
|
offset, k);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -295,6 +295,9 @@ static void tdDestroyRSmaStat(void *pRSmaStat) {
|
||||||
nLoops = 0;
|
nLoops = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// step 4: free pStat
|
||||||
|
taosMemoryFreeClear(pStat);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -321,12 +324,13 @@ int32_t tdDestroySmaState(SSmaStat *pSmaStat, int8_t smaType) {
|
||||||
tdDestroyTSmaStat(SMA_TSMA_STAT(pSmaStat));
|
tdDestroyTSmaStat(SMA_TSMA_STAT(pSmaStat));
|
||||||
} else if (smaType == TSDB_SMA_TYPE_ROLLUP) {
|
} else if (smaType == TSDB_SMA_TYPE_ROLLUP) {
|
||||||
SRSmaStat *pRSmaStat = SMA_RSMA_STAT(pSmaStat);
|
SRSmaStat *pRSmaStat = SMA_RSMA_STAT(pSmaStat);
|
||||||
|
int32_t vid = SMA_VID(pRSmaStat->pSma);
|
||||||
|
int64_t refId = RSMA_REF_ID(pRSmaStat);
|
||||||
if (taosRemoveRef(smaMgmt.rsetId, RSMA_REF_ID(pRSmaStat)) < 0) {
|
if (taosRemoveRef(smaMgmt.rsetId, RSMA_REF_ID(pRSmaStat)) < 0) {
|
||||||
smaError("vgId:%d, remove refId:%" PRIi64 " from rsmaRef:%" PRIi32 " failed since %s", SMA_VID(pRSmaStat->pSma),
|
smaError("vgId:%d, remove refId:%" PRIi64 " from rsmaRef:%" PRIi32 " failed since %s", vid, refId,
|
||||||
RSMA_REF_ID(pRSmaStat), smaMgmt.rsetId, terrstr());
|
smaMgmt.rsetId, terrstr());
|
||||||
} else {
|
} else {
|
||||||
smaDebug("vgId:%d, remove refId:%" PRIi64 " from rsmaRef:%" PRIi32 " succeed", SMA_VID(pRSmaStat->pSma),
|
smaDebug("vgId:%d, remove refId:%" PRIi64 " from rsmaRef:%" PRIi32 " succeed", vid, refId, smaMgmt.rsetId);
|
||||||
RSMA_REF_ID(pRSmaStat), smaMgmt.rsetId);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
ASSERT(0);
|
ASSERT(0);
|
||||||
|
|
|
@ -128,7 +128,7 @@ void *tdFreeRSmaInfo(SSma *pSma, SRSmaInfo *pInfo, bool isDeepFree) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isDeepFree) {
|
if (isDeepFree) {
|
||||||
taosMemoryFree(pInfo->pTSchema);
|
taosMemoryFreeClear(pInfo->pTSchema);
|
||||||
}
|
}
|
||||||
taosMemoryFree(pInfo);
|
taosMemoryFree(pInfo);
|
||||||
}
|
}
|
||||||
|
@ -600,7 +600,7 @@ static int32_t tdRSmaFetchAndSubmitResult(SRSmaInfoItem *pItem, STSchema *pTSche
|
||||||
#endif
|
#endif
|
||||||
STsdb *sinkTsdb = (pItem->level == TSDB_RETENTION_L1 ? pSma->pRSmaTsdb[0] : pSma->pRSmaTsdb[1]);
|
STsdb *sinkTsdb = (pItem->level == TSDB_RETENTION_L1 ? pSma->pRSmaTsdb[0] : pSma->pRSmaTsdb[1]);
|
||||||
SSubmitReq *pReq = NULL;
|
SSubmitReq *pReq = NULL;
|
||||||
// TODO: the schema update should be handled
|
// TODO: the schema update should be handled later(TD-17965)
|
||||||
if (buildSubmitReqFromDataBlock(&pReq, pResult, pTSchema, SMA_VID(pSma), suid) < 0) {
|
if (buildSubmitReqFromDataBlock(&pReq, pResult, pTSchema, SMA_VID(pSma), suid) < 0) {
|
||||||
smaError("vgId:%d, build submit req for rsma stable %" PRIi64 " level %" PRIi8 " failed since %s",
|
smaError("vgId:%d, build submit req for rsma stable %" PRIi64 " level %" PRIi8 " failed since %s",
|
||||||
SMA_VID(pSma), suid, pItem->level, terrstr());
|
SMA_VID(pSma), suid, pItem->level, terrstr());
|
||||||
|
@ -622,7 +622,7 @@ static int32_t tdRSmaFetchAndSubmitResult(SRSmaInfoItem *pItem, STSchema *pTSche
|
||||||
} else if (terrno == 0) {
|
} else if (terrno == 0) {
|
||||||
smaDebug("vgId:%d, no rsma %" PRIi8 " data fetched yet", SMA_VID(pSma), pItem->level);
|
smaDebug("vgId:%d, no rsma %" PRIi8 " data fetched yet", SMA_VID(pSma), pItem->level);
|
||||||
} else {
|
} else {
|
||||||
smaDebug("vgId:%d, no rsma %" PRIi8 " data fetched since %s", SMA_VID(pSma), pItem->level, tstrerror(terrno));
|
smaDebug("vgId:%d, no rsma %" PRIi8 " data fetched since %s", SMA_VID(pSma), pItem->level, terrstr());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -167,12 +167,26 @@ system sh/exec.sh -n dnode4 -s start
|
||||||
|
|
||||||
sleep 3000
|
sleep 3000
|
||||||
|
|
||||||
print =============== query data
|
|
||||||
|
|
||||||
|
|
||||||
|
print =============== query data of level 1
|
||||||
sql connect
|
sql connect
|
||||||
sql use db
|
sql use db
|
||||||
|
|
||||||
sql select * from ct1 where ts > now - 1d
|
sql select * from ct1 where ts > now - 1d
|
||||||
print rows: $rows
|
print rows of level 1: $rows
|
||||||
print $data00 $data01 $data02
|
print $data00 $data01 $data02
|
||||||
if $rows != 100 then
|
if $rows != 100 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
endi
|
||||||
|
|
||||||
|
print =============== query data of level 2
|
||||||
|
sql select * from ct1 where ts > now - 10d
|
||||||
|
print rows of level 2: $rows
|
||||||
|
print $data00 $data01 $data02
|
||||||
|
|
||||||
|
print =============== query data of level 3
|
||||||
|
sql select * from ct1
|
||||||
|
print rows of level 3: $rows
|
||||||
|
print $data00 $data01 $data02
|
||||||
|
|
Loading…
Reference in New Issue