提交 cad3b55a 编写于 作者: Y yihaoDeng

[TD-3178]<feature> fix some bug

上级 151fd310
...@@ -2798,7 +2798,6 @@ int32_t setKillInfo(SSqlObj* pSql, struct SSqlInfo* pInfo, int32_t killType) { ...@@ -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) { ...@@ -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) { ...@@ -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() { ...@@ -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) { ...@@ -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) { ...@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册