[TD-3178]<feature> fix some bug
This commit is contained in:
parent
151fd31072
commit
cad3b55a43
|
@ -2798,7 +2798,6 @@ int32_t setKillInfo(SSqlObj* pSql, struct SSqlInfo* pInfo, int32_t killType) {
|
||||||
}
|
}
|
||||||
static int32_t setCompactVnodeInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
|
static int32_t setCompactVnodeInfo(SSqlObj* pSql, struct SSqlInfo* pInfo) {
|
||||||
SSqlCmd* pCmd = &pSql->cmd;
|
SSqlCmd* pCmd = &pSql->cmd;
|
||||||
//STableMetaInfo* pTableMetaInfo = tscGetTableMetaInfoFromCmd(pCmd, pCmd->clauseIndex, 0);
|
|
||||||
pCmd->command = pInfo->type;
|
pCmd->command = pInfo->type;
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
|
@ -1575,7 +1575,7 @@ int tscBuildCompactMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
|
||||||
for (int32_t i = 0; i < size; i++) {
|
for (int32_t i = 0; i < size; i++) {
|
||||||
tSqlExprItem* pSub = taosArrayGet(pList, i);
|
tSqlExprItem* pSub = taosArrayGet(pList, i);
|
||||||
tVariant* pVar = &pSub->pNode->value;
|
tVariant* pVar = &pSub->pNode->value;
|
||||||
if (pVar->nType >= TSDB_DATA_TYPE_TINYINT && pVar->nType <= TSDB_DATA_TYPE_INT) {
|
if (pVar->nType >= TSDB_DATA_TYPE_TINYINT && pVar->nType <= TSDB_DATA_TYPE_BIGINT) {
|
||||||
result[i] = (int32_t)(pVar->i64);
|
result[i] = (int32_t)(pVar->i64);
|
||||||
} else {
|
} else {
|
||||||
free(result);
|
free(result);
|
||||||
|
@ -1603,7 +1603,7 @@ int tscBuildCompactMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
|
||||||
} else {
|
} else {
|
||||||
tNameGetFullDbName(&pTableMetaInfo->name, pCompactMsg->db);
|
tNameGetFullDbName(&pTableMetaInfo->name, pCompactMsg->db);
|
||||||
}
|
}
|
||||||
|
|
||||||
pCompactMsg->numOfVgroup = htons(count);
|
pCompactMsg->numOfVgroup = htons(count);
|
||||||
for (int32_t i = 0; i < count; i++) {
|
for (int32_t i = 0; i < count; i++) {
|
||||||
pCompactMsg->vgid[i] = htons(result[i]);
|
pCompactMsg->vgid[i] = htons(result[i]);
|
||||||
|
|
|
@ -61,6 +61,7 @@ int32_t dnodeInitShell() {
|
||||||
dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_KILL_STREAM] = dnodeDispatchToMWriteQueue;
|
dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_KILL_STREAM] = dnodeDispatchToMWriteQueue;
|
||||||
dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_KILL_CONN] = dnodeDispatchToMWriteQueue;
|
dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_KILL_CONN] = dnodeDispatchToMWriteQueue;
|
||||||
dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_CONFIG_DNODE]= dnodeDispatchToMWriteQueue;
|
dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_CONFIG_DNODE]= dnodeDispatchToMWriteQueue;
|
||||||
|
dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_COMPACT_VNODE]= dnodeDispatchToMWriteQueue;
|
||||||
|
|
||||||
// the following message shall be treated as mnode query
|
// the following message shall be treated as mnode query
|
||||||
dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_HEARTBEAT] = dnodeDispatchToMReadQueue;
|
dnodeProcessShellMsgFp[TSDB_MSG_TYPE_CM_HEARTBEAT] = dnodeDispatchToMReadQueue;
|
||||||
|
|
|
@ -1226,25 +1226,34 @@ static int32_t mnodeSyncDb(SDbObj *pDb, SMnodeMsg *pMsg) {
|
||||||
|
|
||||||
|
|
||||||
static int32_t mnodeCompact(SDbObj *pDb, SCompactMsg *pCompactMsg) {
|
static int32_t mnodeCompact(SDbObj *pDb, SCompactMsg *pCompactMsg) {
|
||||||
int32_t count = htonl(pCompactMsg->numOfVgroup);
|
int32_t count = ntohs(pCompactMsg->numOfVgroup);
|
||||||
int32_t *buf = malloc(sizeof(int32_t) * count);
|
int32_t *buf = malloc(sizeof(int32_t) * count);
|
||||||
if (buf == NULL) {
|
if (buf == NULL) {
|
||||||
return TSDB_CODE_MND_OUT_OF_MEMORY;
|
return TSDB_CODE_MND_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
for (int32_t i = 0; i < count; i++) {
|
for (int32_t i = 0; i < count; i++) {
|
||||||
buf[i] = htonl(pCompactMsg->vgid[i]);
|
buf[i] = ntohs(pCompactMsg->vgid[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// copy from mnodeSyncDb, so ugly
|
// copy from mnodeSyncDb, so ugly
|
||||||
void *pIter = NULL;
|
for (int32_t i = 0; i < count; i++) {
|
||||||
SVgObj *pVgroup = NULL;
|
SVgObj *pVgroup = NULL;
|
||||||
while (1) {
|
void *pIter = NULL;
|
||||||
pIter = mnodeGetNextVgroup(pIter, &pVgroup);
|
bool valid = false;
|
||||||
if (pVgroup == NULL) break;
|
while (1) {
|
||||||
if (pVgroup->pDb == pDb) {
|
pIter = mnodeGetNextVgroup(pIter, &pVgroup);
|
||||||
mnodeSendCompactVgroupMsg(pVgroup);
|
if (pVgroup == NULL) break;
|
||||||
|
if (pVgroup->pDb == pDb && pVgroup->vgId == buf[i]) {
|
||||||
|
mnodeSendCompactVgroupMsg(pVgroup);
|
||||||
|
mnodeDecVgroupRef(pVgroup);
|
||||||
|
valid = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
mnodeDecVgroupRef(pVgroup);
|
||||||
|
}
|
||||||
|
if (valid == false) {
|
||||||
|
mLError("db:%s, cannot find valid vgId: %d", pDb->name, buf[i]);
|
||||||
}
|
}
|
||||||
mnodeDecVgroupRef(pVgroup);
|
|
||||||
}
|
}
|
||||||
free(buf);
|
free(buf);
|
||||||
|
|
||||||
|
@ -1279,6 +1288,7 @@ static int32_t mnodeProcessCompactMsg(SMnodeMsg *pMsg) {
|
||||||
mDebug("db:%s, compact is received from thandle:%p", pCompact->db, pMsg->rpcMsg.handle);
|
mDebug("db:%s, compact is received from thandle:%p", pCompact->db, pMsg->rpcMsg.handle);
|
||||||
|
|
||||||
if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDb(pCompact->db);
|
if (pMsg->pDb == NULL) pMsg->pDb = mnodeGetDb(pCompact->db);
|
||||||
|
if (pMsg->pDb == NULL) return TSDB_CODE_MND_DB_NOT_SELECTED;
|
||||||
|
|
||||||
if (pMsg->pDb->status != TSDB_DB_STATUS_READY) {
|
if (pMsg->pDb->status != TSDB_DB_STATUS_READY) {
|
||||||
mError("db:%s, status:%d, in dropping, ignore compact request", pCompact->db, pMsg->pDb->status);
|
mError("db:%s, status:%d, in dropping, ignore compact request", pCompact->db, pMsg->pDb->status);
|
||||||
|
|
Loading…
Reference in New Issue