[TD-1003]
This commit is contained in:
parent
afacc551a9
commit
4d34d09f59
|
@ -251,6 +251,7 @@ typedef struct {
|
||||||
int32_t rowSize;
|
int32_t rowSize;
|
||||||
int32_t numOfRows;
|
int32_t numOfRows;
|
||||||
void * pIter;
|
void * pIter;
|
||||||
|
void ** ppShow;
|
||||||
int16_t offset[TSDB_MAX_COLUMNS];
|
int16_t offset[TSDB_MAX_COLUMNS];
|
||||||
int16_t bytes[TSDB_MAX_COLUMNS];
|
int16_t bytes[TSDB_MAX_COLUMNS];
|
||||||
int32_t numOfReads;
|
int32_t numOfReads;
|
||||||
|
|
|
@ -49,8 +49,8 @@ static int32_t mnodeProcessUseMsg(SMnodeMsg *mnodeMsg);
|
||||||
static void mnodeFreeShowObj(void *data);
|
static void mnodeFreeShowObj(void *data);
|
||||||
static bool mnodeAccquireShowObj(SShowObj *pShow);
|
static bool mnodeAccquireShowObj(SShowObj *pShow);
|
||||||
static bool mnodeCheckShowFinished(SShowObj *pShow);
|
static bool mnodeCheckShowFinished(SShowObj *pShow);
|
||||||
static void *mnodePutShowObj(SShowObj *pShow, int32_t size);
|
static void *mnodePutShowObj(SShowObj *pShow);
|
||||||
static void mnodeReleaseShowObj(void *pShow, bool forceRemove);
|
static void mnodeReleaseShowObj(SShowObj *pShow, bool forceRemove);
|
||||||
|
|
||||||
extern void *tsMnodeTmr;
|
extern void *tsMnodeTmr;
|
||||||
static void *tsMnodeShowCache = NULL;
|
static void *tsMnodeShowCache = NULL;
|
||||||
|
@ -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 = taosCacheInit(TSDB_DATA_TYPE_INT, 5, false, mnodeFreeShowObj, "show");
|
tsMnodeShowCache = taosCacheInit(TSDB_DATA_TYPE_BIGINT, 5, false, mnodeFreeShowObj, "show");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,13 +121,13 @@ static int32_t mnodeProcessShowMsg(SMnodeMsg *pMsg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t showObjSize = sizeof(SShowObj) + htons(pShowMsg->payloadLen);
|
int32_t showObjSize = sizeof(SShowObj) + htons(pShowMsg->payloadLen);
|
||||||
SShowObj *pShow = (SShowObj *) calloc(1, showObjSize);
|
SShowObj *pShow = calloc(1, showObjSize);
|
||||||
pShow->type = pShowMsg->type;
|
pShow->type = pShowMsg->type;
|
||||||
pShow->payloadLen = htons(pShowMsg->payloadLen);
|
pShow->payloadLen = htons(pShowMsg->payloadLen);
|
||||||
tstrncpy(pShow->db, pShowMsg->db, TSDB_DB_NAME_LEN);
|
tstrncpy(pShow->db, pShowMsg->db, TSDB_DB_NAME_LEN);
|
||||||
memcpy(pShow->payload, pShowMsg->payload, pShow->payloadLen);
|
memcpy(pShow->payload, pShowMsg->payload, pShow->payloadLen);
|
||||||
|
|
||||||
pShow = mnodePutShowObj(pShow, showObjSize);
|
pShow = mnodePutShowObj(pShow);
|
||||||
if (pShow == NULL) {
|
if (pShow == NULL) {
|
||||||
return TSDB_CODE_MND_OUT_OF_MEMORY;
|
return TSDB_CODE_MND_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
|
@ -377,37 +377,41 @@ static bool mnodeCheckShowFinished(SShowObj *pShow) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool mnodeAccquireShowObj(SShowObj *pShow) {
|
static bool mnodeAccquireShowObj(SShowObj *pShow) {
|
||||||
SShowObj *pSaved = taosCacheAcquireByKey(tsMnodeShowCache, &pShow->index, sizeof(int32_t));
|
SShowObj **ppShow = taosCacheAcquireByKey(tsMnodeShowCache, &pShow, sizeof(int64_t));
|
||||||
if (pSaved == pShow) {
|
if (ppShow) {
|
||||||
mDebug("%p, show is accquired from cache", pShow);
|
mDebug("%p, show is accquired from cache, data:%p, index:%d", pShow, ppShow, pShow->index);
|
||||||
return true;
|
return true;
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void *mnodePutShowObj(SShowObj *pShow, int32_t size) {
|
static void* mnodePutShowObj(SShowObj *pShow) {
|
||||||
if (tsMnodeShowCache != NULL) {
|
if (tsMnodeShowCache != NULL) {
|
||||||
pShow->index = atomic_add_fetch_32(&tsShowObjIndex, 1);
|
pShow->index = atomic_add_fetch_32(&tsShowObjIndex, 1);
|
||||||
SShowObj *newQhandle = taosCachePut(tsMnodeShowCache, &pShow->index, sizeof(int32_t), pShow, size, 6);
|
SShowObj **ppShow = taosCachePut(tsMnodeShowCache, &pShow, sizeof(int64_t), &pShow, sizeof(int64_t), 6);
|
||||||
mDebug("%p, show is put into cache, index:%d", newQhandle, pShow->index);
|
pShow->ppShow = (void**)ppShow;
|
||||||
free(pShow);
|
mDebug("%p, show is put into cache, data:%p index:%d", pShow, ppShow, pShow->index);
|
||||||
|
return pShow;
|
||||||
return newQhandle;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mnodeFreeShowObj(void *data) {
|
static void mnodeFreeShowObj(void *data) {
|
||||||
SShowObj *pShow = data;
|
SShowObj *pShow = *(SShowObj **)data;
|
||||||
sdbFreeIter(pShow->pIter);
|
sdbFreeIter(pShow->pIter);
|
||||||
mDebug("%p, show is destroyed", pShow);
|
|
||||||
|
mDebug("%p, show is destroyed, data:%p index:%d", pShow, data, pShow->index);
|
||||||
|
tfree(pShow);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mnodeReleaseShowObj(void *pShow, bool forceRemove) {
|
static void mnodeReleaseShowObj(SShowObj *pShow, bool forceRemove) {
|
||||||
mDebug("%p, show is released, force:%s", pShow, forceRemove ? "true" : "false");
|
SShowObj **ppShow = (SShowObj **)pShow->ppShow;
|
||||||
taosCacheRelease(tsMnodeShowCache, &pShow, forceRemove);
|
mDebug("%p, show is released, force:%s data:%p index:%d", pShow, forceRemove ? "true" : "false", ppShow,
|
||||||
|
pShow->index);
|
||||||
|
|
||||||
|
taosCacheRelease(tsMnodeShowCache, (void **)(&ppShow), forceRemove);
|
||||||
}
|
}
|
||||||
|
|
||||||
void mnodeVacuumResult(char *data, int32_t numOfCols, int32_t rows, int32_t capacity, SShowObj *pShow) {
|
void mnodeVacuumResult(char *data, int32_t numOfCols, int32_t rows, int32_t capacity, SShowObj *pShow) {
|
||||||
|
|
Loading…
Reference in New Issue