diff --git a/include/common/tmsg.h b/include/common/tmsg.h index 4b3905d34c..32b307a75c 100644 --- a/include/common/tmsg.h +++ b/include/common/tmsg.h @@ -70,7 +70,7 @@ typedef uint16_t tmsg_t; static inline bool tmsgIsValid(tmsg_t type) { // static int8_t sz = sizeof(tMsgRangeDict) / sizeof(tMsgRangeDict[0]); - int8_t maxSegIdx = TMSG_SEG_CODE(TDMT_MAX_MSG); + int8_t maxSegIdx = TMSG_SEG_CODE(TDMT_MAX_MSG_MIN); int segIdx = TMSG_SEG_CODE(type); if (segIdx >= 0 && segIdx < maxSegIdx) { return type < tMsgRangeDict[segIdx]; @@ -3261,6 +3261,7 @@ typedef struct { typedef struct { int64_t reqId; SArray* reqs; // SArray + int64_t ipWhiteList; } SClientHbBatchReq; typedef struct { diff --git a/include/common/tmsgdef.h b/include/common/tmsgdef.h index c79e66f2e2..ad2c593f4e 100644 --- a/include/common/tmsgdef.h +++ b/include/common/tmsgdef.h @@ -41,7 +41,7 @@ #undef TD_CLOSE_MSG_SEG #define TD_NEW_MSG_SEG(TYPE) #define TD_DEF_MSG_TYPE(TYPE, MSG, REQ, RSP) - #define TD_CLOSE_MSG_SEG(TYPE) TYPE, + #define TD_CLOSE_MSG_SEG(TYPE) TYPE##_MAX, int32_t tMsgRangeDict[] = { #elif defined(TD_MSG_NUMBER_) @@ -49,7 +49,7 @@ #undef TD_NEW_MSG_SEG #undef TD_DEF_MSG_TYPE #undef TD_CLOSE_MSG_SEG - #define TD_NEW_MSG_SEG(TYPE) TYPE##_NUM, + #define TD_NEW_MSG_SEG(TYPE) TYPE##_NUM_MIN, #define TD_DEF_MSG_TYPE(TYPE, MSG, REQ, RSP) TYPE##_NUM, TYPE##_RSP_NUM, #define TD_CLOSE_MSG_SEG(TYPE) @@ -60,7 +60,7 @@ #undef TD_NEW_MSG_SEG #undef TD_DEF_MSG_TYPE #undef TD_CLOSE_MSG_SEG - #define TD_NEW_MSG_SEG(TYPE) TYPE##_NUM, + #define TD_NEW_MSG_SEG(TYPE) TYPE##_NUM_MIN, #define TD_DEF_MSG_TYPE(TYPE, MSG, REQ, RSP) #define TD_CLOSE_MSG_SEG(type) @@ -99,9 +99,9 @@ #undef TD_NEW_MSG_SEG #undef TD_DEF_MSG_TYPE #undef TD_CLOSE_MSG_SEG - #define TD_NEW_MSG_SEG(TYPE) TYPE = ((TYPE##_SEG_CODE) << 8), + #define TD_NEW_MSG_SEG(TYPE) TYPE##_MIN = ((TYPE##_SEG_CODE) << 8), #define TD_DEF_MSG_TYPE(TYPE, MSG, REQ, RSP) TYPE, TYPE##_RSP, - #define TD_CLOSE_MSG_SEG(TYPE) TYPE, + #define TD_CLOSE_MSG_SEG(TYPE) TYPE##_MAX, enum { // WARN: new msg should be appended to segment tail #endif @@ -125,8 +125,7 @@ TD_DEF_MSG_TYPE(TDMT_DND_ALTER_VNODE_TYPE, "dnode-alter-vnode-type", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_DND_CHECK_VNODE_LEARNER_CATCHUP, "dnode-check-vnode-learner-catchup", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_DND_CREATE_ENCRYPT_KEY, "create-encrypt-key", NULL, NULL) - TD_DEF_MSG_TYPE(TDMT_DND_MAX_MSG, "dnd-max", NULL, NULL) - TD_CLOSE_MSG_SEG(TDMT_END_DND_MSG) + TD_CLOSE_MSG_SEG(TDMT_DND_MSG) TD_NEW_MSG_SEG(TDMT_MND_MSG) // 1<<8 TD_DEF_MSG_TYPE(TDMT_MND_CONNECT, "connect", NULL, NULL) @@ -225,9 +224,9 @@ TD_DEF_MSG_TYPE(TDMT_MND_RESTORE_DNODE, "restore-dnode", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_MND_PAUSE_STREAM, "pause-stream", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_MND_RESUME_STREAM, "resume-stream", NULL, NULL) - TD_DEF_MSG_TYPE(TDMT_MND_STREAM_UPDATE_CHKPT_EVT, "stream-update-chkpt-evt", NULL, NULL) + TD_DEF_MSG_TYPE(TDMT_MND_STREAM_CHECKPOINT_TIMER, "stream-checkpoint-tmr", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_MND_STREAM_BEGIN_CHECKPOINT, "stream-begin-checkpoint", NULL, NULL) - TD_DEF_MSG_TYPE(TDMT_MND_STREAM_CHKPT_REPORT, "stream-chkpt-report", NULL, NULL) + TD_DEF_MSG_TYPE(TDMT_MND_STREAM_CHECKPOINT_CANDIDITATE, "stream-checkpoint-remain", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_MND_STREAM_NODECHANGE_CHECK, "stream-nodechange-check", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_MND_TRIM_DB_TIMER, "trim-db-tmr", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_MND_GRANT_NOTIFY, "grant-notify", NULL, NULL) @@ -249,8 +248,9 @@ TD_DEF_MSG_TYPE(TDMT_MND_GET_TABLE_TSMA, "get-table-tsma", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_MND_GET_TSMA, "get-tsma", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_MND_DROP_TB_WITH_TSMA, "drop-tb-with-tsma", NULL, NULL) - TD_DEF_MSG_TYPE(TDMT_MND_MAX_MSG, "mnd-max", NULL, NULL) - TD_CLOSE_MSG_SEG(TDMT_END_MND_MSG) + TD_DEF_MSG_TYPE(TDMT_MND_STREAM_UPDATE_CHKPT_EVT, "stream-update-chkpt-evt", NULL, NULL) + TD_DEF_MSG_TYPE(TDMT_MND_STREAM_CHKPT_REPORT, "stream-chkpt-report", NULL, NULL) + TD_CLOSE_MSG_SEG(TDMT_MND_MSG) TD_NEW_MSG_SEG(TDMT_VND_MSG) // 2<<8 TD_DEF_MSG_TYPE(TDMT_VND_SUBMIT, "submit", SSubmitReq, SSubmitRsp) @@ -305,8 +305,7 @@ TD_DEF_MSG_TYPE(TDMT_VND_ARB_HEARTBEAT, "vnode-arb-hb", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_VND_ARB_CHECK_SYNC, "vnode-arb-check-sync", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_VND_FETCH_TTL_EXPIRED_TBS, "vnode-fetch-ttl-expired-tbs", NULL, NULL) - TD_DEF_MSG_TYPE(TDMT_VND_MAX_MSG, "vnd-max", NULL, NULL) - TD_CLOSE_MSG_SEG(TDMT_END_VND_MSG) + TD_CLOSE_MSG_SEG(TDMT_VND_MSG) TD_NEW_MSG_SEG(TDMT_SCH_MSG) // 3<<8 TD_DEF_MSG_TYPE(TDMT_SCH_QUERY, "query", NULL, NULL) @@ -320,8 +319,7 @@ TD_DEF_MSG_TYPE(TDMT_SCH_EXPLAIN, "explain", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_SCH_LINK_BROKEN, "link-broken", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_SCH_TASK_NOTIFY, "task-notify", NULL, NULL) - TD_DEF_MSG_TYPE(TDMT_SCH_MAX_MSG, "sch-max", NULL, NULL) - TD_CLOSE_MSG_SEG(TDMT_END_SCH_MSG) + TD_CLOSE_MSG_SEG(TDMT_SCH_MSG) TD_NEW_MSG_SEG(TDMT_STREAM_MSG) //4 << 8 @@ -341,13 +339,10 @@ TD_DEF_MSG_TYPE(TDMT_STREAM_CREATE, "stream-create", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_STREAM_DROP, "stream-drop", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_STREAM_RETRIEVE_TRIGGER, "stream-retri-trigger", NULL, NULL) - - TD_DEF_MSG_TYPE(TDMT_STREAM_MAX_MSG, "stream-max", NULL, NULL) - TD_CLOSE_MSG_SEG(TDMT_END_STREAM_MSG) + TD_CLOSE_MSG_SEG(TDMT_STREAM_MSG) TD_NEW_MSG_SEG(TDMT_MON_MSG) //5 << 8 - TD_DEF_MSG_TYPE(TDMT_MON_MAX_MSG, "monitor-max", NULL, NULL) - TD_CLOSE_MSG_SEG(TDMT_END_MON_MSG) + TD_CLOSE_MSG_SEG(TDMT_MON_MSG) TD_NEW_MSG_SEG(TDMT_SYNC_MSG) //6 << 8 TD_DEF_MSG_TYPE(TDMT_SYNC_TIMEOUT, "sync-timer", NULL, NULL) @@ -380,8 +375,7 @@ TD_DEF_MSG_TYPE(TDMT_SYNC_UNUSED_CODE, "sync-unused", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_SYNC_FORCE_FOLLOWER, "sync-force-become-follower", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_SYNC_SET_ASSIGNED_LEADER, "sync-set-assigned-leader", NULL, NULL) - TD_DEF_MSG_TYPE(TDMT_SYNC_MAX_MSG, "sync-max", NULL, NULL) - TD_CLOSE_MSG_SEG(TDMT_END_SYNC_MSG) + TD_CLOSE_MSG_SEG(TDMT_SYNC_MSG) TD_NEW_MSG_SEG(TDMT_VND_STREAM_MSG) //7 << 8 TD_DEF_MSG_TYPE(TDMT_VND_STREAM_SCAN_HISTORY, "vnode-stream-scan-history", NULL, NULL) @@ -390,10 +384,8 @@ TD_DEF_MSG_TYPE(TDMT_VND_STREAM_TASK_RESET, "vnode-stream-reset", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_VND_STREAM_TASK_CHECK, "vnode-stream-task-check", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_VND_STREAM_UNUSED, "vnd-stream-unused", NULL, NULL) - TD_DEF_MSG_TYPE(TDMT_VND_GET_STREAM_PROGRESS, "vnd-stream-progress", NULL, NULL) - TD_DEF_MSG_TYPE(TDMT_VND_STREAM_MAX_MSG, "vnd-stream-max", NULL, NULL) - TD_CLOSE_MSG_SEG(TDMT_END_VND_STREAM_MSG) + TD_CLOSE_MSG_SEG(TDMT_VND_STREAM_MSG) TD_NEW_MSG_SEG(TDMT_VND_TMQ_MSG) //8 << 8 TD_DEF_MSG_TYPE(TDMT_VND_TMQ_SUBSCRIBE, "vnode-tmq-subscribe", SMqRebVgReq, SMqRebVgRsp) @@ -406,19 +398,17 @@ TD_DEF_MSG_TYPE(TDMT_VND_TMQ_CONSUME_PUSH, "vnode-tmq-consume-push", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_VND_TMQ_VG_WALINFO, "vnode-tmq-vg-walinfo", SMqPollReq, SMqDataBlkRsp) TD_DEF_MSG_TYPE(TDMT_VND_TMQ_VG_COMMITTEDINFO, "vnode-tmq-committedinfo", NULL, NULL) - TD_DEF_MSG_TYPE(TDMT_VND_TMQ_MAX_MSG, "vnd-tmq-max", NULL, NULL) - TD_CLOSE_MSG_SEG(TDMT_END_TMQ_MSG) + TD_CLOSE_MSG_SEG(TDMT_VND_TMQ_MSG) TD_NEW_MSG_SEG(TDMT_MND_ARB_MSG) //9 << 8 TD_DEF_MSG_TYPE(TDMT_MND_ARB_HEARTBEAT_TIMER, "mnd-arb-hb-tmr", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_MND_ARB_CHECK_SYNC_TIMER, "mnd-arb-check-sync-tmr", NULL, NULL) TD_DEF_MSG_TYPE(TDMT_MND_ARB_UPDATE_GROUP, "mnd-arb-update-group", NULL, NULL) // no longer used TD_DEF_MSG_TYPE(TDMT_MND_ARB_UPDATE_GROUP_BATCH, "mnd-arb-update-group-batch", NULL, NULL) - TD_DEF_MSG_TYPE(TDMT_MND_ARB_MAX_MSG, "mnd-arb-max", NULL, NULL) - TD_CLOSE_MSG_SEG(TDMT_END_ARB_MSG) + TD_CLOSE_MSG_SEG(TDMT_MND_ARB_MSG) TD_NEW_MSG_SEG(TDMT_MAX_MSG) // msg end mark - TD_CLOSE_MSG_SEG(TDMT_END_MAX_MSG) + TD_CLOSE_MSG_SEG(TDMT_MAX_MSG) #if defined(TD_MSG_NUMBER_) TDMT_MAX diff --git a/include/dnode/vnode/tqCommon.h b/include/dnode/vnode/tqCommon.h index f0ab2a0e95..4a8fc6260a 100644 --- a/include/dnode/vnode/tqCommon.h +++ b/include/dnode/vnode/tqCommon.h @@ -41,7 +41,7 @@ int32_t tqStreamTaskProcessRetrieveTriggerReq(SStreamMeta* pMeta, SRpcMsg* pMsg) int32_t tqStreamTaskProcessRetrieveTriggerRsp(SStreamMeta* pMeta, SRpcMsg* pMsg); int32_t tqStreamTaskProcessTaskPauseReq(SStreamMeta* pMeta, char* pMsg); int32_t tqStreamTaskProcessTaskResumeReq(void* handle, int64_t sversion, char* pMsg, bool fromVnode); -int32_t tqStreamTaskProcessUpdateCheckpointReq(SStreamMeta* pMeta, char* msg, int32_t msgLen); +int32_t tqStreamTaskProcessUpdateCheckpointReq(SStreamMeta* pMeta, bool restored, char* msg, int32_t msgLen); void tqSetRestoreVersionInfo(SStreamTask* pTask); int32_t tqExpandStreamTask(SStreamTask* pTask); diff --git a/include/libs/stream/tstream.h b/include/libs/stream/tstream.h index 03c42e5c7e..bf223e8c28 100644 --- a/include/libs/stream/tstream.h +++ b/include/libs/stream/tstream.h @@ -681,7 +681,8 @@ bool streamTaskAlreadySendTrigger(SStreamTask* pTask, int32_t downstreamNodeI void streamTaskGetTriggerRecvStatus(SStreamTask* pTask, int32_t* pRecved, int32_t* pTotal); void streamTaskInitTriggerDispatchInfo(SStreamTask* pTask); void streamTaskSetTriggerDispatchConfirmed(SStreamTask* pTask, int32_t vgId); -int32_t streamTaskSendCheckpointTriggerMsg(SStreamTask* pTask, int32_t dstTaskId, SRpcHandleInfo* pInfo, int32_t code); +int32_t streamTaskSendCheckpointTriggerMsg(SStreamTask* pTask, int32_t dstTaskId, int32_t downstreamNodeId, + SRpcHandleInfo* pInfo, int32_t code); int32_t streamQueueGetNumOfItems(const SStreamQueue* pQueue); int32_t streamQueueGetNumOfUnAccessedItems(const SStreamQueue* pQueue); @@ -770,7 +771,7 @@ int32_t streamAddCheckpointSourceRspMsg(SStreamCheckpointSourceReq* pReq, SRpcHa int32_t streamTaskBuildCheckpointSourceRsp(SStreamCheckpointSourceReq* pReq, SRpcHandleInfo* pRpcInfo, SRpcMsg* pMsg, int32_t setCode); int32_t streamSendChkptReportMsg(SStreamTask* pTask, SCheckpointInfo* pCheckpointInfo, int8_t dropRelHTask); -int32_t streamTaskUpdateTaskCheckpointInfo(SStreamTask* pTask, SVUpdateCheckpointInfoReq* pReq); +int32_t streamTaskUpdateTaskCheckpointInfo(SStreamTask* pTask, bool restored, SVUpdateCheckpointInfoReq* pReq); SActiveCheckpointInfo* streamTaskCreateActiveChkptInfo(); // stream task state machine, and event handling diff --git a/include/util/taoserror.h b/include/util/taoserror.h index 6dc9b46db5..2e407d26b0 100644 --- a/include/util/taoserror.h +++ b/include/util/taoserror.h @@ -85,8 +85,8 @@ int32_t taosGetErrSize(); #define TSDB_CODE_RPC_SOMENODE_NOT_CONNECTED TAOS_DEF_ERROR_CODE(0, 0x0020) // "Vgroup could not be connected" #define TSDB_CODE_RPC_SOMENODE_BROKEN_LINK TAOS_DEF_ERROR_CODE(0, 0x0021) // #define TSDB_CODE_RPC_MAX_SESSIONS TAOS_DEF_ERROR_CODE(0, 0x0022) // -#define TSDB_CODE_RPC_NETWORK_ERROR TAOS_DEF_ERROR_CODE(0, 0x0023) -#define TSDB_CODE_RPC_NETWORK_BUSY TAOS_DEF_ERROR_CODE(0, 0x0024) +#define TSDB_CODE_RPC_NETWORK_ERROR TAOS_DEF_ERROR_CODE(0, 0x0023) +#define TSDB_CODE_RPC_NETWORK_BUSY TAOS_DEF_ERROR_CODE(0, 0x0024) @@ -274,8 +274,8 @@ int32_t taosGetErrSize(); #define TSDB_CODE_MND_PRIVILEDGE_EXIST TAOS_DEF_ERROR_CODE(0, 0x0359) #define TSDB_CODE_MND_USER_HOST_EXIST TAOS_DEF_ERROR_CODE(0, 0x035A) #define TSDB_CODE_MND_USER_HOST_NOT_EXIST TAOS_DEF_ERROR_CODE(0, 0x035B) -#define TSDB_CODE_MND_TOO_MANY_USER_HOST TAOS_DEF_ERROR_CODE(0, 0x035C) -#define TSDB_CODE_MND_USER_LOCAL_HOST_NOT_DROP TAOS_DEF_ERROR_CODE(0, 0x035D) +#define TSDB_CODE_MND_TOO_MANY_USER_HOST TAOS_DEF_ERROR_CODE(0, 0x035C) +#define TSDB_CODE_MND_USER_LOCAL_HOST_NOT_DROP TAOS_DEF_ERROR_CODE(0, 0x035D) // mnode-stable-part1 #define TSDB_CODE_MND_STB_ALREADY_EXIST TAOS_DEF_ERROR_CODE(0, 0x0360) @@ -294,7 +294,7 @@ int32_t taosGetErrSize(); // #define TSDB_CODE_MND_INVALID_STABLE_NAME TAOS_DEF_ERROR_CODE(0, 0x036D) // 2.x #define TSDB_CODE_MND_INVALID_STB_OPTION TAOS_DEF_ERROR_CODE(0, 0x036E) #define TSDB_CODE_MND_INVALID_ROW_BYTES TAOS_DEF_ERROR_CODE(0, 0x036F) -#define TSDB_CODE_MND_FIELD_VALUE_OVERFLOW TAOS_DEF_ERROR_CODE(0, 0x0370) +// #define TSDB_CODE_MND_FIELD_VALUE_OVERFLOW TAOS_DEF_ERROR_CODE(0, 0x0370) // unused // mnode-func @@ -516,7 +516,7 @@ int32_t taosGetErrSize(); #define TSDB_CODE_VND_DIR_ALREADY_EXIST TAOS_DEF_ERROR_CODE(0, 0x0534) #define TSDB_CODE_VND_META_DATA_UNSAFE_DELETE TAOS_DEF_ERROR_CODE(0, 0x0535) #define TSDB_CODE_VND_COLUMN_COMPRESS_ALREADY_EXIST TAOS_DEF_ERROR_CODE(0, 0x0536) -#define TSDB_CODE_VND_ARB_NOT_SYNCED TAOS_DEF_ERROR_CODE(0, 0x0536) // internal +#define TSDB_CODE_VND_ARB_NOT_SYNCED TAOS_DEF_ERROR_CODE(0, 0x0537) // internal // tsdb #define TSDB_CODE_TDB_INVALID_TABLE_ID TAOS_DEF_ERROR_CODE(0, 0x0600) @@ -927,7 +927,7 @@ int32_t taosGetErrSize(); #define TSDB_CODE_TDLITE_IVLD_OPEN_DIR TAOS_DEF_ERROR_CODE(0, 0x5101) // UTIL -#define TSDB_CODE_UTIL_QUEUE_OUT_OF_MEMORY TAOS_DEF_ERROR_CODE(0, 0x6000) +#define TSDB_CODE_UTIL_QUEUE_OUT_OF_MEMORY TAOS_DEF_ERROR_CODE(0, 0x6000) #ifdef __cplusplus } diff --git a/source/client/src/clientHb.c b/source/client/src/clientHb.c index 340ccfce64..19b6655af1 100644 --- a/source/client/src/clientHb.c +++ b/source/client/src/clientHb.c @@ -135,8 +135,7 @@ static int32_t hbUpdateUserAuthInfo(SAppHbMgr *pAppHbMgr, SUserAuthBatchRsp *bat if (pTscObj->whiteListInfo.fp) { SWhiteListInfo *whiteListInfo = &pTscObj->whiteListInfo; int64_t oldVer = atomic_load_64(&whiteListInfo->ver); - - if (oldVer < pRsp->whiteListVer || pRsp->whiteListVer == 0) { + if (oldVer != pRsp->whiteListVer) { atomic_store_64(&whiteListInfo->ver, pRsp->whiteListVer); if (whiteListInfo->fp) { (*whiteListInfo->fp)(whiteListInfo->param, &pRsp->whiteListVer, TAOS_NOTIFY_WHITELIST_VER); @@ -144,6 +143,14 @@ static int32_t hbUpdateUserAuthInfo(SAppHbMgr *pAppHbMgr, SUserAuthBatchRsp *bat tscDebug("update whitelist version of user %s from %" PRId64 " to %" PRId64 ", tscRid:%" PRIi64, pRsp->user, oldVer, atomic_load_64(&whiteListInfo->ver), pTscObj->id); } + } else { + // Need to update version information to prevent frequent fetching of authentication + // information. + SWhiteListInfo *whiteListInfo = &pTscObj->whiteListInfo; + int64_t oldVer = atomic_load_64(&whiteListInfo->ver); + atomic_store_64(&whiteListInfo->ver, pRsp->whiteListVer); + tscDebug("update whitelist version of user %s from %" PRId64 " to %" PRId64 ", tscRid:%" PRIi64, pRsp->user, + oldVer, atomic_load_64(&whiteListInfo->ver), pTscObj->id); } releaseTscObj(pReq->connKey.tscRid); } @@ -1052,6 +1059,7 @@ SClientHbBatchReq *hbGatherAllInfo(SAppHbMgr *pAppHbMgr) { return NULL; } + int64_t maxIpWhiteVer = 0; void *pIter = NULL; SHbParam param = {0}; while ((pIter = taosHashIterate(pAppHbMgr->activeInfo, pIter))) { @@ -1087,8 +1095,11 @@ SClientHbBatchReq *hbGatherAllInfo(SAppHbMgr *pAppHbMgr) { } } + int64_t ver = atomic_load_64(&pTscObj->whiteListInfo.ver); + maxIpWhiteVer = TMAX(maxIpWhiteVer, ver); releaseTscObj(connKey->tscRid); } + pBatchReq->ipWhiteList = maxIpWhiteVer; return pBatchReq; } diff --git a/source/client/src/clientStmt.c b/source/client/src/clientStmt.c index 32d31585ea..0b907b8661 100644 --- a/source/client/src/clientStmt.c +++ b/source/client/src/clientStmt.c @@ -1258,8 +1258,12 @@ int stmtBindBatch(TAOS_STMT* stmt, TAOS_MULTI_BIND* bind, int32_t colIdx) { pStmt->bInfo.sBindRowNum = bind->num; } - qBindStmtSingleColValue(*pDataBlock, pCols, bind, pStmt->exec.pRequest->msgBuf, pStmt->exec.pRequest->msgBufLen, colIdx, - pStmt->bInfo.sBindRowNum); + code = qBindStmtSingleColValue(*pDataBlock, pCols, bind, pStmt->exec.pRequest->msgBuf, + pStmt->exec.pRequest->msgBufLen, colIdx, pStmt->bInfo.sBindRowNum); + if (code) { + tscError("qBindStmtSingleColValue failed, error:%s", tstrerror(code)); + STMT_ERR_RET(code); + } } int64_t startUs4 = taosGetTimestampUs(); diff --git a/source/common/src/tmsg.c b/source/common/src/tmsg.c index 5b782e62b2..bb61fdc4a5 100644 --- a/source/common/src/tmsg.c +++ b/source/common/src/tmsg.c @@ -485,6 +485,8 @@ int32_t tSerializeSClientHbBatchReq(void *buf, int32_t bufLen, const SClientHbBa SClientHbReq *pReq = taosArrayGet(pBatchReq->reqs, i); if (tSerializeSClientHbReq(&encoder, pReq) < 0) return -1; } + + if (tEncodeI64(&encoder, pBatchReq->ipWhiteList) < 0) return -1; tEndEncode(&encoder); int32_t tlen = encoder.pos; @@ -511,6 +513,10 @@ int32_t tDeserializeSClientHbBatchReq(void *buf, int32_t bufLen, SClientHbBatchR taosArrayPush(pBatchReq->reqs, &req); } + if (!tDecodeIsEnd(&decoder)) { + tDecodeI64(&decoder, &pBatchReq->ipWhiteList); + } + tEndDecode(&decoder); tDecoderClear(&decoder); return 0; diff --git a/source/common/test/msgTypeTable.ini b/source/common/test/msgTypeTable.ini index bdb6aece0c..6e5721075c 100644 --- a/source/common/test/msgTypeTable.ini +++ b/source/common/test/msgTypeTable.ini @@ -36,8 +36,6 @@ TDMT_DND_CHECK_VNODE_LEARNER_CATCHUP = 35 TDMT_DND_CHECK_VNODE_LEARNER_CATCHUP_RSP = 36 TDMT_DND_CREATE_ENCRYPT_KEY = 37 TDMT_DND_CREATE_ENCRYPT_KEY_RSP = 38 -TDMT_DND_MAX_MSG = 39 -TDMT_DND_MAX_MSG_RSP = 40 TDMT_MND_CONNECT = 257 TDMT_MND_CONNECT_RSP = 258 TDMT_MND_CREATE_ACCT = 259 @@ -228,12 +226,12 @@ TDMT_MND_PAUSE_STREAM = 443 TDMT_MND_PAUSE_STREAM_RSP = 444 TDMT_MND_RESUME_STREAM = 445 TDMT_MND_RESUME_STREAM_RSP = 446 -TDMT_MND_STREAM_UPDATE_CHKPT_EVT = 447 -TDMT_MND_STREAM_UPDATE_CHKPT_EVT_RSP = 448 +TDMT_MND_STREAM_CHECKPOINT_TIMER = 447 +TDMT_MND_STREAM_CHECKPOINT_TIMER_RSP = 448 TDMT_MND_STREAM_BEGIN_CHECKPOINT = 449 TDMT_MND_STREAM_BEGIN_CHECKPOINT_RSP = 450 -TDMT_MND_STREAM_CHKPT_REPORT = 451 -TDMT_MND_STREAM_CHKPT_REPORT_RSP = 452 +TDMT_MND_STREAM_CHECKPOINT_CANDIDITATE = 451 +TDMT_MND_STREAM_CHECKPOINT_CANDIDITATE_RSP = 452 TDMT_MND_STREAM_NODECHANGE_CHECK = 453 TDMT_MND_STREAM_NODECHANGE_CHECK_RSP = 454 TDMT_MND_TRIM_DB_TIMER = 455 @@ -276,8 +274,10 @@ TDMT_MND_GET_TSMA = 491 TDMT_MND_GET_TSMA_RSP = 492 TDMT_MND_DROP_TB_WITH_TSMA = 493 TDMT_MND_DROP_TB_WITH_TSMA_RSP = 494 -TDMT_MND_MAX_MSG = 495 -TDMT_MND_MAX_MSG_RSP = 496 +TDMT_MND_STREAM_UPDATE_CHKPT_EVT = 495 +TDMT_MND_STREAM_UPDATE_CHKPT_EVT_RSP = 496 +TDMT_MND_STREAM_CHKPT_REPORT = 497 +TDMT_MND_STREAM_CHKPT_REPORT_RSP = 498 TDMT_VND_SUBMIT = 513 TDMT_VND_SUBMIT_RSP = 514 TDMT_VND_CREATE_TABLE = 515 @@ -382,8 +382,6 @@ TDMT_VND_ARB_CHECK_SYNC = 613 TDMT_VND_ARB_CHECK_SYNC_RSP = 614 TDMT_VND_FETCH_TTL_EXPIRED_TBS = 615 TDMT_VND_FETCH_TTL_EXPIRED_TBS_RSP = 616 -TDMT_VND_MAX_MSG = 617 -TDMT_VND_MAX_MSG_RSP = 618 TDMT_SCH_QUERY = 769 TDMT_SCH_QUERY_RSP = 770 TDMT_SCH_MERGE_QUERY = 771 @@ -406,8 +404,6 @@ TDMT_SCH_LINK_BROKEN = 787 TDMT_SCH_LINK_BROKEN_RSP = 788 TDMT_SCH_TASK_NOTIFY = 789 TDMT_SCH_TASK_NOTIFY_RSP = 790 -TDMT_SCH_MAX_MSG = 791 -TDMT_SCH_MAX_MSG_RSP = 792 TDMT_STREAM_TASK_DEPLOY = 1025 TDMT_STREAM_TASK_DEPLOY_RSP = 1026 TDMT_STREAM_TASK_DROP = 1027 @@ -440,10 +436,6 @@ TDMT_STREAM_DROP = 1053 TDMT_STREAM_DROP_RSP = 1054 TDMT_STREAM_RETRIEVE_TRIGGER = 1055 TDMT_STREAM_RETRIEVE_TRIGGER_RSP = 1056 -TDMT_STREAM_MAX_MSG = 1057 -TDMT_STREAM_MAX_MSG_RSP = 1058 -TDMT_MON_MAX_MSG = 1281 -TDMT_MON_MAX_MSG_RSP = 1282 TDMT_SYNC_TIMEOUT = 1537 TDMT_SYNC_TIMEOUT_RSP = 1538 TDMT_SYNC_TIMEOUT_ELECTION = 1539 @@ -504,8 +496,6 @@ TDMT_SYNC_FORCE_FOLLOWER = 1593 TDMT_SYNC_FORCE_FOLLOWER_RSP = 1594 TDMT_SYNC_SET_ASSIGNED_LEADER = 1595 TDMT_SYNC_SET_ASSIGNED_LEADER_RSP = 1596 -TDMT_SYNC_MAX_MSG = 1597 -TDMT_SYNC_MAX_MSG_RSP = 1598 TDMT_VND_STREAM_SCAN_HISTORY = 1793 TDMT_VND_STREAM_SCAN_HISTORY_RSP = 1794 TDMT_VND_STREAM_CHECK_POINT_SOURCE = 1795 @@ -520,8 +510,6 @@ TDMT_VND_STREAM_UNUSED = 1803 TDMT_VND_STREAM_UNUSED_RSP = 1804 TDMT_VND_GET_STREAM_PROGRESS = 1805 TDMT_VND_GET_STREAM_PROGRESS_RSP = 1806 -TDMT_VND_STREAM_MAX_MSG = 1807 -TDMT_VND_STREAM_MAX_MSG_RSP = 1808 TDMT_VND_TMQ_SUBSCRIBE = 2049 TDMT_VND_TMQ_SUBSCRIBE_RSP = 2050 TDMT_VND_TMQ_DELETE_SUB = 2051 @@ -542,8 +530,6 @@ TDMT_VND_TMQ_VG_WALINFO = 2065 TDMT_VND_TMQ_VG_WALINFO_RSP = 2066 TDMT_VND_TMQ_VG_COMMITTEDINFO = 2067 TDMT_VND_TMQ_VG_COMMITTEDINFO_RSP = 2068 -TDMT_VND_TMQ_MAX_MSG = 2069 -TDMT_VND_TMQ_MAX_MSG_RSP = 2070 TDMT_MND_ARB_HEARTBEAT_TIMER = 2305 TDMT_MND_ARB_HEARTBEAT_TIMER_RSP = 2306 TDMT_MND_ARB_CHECK_SYNC_TIMER = 2307 @@ -552,5 +538,3 @@ TDMT_MND_ARB_UPDATE_GROUP = 2309 TDMT_MND_ARB_UPDATE_GROUP_RSP = 2310 TDMT_MND_ARB_UPDATE_GROUP_BATCH = 2311 TDMT_MND_ARB_UPDATE_GROUP_BATCH_RSP = 2312 -TDMT_MND_ARB_MAX_MSG = 2313 -TDMT_MND_ARB_MAX_MSG_RSP = 2314 diff --git a/source/dnode/mgmt/node_mgmt/src/dmTransport.c b/source/dnode/mgmt/node_mgmt/src/dmTransport.c index a2355ddd22..6649d164a5 100644 --- a/source/dnode/mgmt/node_mgmt/src/dmTransport.c +++ b/source/dnode/mgmt/node_mgmt/src/dmTransport.c @@ -58,8 +58,8 @@ static void dmConvertErrCode(tmsg_t msgType) { if (terrno != TSDB_CODE_APP_IS_STOPPING) { return; } - if ((msgType > TDMT_VND_MSG && msgType < TDMT_VND_MAX_MSG) || - (msgType > TDMT_SCH_MSG && msgType < TDMT_SCH_MAX_MSG)) { + if ((msgType > TDMT_VND_MSG_MIN && msgType < TDMT_VND_MSG_MAX) || + (msgType > TDMT_SCH_MSG_MIN && msgType < TDMT_SCH_MSG_MAX)) { terrno = TSDB_CODE_VND_STOPPED; } } @@ -279,7 +279,7 @@ int32_t dmInitMsgHandle(SDnode *pDnode) { static inline int32_t dmSendReq(const SEpSet *pEpSet, SRpcMsg *pMsg) { SDnode *pDnode = dmInstance(); - if (pDnode->status != DND_STAT_RUNNING && pMsg->msgType < TDMT_SYNC_MSG) { + if (pDnode->status != DND_STAT_RUNNING && pMsg->msgType < TDMT_SYNC_MSG_MIN) { rpcFreeCont(pMsg->pCont); pMsg->pCont = NULL; if (pDnode->status == DND_STAT_INIT) { @@ -296,7 +296,7 @@ static inline int32_t dmSendReq(const SEpSet *pEpSet, SRpcMsg *pMsg) { } static inline int32_t dmSendSyncReq(const SEpSet *pEpSet, SRpcMsg *pMsg) { SDnode *pDnode = dmInstance(); - if (pDnode->status != DND_STAT_RUNNING && pMsg->msgType < TDMT_SYNC_MSG) { + if (pDnode->status != DND_STAT_RUNNING && pMsg->msgType < TDMT_SYNC_MSG_MIN) { rpcFreeCont(pMsg->pCont); pMsg->pCont = NULL; if (pDnode->status == DND_STAT_INIT) { diff --git a/source/dnode/mnode/impl/inc/mndUser.h b/source/dnode/mnode/impl/inc/mndUser.h index 5782890f73..eda39dd29f 100644 --- a/source/dnode/mnode/impl/inc/mndUser.h +++ b/source/dnode/mnode/impl/inc/mndUser.h @@ -38,7 +38,7 @@ SHashObj *mndDupDbHash(SHashObj *pOld); SHashObj *mndDupTableHash(SHashObj *pOld); SHashObj *mndDupTopicHash(SHashObj *pOld); int32_t mndValidateUserAuthInfo(SMnode *pMnode, SUserAuthVersion *pUsers, int32_t numOfUses, void **ppRsp, - int32_t *pRspLen); + int32_t *pRspLen, int64_t ipWhiteListVer); int32_t mndUserRemoveDb(SMnode *pMnode, STrans *pTrans, char *db); int32_t mndUserRemoveStb(SMnode *pMnode, STrans *pTrans, char *stb); int32_t mndUserRemoveView(SMnode *pMnode, STrans *pTrans, char *view); diff --git a/source/dnode/mnode/impl/src/mndCompact.c b/source/dnode/mnode/impl/src/mndCompact.c index abbcb52db4..308089a9c1 100644 --- a/source/dnode/mnode/impl/src/mndCompact.c +++ b/source/dnode/mnode/impl/src/mndCompact.c @@ -542,6 +542,8 @@ void mndCompactSendProgressReq(SMnode *pMnode, SCompactObj *pCompact) { int32_t contLen = tSerializeSQueryCompactProgressReq(NULL, 0, &req); if (contLen < 0) { terrno = TSDB_CODE_OUT_OF_MEMORY; + sdbCancelFetch(pMnode->pSdb, pDetail); + sdbRelease(pMnode->pSdb, pDetail); continue; } diff --git a/source/dnode/mnode/impl/src/mndDb.c b/source/dnode/mnode/impl/src/mndDb.c index 78e3ceabce..88b38d5e38 100644 --- a/source/dnode/mnode/impl/src/mndDb.c +++ b/source/dnode/mnode/impl/src/mndDb.c @@ -1125,11 +1125,22 @@ static int32_t mndSetAlterDbRedoActions(SMnode *pMnode, STrans *pTrans, SDbObj * if (pNewDb->cfg.withArbitrator) { SArbGroup arbGroup = {0}; mndArbGroupInitFromVgObj(&newVgroup, &arbGroup); - if (mndSetCreateArbGroupCommitLogs(pTrans, &arbGroup) != 0) return -1; + if (mndSetCreateArbGroupCommitLogs(pTrans, &arbGroup) != 0) { + sdbCancelFetch(pSdb, pIter); + sdbRelease(pSdb, pVgroup); + taosArrayDestroy(pArray); + return -1; + } + } else { SArbGroup arbGroup = {0}; mndArbGroupInitFromVgObj(pVgroup, &arbGroup); - if (mndSetDropArbGroupCommitLogs(pTrans, &arbGroup) != 0) return -1; + if (mndSetDropArbGroupCommitLogs(pTrans, &arbGroup) != 0) { + sdbCancelFetch(pSdb, pIter); + sdbRelease(pSdb, pVgroup); + taosArrayDestroy(pArray); + return -1; + } } } } diff --git a/source/dnode/mnode/impl/src/mndDef.c b/source/dnode/mnode/impl/src/mndDef.c index 091edc6ab0..5164557184 100644 --- a/source/dnode/mnode/impl/src/mndDef.c +++ b/source/dnode/mnode/impl/src/mndDef.c @@ -537,7 +537,7 @@ SMqSubscribeObj *tNewSubscribeObj(const char *key) { memcpy(pSubObj->key, key, TSDB_SUBSCRIBE_KEY_LEN); taosInitRWLatch(&pSubObj->lock); pSubObj->vgNum = 0; - pSubObj->consumerHash = taosHashInit(64, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT), false, HASH_NO_LOCK); + pSubObj->consumerHash = taosHashInit(64, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT), false, HASH_ENTRY_LOCK); // TODO set hash free fp /*taosHashSetFreeFp(pSubObj->consumerHash, tDeleteSMqConsumerEp);*/ @@ -557,7 +557,7 @@ SMqSubscribeObj *tCloneSubscribeObj(const SMqSubscribeObj *pSub) { pSubNew->withMeta = pSub->withMeta; pSubNew->vgNum = pSub->vgNum; - pSubNew->consumerHash = taosHashInit(64, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT), false, HASH_NO_LOCK); + pSubNew->consumerHash = taosHashInit(64, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT), false, HASH_ENTRY_LOCK); // TODO set hash free fp /*taosHashSetFreeFp(pSubNew->consumerHash, tDeleteSMqConsumerEp);*/ void *pIter = NULL; diff --git a/source/dnode/mnode/impl/src/mndDnode.c b/source/dnode/mnode/impl/src/mndDnode.c index 1212519ea2..ca6e1cd21b 100644 --- a/source/dnode/mnode/impl/src/mndDnode.c +++ b/source/dnode/mnode/impl/src/mndDnode.c @@ -1351,7 +1351,7 @@ static int32_t mndProcessConfigDnodeReq(SRpcMsg *pReq) { terrno = TSDB_CODE_INVALID_MSG; return -1; } - + int8_t updateIpWhiteList = 0; mInfo("dnode:%d, start to config, option:%s, value:%s", cfgReq.dnodeId, cfgReq.config, cfgReq.value); if (mndCheckOperPrivilege(pMnode, pReq->info.conn.user, MND_OPER_CONFIG_DNODE) != 0) { tFreeSMCfgDnodeReq(&cfgReq); @@ -1386,6 +1386,9 @@ static int32_t mndProcessConfigDnodeReq(SRpcMsg *pReq) { terrno = TSDB_CODE_INVALID_CFG; goto _err_out; } + if (strncasecmp(dcfgReq.config, "enableWhiteList", strlen("enableWhiteList")) == 0) { + updateIpWhiteList = 1; + } if (cfgCheckRangeForDynUpdate(taosGetCfg(), dcfgReq.config, dcfgReq.value, true) != 0) goto _err_out; } @@ -1399,7 +1402,11 @@ static int32_t mndProcessConfigDnodeReq(SRpcMsg *pReq) { tFreeSMCfgDnodeReq(&cfgReq); - return mndSendCfgDnodeReq(pMnode, cfgReq.dnodeId, &dcfgReq); + int32_t code = mndSendCfgDnodeReq(pMnode, cfgReq.dnodeId, &dcfgReq); + + // dont care suss or succ; + if (updateIpWhiteList) mndRefreshUserIpWhiteList(pMnode); + return code; _err_out: tFreeSMCfgDnodeReq(&cfgReq); diff --git a/source/dnode/mnode/impl/src/mndPrivilege.c b/source/dnode/mnode/impl/src/mndPrivilege.c index fd7f9e5fb3..ce082ad45d 100644 --- a/source/dnode/mnode/impl/src/mndPrivilege.c +++ b/source/dnode/mnode/impl/src/mndPrivilege.c @@ -50,7 +50,7 @@ int32_t mndSetUserAuthRsp(SMnode *pMnode, SUserObj *pUser, SGetUserAuthRsp *pRsp pRsp->sysInfo = pUser->sysInfo; pRsp->version = pUser->authVersion; pRsp->passVer = pUser->passVersion; - pRsp->whiteListVer = mndGetUserIpWhiteListVer(pMnode, pUser); + pRsp->whiteListVer = pMnode->ipWhiteVer; return 0; } diff --git a/source/dnode/mnode/impl/src/mndProfile.c b/source/dnode/mnode/impl/src/mndProfile.c index db268c28de..0838b44990 100644 --- a/source/dnode/mnode/impl/src/mndProfile.c +++ b/source/dnode/mnode/impl/src/mndProfile.c @@ -62,6 +62,7 @@ typedef struct { int32_t onlineDnodes; SEpSet epSet; SArray *pQnodeList; + int64_t ipWhiteListVer; } SConnPreparedObj; static SConnObj *mndCreateConn(SMnode *pMnode, const char *user, int8_t connType, uint32_t ip, uint16_t port, @@ -299,12 +300,12 @@ static int32_t mndProcessConnectReq(SRpcMsg *pReq) { connectRsp.svrTimestamp = taosGetTimestampSec(); connectRsp.passVer = pUser->passVersion; connectRsp.authVer = pUser->authVersion; - connectRsp.whiteListVer = mndGetUserIpWhiteListVer(pMnode, pUser); connectRsp.monitorParas.tsEnableMonitor = tsEnableMonitor; connectRsp.monitorParas.tsMonitorInterval = tsMonitorInterval; connectRsp.monitorParas.tsSlowLogScope = tsSlowLogScope; connectRsp.monitorParas.tsSlowLogMaxLen = tsSlowLogMaxLen; connectRsp.monitorParas.tsSlowLogThreshold = tsSlowLogThreshold; + connectRsp.whiteListVer = pUser->ipWhiteListVer; strcpy(connectRsp.sVer, version); snprintf(connectRsp.sDetailVer, sizeof(connectRsp.sDetailVer), "ver:%s\nbuild:%s\ngitinfo:%s", version, buildinfo, @@ -572,7 +573,8 @@ static int32_t mndProcessQueryHeartBeat(SMnode *pMnode, SRpcMsg *pMsg, SClientHb case HEARTBEAT_KEY_USER_AUTHINFO: { void *rspMsg = NULL; int32_t rspLen = 0; - mndValidateUserAuthInfo(pMnode, kv->value, kv->valueLen / sizeof(SUserAuthVersion), &rspMsg, &rspLen); + mndValidateUserAuthInfo(pMnode, kv->value, kv->valueLen / sizeof(SUserAuthVersion), &rspMsg, &rspLen, + pObj->ipWhiteListVer); if (rspMsg && rspLen > 0) { SKv kv1 = {.key = HEARTBEAT_KEY_USER_AUTHINFO, .valueLen = rspLen, .value = rspMsg}; taosArrayPush(hbRsp.info, &kv1); @@ -654,6 +656,7 @@ static int32_t mndProcessHeartBeatReq(SRpcMsg *pReq) { SConnPreparedObj obj = {0}; obj.totalDnodes = mndGetDnodeSize(pMnode); + obj.ipWhiteListVer = batchReq.ipWhiteList; mndGetOnlineDnodeNum(pMnode, &obj.onlineDnodes); mndGetMnodeEpSet(pMnode, &obj.epSet); mndCreateQnodeList(pMnode, &obj.pQnodeList, -1); diff --git a/source/dnode/mnode/impl/src/mndStb.c b/source/dnode/mnode/impl/src/mndStb.c index 8abcd1e9c8..73542bbb1e 100644 --- a/source/dnode/mnode/impl/src/mndStb.c +++ b/source/dnode/mnode/impl/src/mndStb.c @@ -884,7 +884,7 @@ int32_t mndBuildStbFromReq(SMnode *pMnode, SStbObj *pDst, SMCreateStbReq *pCreat } if (pDst->nextColId < 0 || pDst->nextColId >= 0x7fff - pDst->numOfColumns - pDst->numOfTags) { - terrno = TSDB_CODE_MND_FIELD_VALUE_OVERFLOW; + terrno = TSDB_CODE_OUT_OF_RANGE; return -1; } @@ -1148,7 +1148,7 @@ static int32_t mndBuildStbFromAlter(SStbObj *pStb, SStbObj *pDst, SMCreateStbReq } if (pDst->nextColId < 0 || pDst->nextColId >= 0x7fff - pDst->numOfColumns - pDst->numOfTags) { - terrno = TSDB_CODE_MND_FIELD_VALUE_OVERFLOW; + terrno = TSDB_CODE_OUT_OF_RANGE; return -1; } @@ -1414,7 +1414,7 @@ static int32_t mndAddSuperTableTag(const SStbObj *pOld, SStbObj *pNew, SArray *p } if (pNew->nextColId < 0 || pNew->nextColId >= 0x7fff - ntags) { - terrno = TSDB_CODE_MND_FIELD_VALUE_OVERFLOW; + terrno = TSDB_CODE_OUT_OF_RANGE; return -1; } @@ -1806,7 +1806,7 @@ static int32_t mndAddSuperTableColumn(const SStbObj *pOld, SStbObj *pNew, SArray } if (pNew->nextColId < 0 || pNew->nextColId >= 0x7fff - ncols) { - terrno = TSDB_CODE_MND_FIELD_VALUE_OVERFLOW; + terrno = TSDB_CODE_OUT_OF_RANGE; return -1; } diff --git a/source/dnode/mnode/impl/src/mndStream.c b/source/dnode/mnode/impl/src/mndStream.c index c9598c4b38..af20617457 100644 --- a/source/dnode/mnode/impl/src/mndStream.c +++ b/source/dnode/mnode/impl/src/mndStream.c @@ -1075,7 +1075,7 @@ static bool taskNodeIsUpdated(SMnode *pMnode) { mWarn("not all vnodes ready, quit from vnodes status check"); taosArrayDestroy(pNodeSnapshot); taosThreadMutexUnlock(&execInfo.lock); - return 0; + return true; } SVgroupChangeInfo changeInfo = mndFindChangedNodeInfo(pMnode, execInfo.pNodeList, pNodeSnapshot); @@ -1911,9 +1911,51 @@ static int32_t mndProcessPauseStreamReq(SRpcMsg *pReq) { bool updated = taskNodeIsUpdated(pMnode); if (updated) { mError("tasks are not ready for pause, node update detected"); + sdbRelease(pMnode->pSdb, pStream); return -1; } + + { // check for tasks, if tasks are not ready, not allowed to pause + bool found = false; + bool readyToPause = true; + taosThreadMutexLock(&execInfo.lock); + + for(int32_t i = 0; i < taosArrayGetSize(execInfo.pTaskList); ++i) { + STaskId *p = taosArrayGet(execInfo.pTaskList, i); + + STaskStatusEntry *pEntry = taosHashGet(execInfo.pTaskMap, p, sizeof(*p)); + if (pEntry == NULL) { + continue; + } + + if (pEntry->id.streamId != pStream->uid) { + continue; + } + + if (pEntry->status == TASK_STATUS__UNINIT || pEntry->status == TASK_STATUS__CK) { + mError("stream:%s uid:0x%" PRIx64 " vgId:%d task:0x%" PRIx64 " status:%s, not ready for pause", pStream->name, + pStream->uid, pEntry->nodeId, pEntry->id.taskId, streamTaskGetStatusStr(pEntry->status)); + readyToPause = false; + } + + found = true; + } + + taosThreadMutexUnlock(&execInfo.lock); + if (!found) { + mError("stream:%s task not report status yet, not ready for pause", pauseReq.name); + sdbRelease(pMnode->pSdb, pStream); + return -1; + } + + if (!readyToPause) { + mError("stream:%s task not ready for pause yet", pauseReq.name); + sdbRelease(pMnode->pSdb, pStream); + return -1; + } + } + STrans *pTrans = doCreateTrans(pMnode, pStream, pReq, TRN_CONFLICT_NOTHING, MND_STREAM_PAUSE_NAME, "pause the stream"); if (pTrans == NULL) { diff --git a/source/dnode/mnode/impl/src/mndSubscribe.c b/source/dnode/mnode/impl/src/mndSubscribe.c index ffb723756c..5f019d07f5 100644 --- a/source/dnode/mnode/impl/src/mndSubscribe.c +++ b/source/dnode/mnode/impl/src/mndSubscribe.c @@ -799,6 +799,29 @@ static int32_t initRebOutput(SMqRebOutputObj *rebOutput) { return 0; } +// This function only works when there are dirty consumers +static void checkConsumer(SMnode *pMnode, SMqSubscribeObj* pSub){ + void *pIter = NULL; + while (1) { + pIter = taosHashIterate(pSub->consumerHash, pIter); + if (pIter == NULL) { + break; + } + + SMqConsumerEp *pConsumerEp = (SMqConsumerEp *)pIter; + SMqConsumerObj *pConsumer = mndAcquireConsumer(pMnode, pConsumerEp->consumerId); + if (pConsumer != NULL) { + mndReleaseConsumer(pMnode, pConsumer); + continue; + } + mError("consumer:0x%" PRIx64 " not exists in sdb for exception", pConsumerEp->consumerId); + taosArrayAddAll(pSub->unassignedVgs, pConsumerEp->vgs); + + taosArrayDestroy(pConsumerEp->vgs); + taosHashRemove(pSub->consumerHash, &pConsumerEp->consumerId, sizeof(int64_t)); + } +} + static int32_t buildRebOutput(SMnode *pMnode, SMqRebInputObj *rebInput, SMqRebOutputObj *rebOutput){ const char *key = rebInput->pRebInfo->key; SMqSubscribeObj *pSub = mndAcquireSubscribeByKey(pMnode, key); @@ -834,8 +857,9 @@ static int32_t buildRebOutput(SMnode *pMnode, SMqRebInputObj *rebInput, SMqRebOu mInfo("[rebalance] sub topic:%s has no consumers sub yet", key); } else { taosRLockLatch(&pSub->lock); - rebInput->oldConsumerNum = taosHashGetSize(pSub->consumerHash); rebOutput->pSub = tCloneSubscribeObj(pSub); + checkConsumer(pMnode, rebOutput->pSub); + rebInput->oldConsumerNum = taosHashGetSize(rebOutput->pSub->consumerHash); taosRUnLockLatch(&pSub->lock); mInfo("[rebalance] sub topic:%s has %d consumers sub till now", key, rebInput->oldConsumerNum); @@ -910,6 +934,7 @@ END: static int32_t sendDeleteSubToVnode(SMnode *pMnode, SMqSubscribeObj *pSub, STrans *pTrans){ void* pIter = NULL; SVgObj* pVgObj = NULL; + int32_t ret = 0; while (1) { pIter = sdbFetch(pMnode->pSdb, SDB_VGROUP, pIter, (void**)&pVgObj); if (pIter == NULL) { @@ -923,8 +948,8 @@ static int32_t sendDeleteSubToVnode(SMnode *pMnode, SMqSubscribeObj *pSub, STran SMqVDeleteReq *pReq = taosMemoryCalloc(1, sizeof(SMqVDeleteReq)); if(pReq == NULL){ terrno = TSDB_CODE_OUT_OF_MEMORY; - sdbRelease(pMnode->pSdb, pVgObj); - return -1; + ret = -1; + goto END; } pReq->head.vgId = htonl(pVgObj->vgId); pReq->vgId = pVgObj->vgId; @@ -940,33 +965,50 @@ static int32_t sendDeleteSubToVnode(SMnode *pMnode, SMqSubscribeObj *pSub, STran sdbRelease(pMnode->pSdb, pVgObj); if (mndTransAppendRedoAction(pTrans, &action) != 0) { - taosMemoryFree(pReq); - return -1; + ret = -1; + goto END; } } - return 0; + END: + sdbRelease(pMnode->pSdb, pVgObj); + sdbCancelFetch(pMnode->pSdb, pIter); + return ret; } static int32_t mndDropConsumerByGroup(SMnode *pMnode, STrans *pTrans, char *cgroup, char *topic){ void *pIter = NULL; SMqConsumerObj *pConsumer = NULL; + int ret = 0; while (1) { pIter = sdbFetch(pMnode->pSdb, SDB_CONSUMER, pIter, (void **)&pConsumer); if (pIter == NULL) { break; } - if (strcmp(cgroup, pConsumer->cgroup) == 0 && taosArrayGetSize(pConsumer->currentTopics) == 0) { - int32_t code = mndSetConsumerDropLogs(pTrans, pConsumer); - if (code != 0) { - sdbRelease(pMnode->pSdb, pConsumer); - sdbCancelFetch(pMnode->pSdb, pIter); - return code; + // drop consumer in lost status, other consumers not in lost status already deleted by rebalance + if (pConsumer->status != MQ_CONSUMER_STATUS_LOST || strcmp(cgroup, pConsumer->cgroup) != 0) { + sdbRelease(pMnode->pSdb, pConsumer); + continue; + } + int32_t sz = taosArrayGetSize(pConsumer->assignedTopics); + for (int32_t i = 0; i < sz; i++) { + char *name = taosArrayGetP(pConsumer->assignedTopics, i); + if (strcmp(topic, name) == 0) { + int32_t code = mndSetConsumerDropLogs(pTrans, pConsumer); + if (code != 0) { + ret = code; + goto END; + } } } + sdbRelease(pMnode->pSdb, pConsumer); } - return 0; + +END: + sdbRelease(pMnode->pSdb, pConsumer); + sdbCancelFetch(pMnode->pSdb, pIter); + return ret; } static int32_t mndProcessDropCgroupReq(SRpcMsg *pMsg) { diff --git a/source/dnode/mnode/impl/src/mndUser.c b/source/dnode/mnode/impl/src/mndUser.c index 68c935d3be..fd5267e471 100644 --- a/source/dnode/mnode/impl/src/mndUser.c +++ b/source/dnode/mnode/impl/src/mndUser.c @@ -2805,7 +2805,7 @@ static void mndCancelGetNextPrivileges(SMnode *pMnode, void *pIter) { } int32_t mndValidateUserAuthInfo(SMnode *pMnode, SUserAuthVersion *pUsers, int32_t numOfUses, void **ppRsp, - int32_t *pRspLen) { + int32_t *pRspLen, int64_t ipWhiteListVer) { SUserAuthBatchRsp batchRsp = {0}; batchRsp.pArray = taosArrayInit(numOfUses, sizeof(SGetUserAuthRsp)); if (batchRsp.pArray == NULL) { @@ -2827,7 +2827,7 @@ int32_t mndValidateUserAuthInfo(SMnode *pMnode, SUserAuthVersion *pUsers, int32_ } pUsers[i].version = ntohl(pUsers[i].version); - if (pUser->authVersion <= pUsers[i].version) { + if (pUser->authVersion <= pUsers[i].version && ipWhiteListVer == pMnode->ipWhiteVer) { mndReleaseUser(pMnode, pUser); continue; } diff --git a/source/dnode/mnode/sdb/src/sdbHash.c b/source/dnode/mnode/sdb/src/sdbHash.c index e7a86b082f..4043ff6a12 100644 --- a/source/dnode/mnode/sdb/src/sdbHash.c +++ b/source/dnode/mnode/sdb/src/sdbHash.c @@ -70,6 +70,8 @@ const char *sdbTableName(ESdbType type) { return "compact"; case SDB_COMPACT_DETAIL: return "compact_detail"; + case SDB_GRANT: + return "grant"; case SDB_ARBGROUP: return "arb_group"; default: diff --git a/source/dnode/snode/src/snode.c b/source/dnode/snode/src/snode.c index 481033508b..0eb0db002f 100644 --- a/source/dnode/snode/src/snode.c +++ b/source/dnode/snode/src/snode.c @@ -154,7 +154,7 @@ int32_t sndProcessWriteMsg(SSnode *pSnode, SRpcMsg *pMsg, SRpcMsg *pRsp) { case TDMT_STREAM_TASK_RESUME: return tqStreamTaskProcessTaskResumeReq(pSnode->pMeta, pMsg->info.conn.applyIndex, pMsg->pCont, false); case TDMT_STREAM_TASK_UPDATE_CHKPT: - return tqStreamTaskProcessUpdateCheckpointReq(pSnode->pMeta, pMsg->pCont, pMsg->contLen); + return tqStreamTaskProcessUpdateCheckpointReq(pSnode->pMeta, true, pMsg->pCont, pMsg->contLen); default: ASSERT(0); } diff --git a/source/dnode/vnode/src/tq/tq.c b/source/dnode/vnode/src/tq/tq.c index 08fdda0e29..07d77905cb 100644 --- a/source/dnode/vnode/src/tq/tq.c +++ b/source/dnode/vnode/src/tq/tq.c @@ -1013,7 +1013,7 @@ int32_t tqProcessTaskDropReq(STQ* pTq, char* msg, int32_t msgLen) { } int32_t tqProcessTaskUpdateCheckpointReq(STQ* pTq, char* msg, int32_t msgLen) { - return tqStreamTaskProcessUpdateCheckpointReq(pTq->pStreamMeta, msg, msgLen); + return tqStreamTaskProcessUpdateCheckpointReq(pTq->pStreamMeta, pTq->pVnode->restored, msg, msgLen); } int32_t tqProcessTaskPauseReq(STQ* pTq, int64_t sversion, char* msg, int32_t msgLen) { diff --git a/source/dnode/vnode/src/tqCommon/tqCommon.c b/source/dnode/vnode/src/tqCommon/tqCommon.c index 50a52e58c5..0f52483149 100644 --- a/source/dnode/vnode/src/tqCommon/tqCommon.c +++ b/source/dnode/vnode/src/tqCommon/tqCommon.c @@ -640,7 +640,7 @@ int32_t tqStreamTaskProcessDropReq(SStreamMeta* pMeta, char* msg, int32_t msgLen return 0; } -int32_t tqStreamTaskProcessUpdateCheckpointReq(SStreamMeta* pMeta, char* msg, int32_t msgLen) { +int32_t tqStreamTaskProcessUpdateCheckpointReq(SStreamMeta* pMeta, bool restored, char* msg, int32_t msgLen) { SVUpdateCheckpointInfoReq* pReq = (SVUpdateCheckpointInfoReq*)msg; int32_t vgId = pMeta->vgId; @@ -652,13 +652,14 @@ int32_t tqStreamTaskProcessUpdateCheckpointReq(SStreamMeta* pMeta, char* msg, in SStreamTask** ppTask = (SStreamTask**)taosHashGet(pMeta->pTasksMap, &id, sizeof(id)); if (ppTask != NULL && (*ppTask) != NULL) { - streamTaskUpdateTaskCheckpointInfo(*ppTask, pReq); + streamTaskUpdateTaskCheckpointInfo(*ppTask, restored, pReq); } else { // failed to get the task. tqError("vgId:%d failed to locate the s-task:0x%x to update the checkpoint info, it may have been dropped already", vgId, pReq->taskId); } streamMetaWUnLock(pMeta); + // always return success when handling the requirement issued by mnode during transaction. return TSDB_CODE_SUCCESS; } @@ -853,7 +854,6 @@ int32_t tqStreamTaskProcessTaskResetReq(SStreamMeta* pMeta, SRpcMsg* pMsg) { } else if (pState->state == TASK_STATUS__UNINIT) { tqDebug("s-task:%s start task by checking downstream tasks", pTask->id.idStr); ASSERT(pTask->status.downstreamReady == 0); -// /*int32_t ret = */ streamTaskHandleEvent(pTask->status.pSM, TASK_EVENT_INIT); tqStreamStartOneTaskAsync(pMeta, pTask->pMsgCb, pTask->id.streamId, pTask->id.taskId); } else { tqDebug("s-task:%s status:%s do nothing after receiving reset-task from mnode", pTask->id.idStr, pState->name); @@ -883,7 +883,7 @@ int32_t tqStreamTaskProcessRetrieveTriggerReq(SStreamMeta* pMeta, SRpcMsg* pMsg) tqError("s-task:%s not ready for checkpoint-trigger retrieve from 0x%x, since downstream not ready", pTask->id.idStr, (int32_t)pReq->downstreamTaskId); - streamTaskSendCheckpointTriggerMsg(pTask, pReq->downstreamTaskId, &pMsg->info, TSDB_CODE_STREAM_TASK_IVLD_STATUS); + streamTaskSendCheckpointTriggerMsg(pTask, pReq->downstreamTaskId, pReq->downstreamNodeId, &pMsg->info, TSDB_CODE_STREAM_TASK_IVLD_STATUS); streamMetaReleaseTask(pMeta, pTask); return TSDB_CODE_SUCCESS; @@ -901,7 +901,7 @@ int32_t tqStreamTaskProcessRetrieveTriggerReq(SStreamMeta* pMeta, SRpcMsg* pMsg) // re-send the lost checkpoint-trigger msg to downstream task tqDebug("s-task:%s re-send checkpoint-trigger to:0x%x, checkpointId:%" PRId64 ", transId:%d", pTask->id.idStr, (int32_t)pReq->downstreamTaskId, checkpointId, transId); - streamTaskSendCheckpointTriggerMsg(pTask, pReq->downstreamTaskId, &pMsg->info, TSDB_CODE_SUCCESS); + streamTaskSendCheckpointTriggerMsg(pTask, pReq->downstreamTaskId, pReq->downstreamNodeId, &pMsg->info, TSDB_CODE_SUCCESS); } else { // not send checkpoint-trigger yet, wait int32_t recv = 0, total = 0; streamTaskGetTriggerRecvStatus(pTask, &recv, &total); @@ -914,7 +914,7 @@ int32_t tqStreamTaskProcessRetrieveTriggerReq(SStreamMeta* pMeta, SRpcMsg* pMsg) "sending checkpoint-source/trigger", pTask->id.idStr, recv, total); } - streamTaskSendCheckpointTriggerMsg(pTask, pReq->downstreamTaskId, &pMsg->info, TSDB_CODE_ACTION_IN_PROGRESS); + streamTaskSendCheckpointTriggerMsg(pTask, pReq->downstreamTaskId, pReq->downstreamNodeId, &pMsg->info, TSDB_CODE_ACTION_IN_PROGRESS); } } else { // upstream not recv the checkpoint-source/trigger till now ASSERT(pState->state == TASK_STATUS__READY || pState->state == TASK_STATUS__HALT); @@ -922,7 +922,7 @@ int32_t tqStreamTaskProcessRetrieveTriggerReq(SStreamMeta* pMeta, SRpcMsg* pMsg) "s-task:%s not recv checkpoint-source from mnode or checkpoint-trigger from upstream yet, wait for all " "upstream sending checkpoint-source/trigger", pTask->id.idStr); - streamTaskSendCheckpointTriggerMsg(pTask, pReq->downstreamTaskId, &pMsg->info, TSDB_CODE_ACTION_IN_PROGRESS); + streamTaskSendCheckpointTriggerMsg(pTask, pReq->downstreamTaskId, pReq->downstreamNodeId, &pMsg->info, TSDB_CODE_ACTION_IN_PROGRESS); } streamMetaReleaseTask(pMeta, pTask); @@ -998,8 +998,18 @@ static int32_t tqProcessTaskResumeImpl(void* handle, SStreamTask* pTask, int64_t int32_t level = pTask->info.taskLevel; if (level == TASK_LEVEL__SINK) { - if (status == TASK_STATUS__UNINIT) { - } + ASSERT (status != TASK_STATUS__UNINIT); /*{ +// tqDebug("s-task:%s initialize the uninit sink stream task after resume from pause", pTask->id.idStr); +// +// if (pTask->pBackend == NULL) { // TODO: add test cases for this +// int32_t code = pMeta->expandTaskFn(pTask); +// if (code != TSDB_CODE_SUCCESS) { +// tqError("s-task:%s vgId:%d failed to expand stream backend", pTask->id.idStr, vgId); +// streamMetaAddFailedTaskSelf(pTask, pTask->execInfo.readyTs); +// } +// } +// int32_t ret = streamTaskHandleEvent(pTask->status.pSM, TASK_EVENT_INIT); + }*/ streamMetaReleaseTask(pMeta, pTask); return 0; } @@ -1025,11 +1035,21 @@ static int32_t tqProcessTaskResumeImpl(void* handle, SStreamTask* pTask, int64_t } else { streamTrySchedExec(pTask); } - } else if (status == TASK_STATUS__UNINIT) { - // todo: fill-history task init ? - if (pTask->info.fillHistory == 0) { - streamTaskHandleEvent(pTask->status.pSM, TASK_EVENT_INIT); - } + } else { + ASSERT (status != TASK_STATUS__UNINIT);// { // todo: fill-history task init ? +// if (pTask->info.fillHistory == 0) { + // tqDebug("s-task:%s initialize the uninit task after resume from pause", pTask->id.idStr); + // + // if (pTask->pBackend == NULL) { // TODO: add test cases for this + // int32_t code = pMeta->expandTaskFn(pTask); + // if (code != TSDB_CODE_SUCCESS) { + // tqError("s-task:%s vgId:%d failed to expand stream backend", pTask->id.idStr, vgId); + // streamMetaAddFailedTaskSelf(pTask, pTask->execInfo.readyTs); + // } + // } + // int32_t ret = */streamTaskHandleEvent(pTask->status.pSM, TASK_EVENT_INIT); +// } +// } } streamMetaReleaseTask(pMeta, pTask); diff --git a/source/libs/parser/src/parInsertStmt.c b/source/libs/parser/src/parInsertStmt.c index 648a119712..44f8bd90b0 100644 --- a/source/libs/parser/src/parInsertStmt.c +++ b/source/libs/parser/src/parInsertStmt.c @@ -410,6 +410,11 @@ int32_t qBindStmtSingleColValue(void* pBlock, SArray* pCols, TAOS_MULTI_BIND* bi return buildInvalidOperationMsg(&pBuf, "row number in each bind param should be the same"); } + // Column index exceeds the number of columns + if (colIdx >= pCols->size && pCol == NULL) { + return buildInvalidOperationMsg(&pBuf, "column index exceeds the number of columns"); + } + if (bind->buffer_type != pColSchema->type) { return buildInvalidOperationMsg(&pBuf, "column type mis-match with buffer type"); } diff --git a/source/libs/stream/inc/streamBackendRocksdb.h b/source/libs/stream/inc/streamBackendRocksdb.h index 35114a1be6..6b81ac87ee 100644 --- a/source/libs/stream/inc/streamBackendRocksdb.h +++ b/source/libs/stream/inc/streamBackendRocksdb.h @@ -257,7 +257,8 @@ int32_t bkdMgtGetDelta(SBkdMgt* bm, char* taskId, int64_t chkpId, SArray* list, int32_t bkdMgtDumpTo(SBkdMgt* bm, char* taskId, char* dname); void bkdMgtDestroy(SBkdMgt* bm); -int32_t taskDbGenChkpUploadData(void* arg, void* bkdMgt, int64_t chkpId, int8_t type, char** path, SArray* list); +int32_t taskDbGenChkpUploadData(void* arg, void* bkdMgt, int64_t chkpId, int8_t type, char** path, SArray* list, + const char* id); void* taskAcquireDb(int64_t refId); void taskReleaseDb(int64_t refId); diff --git a/source/libs/stream/inc/streamInt.h b/source/libs/stream/inc/streamInt.h index be3da64c6a..08d0a5e486 100644 --- a/source/libs/stream/inc/streamInt.h +++ b/source/libs/stream/inc/streamInt.h @@ -194,7 +194,7 @@ void streamTaskSetRetryInfoForLaunch(SHistoryTaskInfo* pInfo); int32_t streamTaskResetTimewindowFilter(SStreamTask* pTask); void streamTaskClearActiveInfo(SActiveCheckpointInfo* pInfo); -void streamClearChkptReadyMsg(SStreamTask* pTask); +void streamClearChkptReadyMsg(SActiveCheckpointInfo* pActiveInfo); EExtractDataCode streamTaskGetDataFromInputQ(SStreamTask* pTask, SStreamQueueItem** pInput, int32_t* numOfBlocks, int32_t* blockSize); int32_t streamQueueItemGetSize(const SStreamQueueItem* pItem); diff --git a/source/libs/stream/src/streamBackendRocksdb.c b/source/libs/stream/src/streamBackendRocksdb.c index f614ecfd48..c151193284 100644 --- a/source/libs/stream/src/streamBackendRocksdb.c +++ b/source/libs/stream/src/streamBackendRocksdb.c @@ -2053,7 +2053,11 @@ STaskDbWrapper* taskDbOpenImpl(const char* key, char* statePath, char* dbPath) { stInfo("%s newly create db in state-backend", key); // pre create db pTaskDb->db = rocksdb_open(pTaskDb->pCfOpts[0], dbPath, &err); - if (pTaskDb->db == NULL) goto _EXIT; + if (pTaskDb->db == NULL) { + stError("%s open state-backend failed, reason:%s", key, err); + goto _EXIT; + } + rocksdb_close(pTaskDb->db); if (cfNames != NULL) { @@ -2181,7 +2185,6 @@ void taskDbDestroy(void* pDb, bool flush) { void taskDbDestroy2(void* pDb) { taskDbDestroy(pDb, true); } int32_t taskDbGenChkpUploadData__rsync(STaskDbWrapper* pDb, int64_t chkpId, char** path) { - int64_t st = taosGetTimestampMs(); int32_t code = -1; int64_t refId = pDb->refId; @@ -2202,15 +2205,15 @@ int32_t taskDbGenChkpUploadData__rsync(STaskDbWrapper* pDb, int64_t chkpId, char return code; } -int32_t taskDbGenChkpUploadData__s3(STaskDbWrapper* pDb, void* bkdChkpMgt, int64_t chkpId, char** path, SArray* list) { +int32_t taskDbGenChkpUploadData__s3(STaskDbWrapper* pDb, void* bkdChkpMgt, int64_t chkpId, char** path, SArray* list, const char* idStr) { int32_t code = 0; SBkdMgt* p = (SBkdMgt*)bkdChkpMgt; char* temp = taosMemoryCalloc(1, strlen(pDb->path) + 32); - sprintf(temp, "%s%s%s%" PRId64 "", pDb->path, TD_DIRSEP, "tmp", chkpId); + sprintf(temp, "%s%s%s%" PRId64, pDb->path, TD_DIRSEP, "tmp", chkpId); if (taosDirExist(temp)) { - cleanDir(temp, ""); + cleanDir(temp, idStr); } else { taosMkDir(temp); } @@ -2220,7 +2223,8 @@ int32_t taskDbGenChkpUploadData__s3(STaskDbWrapper* pDb, void* bkdChkpMgt, int64 return code; } -int32_t taskDbGenChkpUploadData(void* arg, void* mgt, int64_t chkpId, int8_t type, char** path, SArray* list) { + +int32_t taskDbGenChkpUploadData(void* arg, void* mgt, int64_t chkpId, int8_t type, char** path, SArray* list, const char* idStr) { int32_t code = -1; STaskDbWrapper* pDb = arg; ECHECKPOINT_BACKUP_TYPE utype = type; @@ -2229,7 +2233,7 @@ int32_t taskDbGenChkpUploadData(void* arg, void* mgt, int64_t chkpId, int8_t typ if (utype == DATA_UPLOAD_RSYNC) { code = taskDbGenChkpUploadData__rsync(pDb, chkpId, path); } else if (utype == DATA_UPLOAD_S3) { - code = taskDbGenChkpUploadData__s3(pDb, mgt, chkpId, path, list); + code = taskDbGenChkpUploadData__s3(pDb, mgt, chkpId, path, list, idStr); } taskDbUnRefChkp(pDb, chkpId); return code; diff --git a/source/libs/stream/src/streamCheckStatus.c b/source/libs/stream/src/streamCheckStatus.c index b64e0bb6d2..1728147c11 100644 --- a/source/libs/stream/src/streamCheckStatus.c +++ b/source/libs/stream/src/streamCheckStatus.c @@ -58,8 +58,7 @@ int32_t streamTaskCheckStatus(SStreamTask* pTask, int32_t upstreamTaskId, int32_ } if (pInfo->stage < stage) { - stError("s-task:%s receive check msg from upstream task:0x%x(vgId:%d), new stage received:%" PRId64 - ", prev:%" PRId64, + stError("s-task:%s receive check msg from upstream task:0x%x(vgId:%d), new stage received:%" PRId64 ", prev:%" PRId64, id, upstreamTaskId, vgId, stage, pInfo->stage); // record the checkpoint failure id and sent to mnode taosThreadMutexLock(&pTask->lock); @@ -170,13 +169,13 @@ void streamTaskProcessCheckMsg(SStreamMeta* pMeta, SStreamTaskCheckReq* pReq, SS SStreamTask* pTask = streamMetaAcquireTask(pMeta, pReq->streamId, taskId); if (pTask != NULL) { pRsp->status = streamTaskCheckStatus(pTask, pReq->upstreamTaskId, pReq->upstreamNodeId, pReq->stage, &pRsp->oldStage); - streamMetaReleaseTask(pMeta, pTask); SStreamTaskState* pState = streamTaskGetStatus(pTask); stDebug("s-task:%s status:%s, stage:%" PRId64 " recv task check req(reqId:0x%" PRIx64 ") task:0x%x (vgId:%d), check_status:%d", pTask->id.idStr, pState->name, pRsp->oldStage, pRsp->reqId, pRsp->upstreamTaskId, pRsp->upstreamNodeId, pRsp->status); + streamMetaReleaseTask(pMeta, pTask); } else { pRsp->status = TASK_DOWNSTREAM_NOT_READY; stDebug("tq recv task check(taskId:0x%" PRIx64 "-0x%x not built yet) req(reqId:0x%" PRIx64 diff --git a/source/libs/stream/src/streamCheckpoint.c b/source/libs/stream/src/streamCheckpoint.c index eedd8f20d6..1fddb5a97d 100644 --- a/source/libs/stream/src/streamCheckpoint.c +++ b/source/libs/stream/src/streamCheckpoint.c @@ -18,16 +18,6 @@ #include "streamBackendRocksdb.h" #include "streamInt.h" -typedef struct { - ECHECKPOINT_BACKUP_TYPE type; - - char* taskId; - int64_t chkpId; - SStreamTask* pTask; - int64_t dbRefId; - void* pMeta; -} SAsyncUploadArg; - static int32_t downloadCheckpointDataByName(const char* id, const char* fname, const char* dstName); static int32_t deleteCheckpointFile(const char* id, const char* name); static int32_t streamTaskUploadCheckpoint(const char* id, const char* path); @@ -114,8 +104,15 @@ int32_t streamTaskProcessCheckpointTriggerRsp(SStreamTask* pTask, SCheckpointTri return TSDB_CODE_SUCCESS; } -int32_t streamTaskSendCheckpointTriggerMsg(SStreamTask* pTask, int32_t dstTaskId, SRpcHandleInfo* pRpcInfo, int32_t code) { - SCheckpointTriggerRsp* pRsp = rpcMallocCont(sizeof(SCheckpointTriggerRsp)); +int32_t streamTaskSendCheckpointTriggerMsg(SStreamTask* pTask, int32_t dstTaskId, int32_t downstreamNodeId, + SRpcHandleInfo* pRpcInfo, int32_t code) { + int32_t size = sizeof(SMsgHead) + sizeof(SCheckpointTriggerRsp); + + void* pBuf = rpcMallocCont(size); + SCheckpointTriggerRsp* pRsp = POINTER_SHIFT(pBuf, sizeof(SMsgHead)); + + ((SMsgHead*)pBuf)->vgId = htonl(downstreamNodeId); + pRsp->streamId = pTask->id.streamId; pRsp->upstreamTaskId = pTask->id.taskId; pRsp->taskId = dstTaskId; @@ -130,7 +127,7 @@ int32_t streamTaskSendCheckpointTriggerMsg(SStreamTask* pTask, int32_t dstTaskId pRsp->rspCode = code; - SRpcMsg rspMsg = {.code = 0, .pCont = pRsp, .contLen = sizeof(SCheckpointTriggerRsp), .info = *pRpcInfo}; + SRpcMsg rspMsg = {.code = 0, .pCont = pRsp, .contLen = size, .info = *pRpcInfo}; tmsgSendRsp(&rspMsg); return 0; } @@ -408,11 +405,11 @@ void streamTaskClearCheckInfo(SStreamTask* pTask, bool clearChkpReadyMsg) { streamTaskClearActiveInfo(pTask->chkInfo.pActiveInfo); streamTaskOpenAllUpstreamInput(pTask); // open inputQ for all upstream tasks if (clearChkpReadyMsg) { - streamClearChkptReadyMsg(pTask); + streamClearChkptReadyMsg(pTask->chkInfo.pActiveInfo); } } -int32_t streamTaskUpdateTaskCheckpointInfo(SStreamTask* pTask, SVUpdateCheckpointInfoReq* pReq) { +int32_t streamTaskUpdateTaskCheckpointInfo(SStreamTask* pTask, bool restored, SVUpdateCheckpointInfoReq* pReq) { SStreamMeta* pMeta = pTask->pMeta; int32_t vgId = pMeta->vgId; int32_t code = 0; @@ -429,7 +426,7 @@ int32_t streamTaskUpdateTaskCheckpointInfo(SStreamTask* pTask, SVUpdateCheckpoin pReq->transId); taosThreadMutexUnlock(&pTask->lock); - { // destroy the related fill-history tasks + { // destroy the related fill-history tasks // drop task should not in the meta-lock, and drop the related fill-history task now streamMetaWUnLock(pMeta); if (pReq->dropRelHTask) { @@ -446,34 +443,42 @@ int32_t streamTaskUpdateTaskCheckpointInfo(SStreamTask* pTask, SVUpdateCheckpoin SStreamTaskState* pStatus = streamTaskGetStatus(pTask); - stDebug("s-task:%s vgId:%d status:%s start to update the checkpoint info, checkpointId:%" PRId64 "->%" PRId64 - " checkpointVer:%" PRId64 "->%" PRId64 " checkpointTs:%" PRId64 "->%" PRId64, - id, vgId, pStatus->name, pInfo->checkpointId, pReq->checkpointId, pInfo->checkpointVer, pReq->checkpointVer, - pInfo->checkpointTime, pReq->checkpointTs); - - if (pStatus->state != TASK_STATUS__DROPPING) { - ASSERT(pInfo->checkpointId <= pReq->checkpointId && pInfo->checkpointVer <= pReq->checkpointVer); - - pInfo->checkpointId = pReq->checkpointId; - pInfo->checkpointVer = pReq->checkpointVer; - pInfo->checkpointTime = pReq->checkpointTs; - - streamTaskClearCheckInfo(pTask, false); - - // todo handle error - if (pStatus->state == TASK_STATUS__CK) { - code = streamTaskHandleEvent(pTask->status.pSM, TASK_EVENT_CHECKPOINT_DONE); - } else { - stDebug("s-task:0x%x vgId:%d not handle checkpoint-done event, status:%s", pReq->taskId, vgId, pStatus->name); - } - } else { - stDebug("s-task:0x%x vgId:%d status:%s not update checkpoint info, checkpointId:%" PRId64 "->%" PRId64 " failed", - pReq->taskId, vgId, pStatus->name, pInfo->checkpointId, pReq->checkpointId); + if ((!restored) && (pStatus->state != TASK_STATUS__CK)) { + stDebug("s-task:0x%x vgId:%d restored:%d status:%s not update checkpoint-info, checkpointId:%" PRId64 "->%" PRId64 + " failed", + pReq->taskId, vgId, restored, pStatus->name, pInfo->checkpointId, pReq->checkpointId); taosThreadMutexUnlock(&pTask->lock); - return TSDB_CODE_STREAM_TASK_IVLD_STATUS; } + if (!restored) { // during restore procedure, do update checkpoint-info + stDebug("s-task:%s vgId:%d status:%s update the checkpoint-info during restore, checkpointId:%" PRId64 "->%" PRId64 + " checkpointVer:%" PRId64 "->%" PRId64 " checkpointTs:%" PRId64 "->%" PRId64, + id, vgId, pStatus->name, pInfo->checkpointId, pReq->checkpointId, pInfo->checkpointVer, pReq->checkpointVer, + pInfo->checkpointTime, pReq->checkpointTs); + } else { // not in restore status, must be in checkpoint status + stDebug("s-task:%s vgId:%d status:%s start to update the checkpoint-info, checkpointId:%" PRId64 "->%" PRId64 + " checkpointVer:%" PRId64 "->%" PRId64 " checkpointTs:%" PRId64 "->%" PRId64, + id, vgId, pStatus->name, pInfo->checkpointId, pReq->checkpointId, pInfo->checkpointVer, pReq->checkpointVer, + pInfo->checkpointTime, pReq->checkpointTs); + } + + ASSERT(pInfo->checkpointId <= pReq->checkpointId && pInfo->checkpointVer <= pReq->checkpointVer && + pInfo->processedVer <= pReq->checkpointVer); + + pInfo->checkpointId = pReq->checkpointId; + pInfo->checkpointVer = pReq->checkpointVer; + pInfo->checkpointTime = pReq->checkpointTs; + + streamTaskClearCheckInfo(pTask, true); + + if (pStatus->state == TASK_STATUS__CK) { + // todo handle error + code = streamTaskHandleEvent(pTask->status.pSM, TASK_EVENT_CHECKPOINT_DONE); + } else { + stDebug("s-task:0x%x vgId:%d not handle checkpoint-done event, status:%s", pReq->taskId, vgId, pStatus->name); + } + if (pReq->dropRelHTask) { stDebug("s-task:0x%x vgId:%d drop the related fill-history task:0x%" PRIx64 " after update checkpoint", pReq->taskId, vgId, pReq->hTaskId); @@ -562,78 +567,70 @@ static int32_t getCheckpointDataMeta(const char* id, const char* path, SArray* l return code; } -int32_t uploadCheckpointData(void* param) { - SAsyncUploadArg* pParam = param; +int32_t uploadCheckpointData(SStreamTask* pTask, int64_t checkpointId, int64_t dbRefId, ECHECKPOINT_BACKUP_TYPE type) { char* path = NULL; int32_t code = 0; SArray* toDelFiles = taosArrayInit(4, POINTER_BYTES); - char* taskStr = pParam->taskId ? pParam->taskId : "NULL"; + int64_t now = taosGetTimestampMs(); + SStreamMeta* pMeta = pTask->pMeta; + const char* idStr = pTask->id.idStr; - void* pBackend = taskAcquireDb(pParam->dbRefId); - if (pBackend == NULL) { - stError("s-task:%s failed to acquire db", taskStr); - taosMemoryFree(pParam->taskId); - taosMemoryFree(pParam); - return -1; + if ((code = taskDbGenChkpUploadData(pTask->pBackend, pMeta->bkdChkptMgt, checkpointId, type, &path, toDelFiles, + pTask->id.idStr)) != 0) { + stError("s-task:%s failed to gen upload checkpoint:%" PRId64, idStr, checkpointId); } - if ((code = taskDbGenChkpUploadData(pParam->pTask->pBackend, ((SStreamMeta*)pParam->pMeta)->bkdChkptMgt, - pParam->chkpId, (int8_t)(pParam->type), &path, toDelFiles)) != 0) { - stError("s-task:%s failed to gen upload checkpoint:%" PRId64, taskStr, pParam->chkpId); - } - - if (pParam->type == DATA_UPLOAD_S3) { - if (code == 0 && (code = getCheckpointDataMeta(pParam->taskId, path, toDelFiles)) != 0) { - stError("s-task:%s failed to get checkpointData for checkpointId:%" PRId64 " meta", taskStr, pParam->chkpId); + if (type == DATA_UPLOAD_S3) { + if (code == TSDB_CODE_SUCCESS && (code = getCheckpointDataMeta(idStr, path, toDelFiles)) != 0) { + stError("s-task:%s failed to get checkpointData for checkpointId:%" PRId64 " meta", idStr, checkpointId); } } if (code == TSDB_CODE_SUCCESS) { - code = streamTaskUploadCheckpoint(pParam->taskId, path); + code = streamTaskUploadCheckpoint(idStr, path); if (code == TSDB_CODE_SUCCESS) { - stDebug("s-task:%s upload checkpointId:%" PRId64 " to remote succ", taskStr, pParam->chkpId); + stDebug("s-task:%s upload checkpointId:%" PRId64 " to remote succ", idStr, checkpointId); } else { - stError("s-task:%s failed to upload checkpointId:%" PRId64 " data:%s", taskStr, pParam->chkpId, path); + stError("s-task:%s failed to upload checkpointId:%" PRId64 " data:%s", idStr, checkpointId, path); } } - taskReleaseDb(pParam->dbRefId); - - if (code == 0) { + if (code == TSDB_CODE_SUCCESS) { int32_t size = taosArrayGetSize(toDelFiles); - stDebug("s-task:%s remove redundant %d files", taskStr, size); + stDebug("s-task:%s remove redundant %d files", idStr, size); for (int i = 0; i < size; i++) { char* pName = taosArrayGetP(toDelFiles, i); - code = deleteCheckpointFile(pParam->taskId, pName); + code = deleteCheckpointFile(idStr, pName); if (code != 0) { - stDebug("s-task:%s failed to del file: %s", taskStr, pName); + stDebug("s-task:%s failed to remove file: %s", idStr, pName); break; } } - stDebug("s-task:%s remove redundant files done", taskStr); + stDebug("s-task:%s remove redundant files in uploading checkpointId:%" PRId64 " data", idStr, checkpointId); } taosArrayDestroyP(toDelFiles, taosMemoryFree); + double el = (taosGetTimestampMs() - now) / 1000.0; if (code == TSDB_CODE_SUCCESS) { - stDebug("s-task:%s remove local checkpointId:%" PRId64 " data %s", taskStr, pParam->chkpId, path); + stDebug("s-task:%s complete update checkpointId:%" PRId64 ", elapsed time:%.2fs remove local checkpoint data %s", + idStr, checkpointId, el, path); taosRemoveDir(path); } else { - stDebug("s-task:%s update checkpointId:%" PRId64 " keep local checkpoint data", taskStr, pParam->chkpId); + stDebug("s-task:%s failed to upload checkpointId:%" PRId64 " keep local checkpoint data, elapsed time:%.2fs", + idStr, checkpointId, el); } taosMemoryFree(path); - taosMemoryFree(pParam->taskId); - taosMemoryFree(pParam); - return code; } -int32_t streamTaskRemoteBackupCheckpoint(SStreamTask* pTask, int64_t checkpointId, char* taskId) { +int32_t streamTaskRemoteBackupCheckpoint(SStreamTask* pTask, int64_t checkpointId) { ECHECKPOINT_BACKUP_TYPE type = streamGetCheckpointBackupType(); if (type == DATA_UPLOAD_DISABLE) { + stDebug("s-task:%s not allowed to upload checkpoint data", pTask->id.idStr); return 0; } @@ -641,15 +638,17 @@ int32_t streamTaskRemoteBackupCheckpoint(SStreamTask* pTask, int64_t checkpointI return 0; } - SAsyncUploadArg* arg = taosMemoryCalloc(1, sizeof(SAsyncUploadArg)); - arg->type = type; - arg->taskId = taosStrdup(taskId); - arg->chkpId = checkpointId; - arg->pTask = pTask; - arg->dbRefId = taskGetDBRef(pTask->pBackend); - arg->pMeta = pTask->pMeta; + int64_t dbRefId = taskGetDBRef(pTask->pBackend); + void* pBackend = taskAcquireDb(dbRefId); + if (pBackend == NULL) { + stError("s-task:%s failed to acquire db during update checkpoint data, failed to upload checkpointData", pTask->id.idStr); + return -1; + } - return streamMetaAsyncExec(pTask->pMeta, uploadCheckpointData, arg, NULL); + int32_t code = uploadCheckpointData(pTask, checkpointId, taskGetDBRef(pTask->pBackend), type); + taskReleaseDb(dbRefId); + + return code; } int32_t streamTaskBuildCheckpoint(SStreamTask* pTask) { @@ -670,6 +669,7 @@ int32_t streamTaskBuildCheckpoint(SStreamTask* pTask) { } } + // TODO: monitoring the checkpoint-source msg // send check point response to upstream task if (code == TSDB_CODE_SUCCESS) { if (pTask->info.taskLevel == TASK_LEVEL__SOURCE) { @@ -679,38 +679,39 @@ int32_t streamTaskBuildCheckpoint(SStreamTask* pTask) { } if (code != TSDB_CODE_SUCCESS) { - // todo: let's retry send rsp to upstream/mnode + // todo: let's retry send rsp to mnode, checkpoint-ready has monitor now stError("s-task:%s failed to send checkpoint rsp to upstream, checkpointId:%" PRId64 ", code:%s", id, ckId, tstrerror(code)); } } - // update the latest checkpoint info if all works are done successfully, for rsma, the pMsgCb is null. - if (code == TSDB_CODE_SUCCESS && (pTask->pMsgCb != NULL)) { - code = streamSendChkptReportMsg(pTask, &pTask->chkInfo, dropRelHTask); - if (code == TSDB_CODE_SUCCESS) { - code = streamTaskRemoteBackupCheckpoint(pTask, ckId, (char*)id); - if (code != TSDB_CODE_SUCCESS) { - stError("s-task:%s failed to upload checkpoint:%" PRId64 " failed", id, ckId); - } - } else { - stError("s-task:%s commit taskInfo failed, checkpoint:%" PRId64 " failed, code:%s", id, ckId, tstrerror(code)); + if (code == TSDB_CODE_SUCCESS) { + code = streamTaskRemoteBackupCheckpoint(pTask, ckId); + if (code != TSDB_CODE_SUCCESS) { + stError("s-task:%s upload checkpointId:%" PRId64 " data failed, code:%s", id, ckId, tstrerror(code)); } + } else { + stError("s-task:%s taskInfo failed, checkpoint:%" PRId64 " failed, code:%s", id, ckId, tstrerror(code)); } - // clear the checkpoint info if failed - if (code != TSDB_CODE_SUCCESS) { + // TODO: monitoring the checkpoint-report msg + // update the latest checkpoint info if all works are done successfully, for rsma, the pMsgCb is null. + if (code == TSDB_CODE_SUCCESS) { + if (pTask->pMsgCb != NULL) { + code = streamSendChkptReportMsg(pTask, &pTask->chkInfo, dropRelHTask); + } + } else { // clear the checkpoint info if failed taosThreadMutexLock(&pTask->lock); streamTaskClearCheckInfo(pTask, false); - code = streamTaskHandleEvent(pTask->status.pSM, TASK_EVENT_CHECKPOINT_DONE); taosThreadMutexUnlock(&pTask->lock); + code = streamTaskHandleEvent(pTask->status.pSM, TASK_EVENT_CHECKPOINT_DONE); streamTaskSetFailedCheckpointId(pTask); stDebug("s-task:%s clear checkpoint flag since gen checkpoint failed, checkpointId:%" PRId64, id, ckId); } double el = (taosGetTimestampMs() - startTs) / 1000.0; - stInfo("s-task:%s vgId:%d level:%d, checkpointId:%" PRId64 " ver:%" PRId64 " elapsed time:%.2f Sec, %s ", id, + stInfo("s-task:%s vgId:%d level:%d, checkpointId:%" PRId64 " ver:%" PRId64 " elapsed time:%.2fs, %s ", id, pMeta->vgId, pTask->info.taskLevel, ckId, pTask->chkInfo.checkpointVer, el, (code == TSDB_CODE_SUCCESS) ? "succ" : "failed"); @@ -739,14 +740,13 @@ void checkpointTriggerMonitorFn(void* param, void* tmrId) { } pActiveInfo->checkCounter = 0; - stDebug("s-task:%s vgId:%d checkpoint-trigger monitor in tmr, ts:%" PRId64, pTask->id.idStr, vgId, now); + stDebug("s-task:%s vgId:%d checkpoint-trigger monitor in tmr, ts:%" PRId64, id, vgId, now); taosThreadMutexLock(&pTask->lock); SStreamTaskState* pState = streamTaskGetStatus(pTask); if (pState->state != TASK_STATUS__CK) { int32_t ref = atomic_sub_fetch_32(&pTask->status.timerActive, 1); - stDebug("s-task:%s vgId:%d not in checkpoint status, quit from monitor checkpoint-trigger, ref:%d", pTask->id.idStr, - vgId, ref); + stDebug("s-task:%s vgId:%d not in checkpoint status, quit from monitor checkpoint-trigger, ref:%d", id, vgId, ref); taosThreadMutexUnlock(&pTask->lock); streamMetaReleaseTask(pTask->pMeta, pTask); @@ -756,8 +756,8 @@ void checkpointTriggerMonitorFn(void* param, void* tmrId) { // checkpoint-trigger recv flag is set, quit if (pActiveInfo->allUpstreamTriggerRecv) { int32_t ref = atomic_sub_fetch_32(&pTask->status.timerActive, 1); - stDebug("s-task:%s vgId:%d all checkpoint-trigger recv, quit from monitor checkpoint-trigger, ref:%d", - pTask->id.idStr, vgId, ref); + stDebug("s-task:%s vgId:%d all checkpoint-trigger recv, quit from monitor checkpoint-trigger, ref:%d", id, vgId, + ref); taosThreadMutexUnlock(&pTask->lock); streamMetaReleaseTask(pTask->pMeta, pTask); @@ -815,6 +815,7 @@ int32_t doSendRetrieveTriggerMsg(SStreamTask* pTask, SArray* pNotSendList) { const char* pId = pTask->id.idStr; int32_t size = taosArrayGetSize(pNotSendList); int32_t numOfUpstream = streamTaskGetNumOfUpstream(pTask); + int64_t checkpointId = pTask->chkInfo.pActiveInfo->activeId; if (size <= 0) { stDebug("s-task:%s all upstream checkpoint trigger recved, no need to send retrieve", pId); @@ -840,15 +841,14 @@ int32_t doSendRetrieveTriggerMsg(SStreamTask* pTask, SArray* pNotSendList) { pReq->downstreamNodeId = vgId; pReq->upstreamTaskId = pUpstreamTask->taskId; pReq->upstreamNodeId = pUpstreamTask->nodeId; - pReq->checkpointId = pTask->chkInfo.pActiveInfo->activeId; - + pReq->checkpointId = checkpointId; SRpcMsg rpcMsg = {0}; initRpcMsg(&rpcMsg, TDMT_STREAM_RETRIEVE_TRIGGER, pReq, sizeof(SRetrieveChkptTriggerReq)); code = tmsgSendReq(&pUpstreamTask->epSet, &rpcMsg); stDebug("s-task:%s vgId:%d send checkpoint-trigger retrieve msg to 0x%x(vgId:%d) checkpointId:%" PRId64, pId, vgId, - pUpstreamTask->taskId, pUpstreamTask->nodeId, pReq->checkpointId); + pUpstreamTask->taskId, pUpstreamTask->nodeId, checkpointId); } return TSDB_CODE_SUCCESS; diff --git a/source/libs/stream/src/streamDispatch.c b/source/libs/stream/src/streamDispatch.c index b17d0206f0..0f5559df89 100644 --- a/source/libs/stream/src/streamDispatch.c +++ b/source/libs/stream/src/streamDispatch.c @@ -781,7 +781,7 @@ static void checkpointReadyMsgSendMonitorFn(void* param, void* tmrId) { // check the status every 100ms if (streamTaskShouldStop(pTask)) { int32_t ref = atomic_sub_fetch_32(&pTask->status.timerActive, 1); - stDebug("s-task:%s vgId:%d quit from monitor checkpoint-trigger, ref:%d", id, vgId, ref); + stDebug("s-task:%s vgId:%d status:stop, quit from monitor checkpoint-trigger, ref:%d", id, vgId, ref); streamMetaReleaseTask(pTask->pMeta, pTask); return; } @@ -795,6 +795,18 @@ static void checkpointReadyMsgSendMonitorFn(void* param, void* tmrId) { pActiveInfo->sendReadyCheckCounter = 0; stDebug("s-task:%s in sending checkpoint-ready msg monitor timer", id); + taosThreadMutexLock(&pTask->lock); + SStreamTaskState* pState = streamTaskGetStatus(pTask); + if (pState->state != TASK_STATUS__CK) { + int32_t ref = atomic_sub_fetch_32(&pTask->status.timerActive, 1); + stDebug("s-task:%s vgId:%d status:%s not in checkpoint, quit from monitor checkpoint-ready send, ref:%d", id, vgId, + pState->name, ref); + taosThreadMutexUnlock(&pTask->lock); + streamMetaReleaseTask(pTask->pMeta, pTask); + return; + } + taosThreadMutexUnlock(&pTask->lock); + taosThreadMutexLock(&pActiveInfo->lock); SArray* pList = pActiveInfo->pReadyMsgList; @@ -844,7 +856,7 @@ static void checkpointReadyMsgSendMonitorFn(void* param, void* tmrId) { "and quit from timer, ref:%d", id, vgId, ref); - streamClearChkptReadyMsg(pTask); + streamClearChkptReadyMsg(pActiveInfo); taosThreadMutexUnlock(&pActiveInfo->lock); streamMetaReleaseTask(pTask->pMeta, pTask); } @@ -906,9 +918,9 @@ int32_t streamTaskSendCheckpointSourceRsp(SStreamTask* pTask) { tmsgSendRsp(&pInfo->msg); taosArrayClear(pList); - stDebug("s-task:%s level:%d source checkpoint completed msg sent to mnode", pTask->id.idStr, pTask->info.taskLevel); + stDebug("s-task:%s level:%d checkpoint-source rsp completed msg sent to mnode", pTask->id.idStr, pTask->info.taskLevel); } else { - stDebug("s-task:%s level:%d already send rsp checkpoint success to mnode", pTask->id.idStr, pTask->info.taskLevel); + stDebug("s-task:%s level:%d already send checkpoint-source rsp success to mnode", pTask->id.idStr, pTask->info.taskLevel); } taosThreadMutexUnlock(&pTask->chkInfo.pActiveInfo->lock); @@ -1116,8 +1128,7 @@ int32_t streamAddCheckpointReadyMsg(SStreamTask* pTask, int32_t upstreamTaskId, return 0; } -void streamClearChkptReadyMsg(SStreamTask* pTask) { - SActiveCheckpointInfo* pActiveInfo = pTask->chkInfo.pActiveInfo; +void streamClearChkptReadyMsg(SActiveCheckpointInfo* pActiveInfo) { if (pActiveInfo == NULL) { return; } diff --git a/source/libs/stream/src/streamMeta.c b/source/libs/stream/src/streamMeta.c index e8800c3370..03c7b93f91 100644 --- a/source/libs/stream/src/streamMeta.c +++ b/source/libs/stream/src/streamMeta.c @@ -231,7 +231,6 @@ int32_t streamMetaMayCvtDbFormat(SStreamMeta* pMeta) { return 0; } else if (compatible == STREAM_STATA_NEED_CONVERT) { stInfo("vgId:%d stream state need covert backend format", pMeta->vgId); - return streamMetaCvtDbFormat(pMeta); } else if (compatible == STREAM_STATA_NO_COMPATIBLE) { stError( diff --git a/source/libs/stream/src/streamStartHistory.c b/source/libs/stream/src/streamStartHistory.c index 050d88aaf1..adf4c3bef9 100644 --- a/source/libs/stream/src/streamStartHistory.c +++ b/source/libs/stream/src/streamStartHistory.c @@ -240,7 +240,6 @@ int32_t streamLaunchFillHistoryTask(SStreamTask* pTask) { if (code == TSDB_CODE_SUCCESS) { checkFillhistoryTaskStatus(pTask, pHisTask); } - } streamMetaReleaseTask(pMeta, pHisTask); diff --git a/source/libs/stream/src/streamTask.c b/source/libs/stream/src/streamTask.c index 7d869ce538..70e3790209 100644 --- a/source/libs/stream/src/streamTask.c +++ b/source/libs/stream/src/streamTask.c @@ -254,7 +254,7 @@ void tFreeStreamTask(SStreamTask* pTask) { walCloseReader(pTask->exec.pWalReader); } - streamClearChkptReadyMsg(pTask); + streamClearChkptReadyMsg(pTask->chkInfo.pActiveInfo); if (pTask->msgInfo.pData != NULL) { clearBufferedDispatchMsg(pTask); @@ -836,7 +836,7 @@ static int32_t taskPauseCallback(SStreamTask* pTask, void* param) { SStreamMeta* pMeta = pTask->pMeta; int32_t num = atomic_add_fetch_32(&pMeta->numOfPausedTasks, 1); - stInfo("vgId:%d s-task:%s pause stream task. pause task num:%d", pMeta->vgId, pTask->id.idStr, num); + stInfo("vgId:%d s-task:%s pause stream task. paused task num:%d", pMeta->vgId, pTask->id.idStr, num); // in case of fill-history task, stop the tsdb file scan operation. if (pTask->info.fillHistory == 1) { diff --git a/source/libs/stream/src/streamTaskSm.c b/source/libs/stream/src/streamTaskSm.c index 82ea2f88ef..75d62ff324 100644 --- a/source/libs/stream/src/streamTaskSm.c +++ b/source/libs/stream/src/streamTaskSm.c @@ -623,9 +623,9 @@ void doInitStateTransferTable(void) { taosArrayPush(streamTaskSMTrans, &trans); trans = createStateTransform(TASK_STATUS__HALT, TASK_STATUS__PAUSE, TASK_EVENT_PAUSE, NULL, NULL, &info); taosArrayPush(streamTaskSMTrans, &trans); - - trans = createStateTransform(TASK_STATUS__UNINIT, TASK_STATUS__PAUSE, TASK_EVENT_PAUSE, NULL, NULL, NULL); + trans = createStateTransform(TASK_STATUS__UNINIT, TASK_STATUS__PAUSE, TASK_EVENT_PAUSE, NULL, NULL, &info); taosArrayPush(streamTaskSMTrans, &trans); + trans = createStateTransform(TASK_STATUS__PAUSE, TASK_STATUS__PAUSE, TASK_EVENT_PAUSE, NULL, NULL, NULL); taosArrayPush(streamTaskSMTrans, &trans); trans = createStateTransform(TASK_STATUS__STOP, TASK_STATUS__STOP, TASK_EVENT_PAUSE, NULL, NULL, NULL); diff --git a/source/util/src/terror.c b/source/util/src/terror.c index fb2f4be487..80de20f5f5 100644 --- a/source/util/src/terror.c +++ b/source/util/src/terror.c @@ -220,7 +220,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_MND_COLUMN_ALREADY_EXIST, "Column already exists TAOS_DEFINE_ERROR(TSDB_CODE_MND_COLUMN_NOT_EXIST, "Column does not exist") TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_STB_OPTION, "Invalid stable options") TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_ROW_BYTES, "Invalid row bytes") -TAOS_DEFINE_ERROR(TSDB_CODE_MND_FIELD_VALUE_OVERFLOW, "out of range and overflow") +// TAOS_DEFINE_ERROR(TSDB_CODE_MND_FIELD_VALUE_OVERFLOW, "out of range and overflow") // unused TAOS_DEFINE_ERROR(TSDB_CODE_MND_COLUMN_COMPRESS_ALREADY_EXIST, "Same with old param") @@ -462,7 +462,6 @@ TAOS_DEFINE_ERROR(TSDB_CODE_QRY_QWORKER_QUIT, "Vnode/Qnode is quitti TAOS_DEFINE_ERROR(TSDB_CODE_QRY_GEO_NOT_SUPPORT_ERROR, "Geometry not support in this operator") TAOS_DEFINE_ERROR(TSDB_CODE_QRY_INVALID_WINDOW_CONDITION, "The time pseudo column is illegally used in the condition of the event window.") TAOS_DEFINE_ERROR(TSDB_CODE_QRY_EXECUTOR_INTERNAL_ERROR, "Executor internal error") -TAOS_DEFINE_ERROR(TSDB_CODE_QRY_EXECUTOR_INTERNAL_ERROR, "Executor internal error") TAOS_DEFINE_ERROR(TSDB_CODE_QRY_INVALID_JOIN_CONDITION, "Not supported join on condition") // grant @@ -507,7 +506,6 @@ TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_OBJECT_STROAGE_EXPIRED, "License expired for o TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_DUAL_REPLICA_HA_EXPIRED,"License expired for dual-replica HA function") TAOS_DEFINE_ERROR(TSDB_CODE_GRANT_DB_ENCRYPTION_EXPIRED, "License expired for database encryption function") - // sync TAOS_DEFINE_ERROR(TSDB_CODE_SYN_TIMEOUT, "Sync timeout") TAOS_DEFINE_ERROR(TSDB_CODE_SYN_MISMATCHED_SIGNATURE, "Sync signature mismatch") @@ -659,7 +657,6 @@ TAOS_DEFINE_ERROR(TSDB_CODE_PAR_SYSTABLE_NOT_ALLOWED_FUNC, "System table not al TAOS_DEFINE_ERROR(TSDB_CODE_PAR_SYSTABLE_NOT_ALLOWED, "System table not allowed") TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INVALID_VARBINARY, "Invalid varbinary value") TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INVALID_IP_RANGE, "Invalid IPV4 address ranges") -TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INVALID_STREAM_QUERY, "Invalid stream query") TAOS_DEFINE_ERROR(TSDB_CODE_PAR_INVALID_VIEW_QUERY, "Invalid view query type") TAOS_DEFINE_ERROR(TSDB_CODE_PAR_COL_QUERY_MISMATCH, "Columns number mismatch with query result") TAOS_DEFINE_ERROR(TSDB_CODE_PAR_VIEW_CONFLICT_WITH_TABLE, "View name is conflict with table") diff --git a/source/util/test/errorCodeTable.ini b/source/util/test/errorCodeTable.ini index 1da1fd7d21..33c9d77c5e 100644 --- a/source/util/test/errorCodeTable.ini +++ b/source/util/test/errorCodeTable.ini @@ -1,632 +1,632 @@ -TSDB_CODE_SUCCESS = 0 -TSDB_CODE_RPC_NETWORK_UNAVAIL = -2147483637 -TSDB_CODE_RPC_FQDN_ERROR = -2147483627 -TSDB_CODE_RPC_PORT_EADDRINUSE = -2147483625 -TSDB_CODE_RPC_BROKEN_LINK = -2147483624 -TSDB_CODE_RPC_TIMEOUT = -2147483623 -TSDB_CODE_RPC_SOMENODE_NOT_CONNECTED = -2147483616 -TSDB_CODE_RPC_MAX_SESSIONS = -2147483614 -TSDB_CODE_RPC_NETWORK_ERROR = -2147483613 -TSDB_CODE_RPC_NETWORK_BUSY = -2147483612 -TSDB_CODE_TIME_UNSYNCED = -2147483629 -TSDB_CODE_OPS_NOT_SUPPORT = -2147483392 -TSDB_CODE_OUT_OF_MEMORY = -2147483390 -TSDB_CODE_FILE_CORRUPTED = -2147483388 -TSDB_CODE_REF_FULL = -2147483386 -TSDB_CODE_REF_ID_REMOVED = -2147483385 -TSDB_CODE_REF_INVALID_ID = -2147483384 -TSDB_CODE_REF_ALREADY_EXIST = -2147483383 -TSDB_CODE_REF_NOT_EXIST = -2147483382 -TSDB_CODE_APP_ERROR = -2147483376 -TSDB_CODE_ACTION_IN_PROGRESS = -2147483375 -TSDB_CODE_OUT_OF_RANGE = -2147483374 -TSDB_CODE_INVALID_MSG = -2147483371 -TSDB_CODE_INVALID_MSG_LEN = -2147483370 -TSDB_CODE_INVALID_PTR = -2147483369 -TSDB_CODE_INVALID_PARA = -2147483368 -TSDB_CODE_INVALID_CFG = -2147483367 -TSDB_CODE_INVALID_OPTION = -2147483366 -TSDB_CODE_INVALID_JSON_FORMAT = -2147483365 -TSDB_CODE_INVALID_VERSION_NUMBER = -2147483364 -TSDB_CODE_INVALID_VERSION_STRING = -2147483363 -TSDB_CODE_VERSION_NOT_COMPATIBLE = -2147483362 -TSDB_CODE_CHECKSUM_ERROR = -2147483361 -TSDB_CODE_COMPRESS_ERROR = -2147483360 -TSDB_CODE_MSG_NOT_PROCESSED = -2147483359 -TSDB_CODE_CFG_NOT_FOUND = -2147483358 -TSDB_CODE_REPEAT_INIT = -2147483357 -TSDB_CODE_DUP_KEY = -2147483356 -TSDB_CODE_NEED_RETRY = -2147483355 -TSDB_CODE_OUT_OF_RPC_MEMORY_QUEUE = -2147483354 -TSDB_CODE_INVALID_TIMESTAMP = -2147483353 -TSDB_CODE_MSG_DECODE_ERROR = -2147483352 -TSDB_CODE_MSG_ENCODE_ERROR = -2147483347 -TSDB_CODE_NO_AVAIL_DISK = -2147483351 -TSDB_CODE_NOT_FOUND = -2147483350 -TSDB_CODE_NO_DISKSPACE = -2147483349 -TSDB_CODE_TIMEOUT_ERROR = -2147483348 -TSDB_CODE_NO_ENOUGH_DISKSPACE = -2147483346 -TSDB_CODE_APP_IS_STARTING = -2147483344 -TSDB_CODE_APP_IS_STOPPING = -2147483343 -TSDB_CODE_INVALID_DATA_FMT = -2147483342 -TSDB_CODE_INVALID_CFG_VALUE = -2147483341 -TSDB_CODE_IP_NOT_IN_WHITE_LIST = -2147483340 -TSDB_CODE_FAILED_TO_CONNECT_S3 = -2147483339 -TSDB_CODE_MSG_PREPROCESSED = -2147483338 -TSDB_CODE_TSC_INVALID_OPERATION = -2147483136 -TSDB_CODE_TSC_INVALID_QHANDLE = -2147483135 -TSDB_CODE_TSC_INVALID_TIME_STAMP = -2147483134 -TSDB_CODE_TSC_INVALID_VALUE = -2147483133 -TSDB_CODE_TSC_INVALID_VERSION = -2147483132 -TSDB_CODE_TSC_INVALID_IE = -2147483131 -TSDB_CODE_TSC_INVALID_FQDN = -2147483130 -TSDB_CODE_TSC_INVALID_USER_LENGTH = -2147483129 -TSDB_CODE_TSC_INVALID_PASS_LENGTH = -2147483128 -TSDB_CODE_TSC_INVALID_DB_LENGTH = -2147483127 -TSDB_CODE_TSC_INVALID_TABLE_ID_LENGTH = -2147483126 -TSDB_CODE_TSC_INVALID_CONNECTION = -2147483125 -TSDB_CODE_TSC_QUERY_CACHE_ERASED = -2147483122 -TSDB_CODE_TSC_QUERY_CANCELLED = -2147483121 -TSDB_CODE_TSC_SORTED_RES_TOO_MANY = -2147483120 -TSDB_CODE_TSC_ACTION_IN_PROGRESS = -2147483118 -TSDB_CODE_TSC_DISCONNECTED = -2147483117 -TSDB_CODE_TSC_NO_WRITE_AUTH = -2147483116 -TSDB_CODE_TSC_CONN_KILLED = -2147483115 -TSDB_CODE_TSC_SQL_SYNTAX_ERROR = -2147483114 -TSDB_CODE_TSC_DB_NOT_SELECTED = -2147483113 -TSDB_CODE_TSC_EXCEED_SQL_LIMIT = -2147483111 -TSDB_CODE_TSC_FILE_EMPTY = -2147483110 -TSDB_CODE_TSC_LINE_SYNTAX_ERROR = -2147483109 -TSDB_CODE_TSC_NO_META_CACHED = -2147483108 -TSDB_CODE_TSC_DUP_COL_NAMES = -2147483107 -TSDB_CODE_TSC_INVALID_TAG_LENGTH = -2147483106 -TSDB_CODE_TSC_INVALID_COLUMN_LENGTH = -2147483105 -TSDB_CODE_TSC_DUP_NAMES = -2147483104 -TSDB_CODE_TSC_INVALID_JSON = -2147483103 -TSDB_CODE_TSC_INVALID_JSON_TYPE = -2147483102 -TSDB_CODE_TSC_VALUE_OUT_OF_RANGE = -2147483100 -TSDB_CODE_TSC_INVALID_INPUT = -2147483095 -TSDB_CODE_TSC_STMT_API_ERROR = -2147483094 -TSDB_CODE_TSC_STMT_TBNAME_ERROR = -2147483093 -TSDB_CODE_TSC_STMT_CLAUSE_ERROR = -2147483092 -TSDB_CODE_TSC_QUERY_KILLED = -2147483091 -TSDB_CODE_TSC_NO_EXEC_NODE = -2147483090 -TSDB_CODE_TSC_NOT_STABLE_ERROR = -2147483089 -TSDB_CODE_TSC_STMT_CACHE_ERROR = -2147483088 -TSDB_CODE_TSC_ENCODE_PARAM_ERROR = -2147483087 -TSDB_CODE_TSC_ENCODE_PARAM_NULL = -2147483086 -TSDB_CODE_TSC_COMPRESS_PARAM_ERROR = -2147483085 -TSDB_CODE_TSC_COMPRESS_LEVEL_ERROR = -2147483084 -TSDB_CODE_TSC_INTERNAL_ERROR = -2147482881 -TSDB_CODE_MND_REQ_REJECTED = -2147482880 -TSDB_CODE_MND_NO_RIGHTS = -2147482877 -TSDB_CODE_MND_INVALID_SHOWOBJ = -2147482869 -TSDB_CODE_MND_INVALID_QUERY_ID = -2147482868 -TSDB_CODE_MND_INVALID_CONN_ID = -2147482866 -TSDB_CODE_MND_USER_DISABLED = -2147482859 -TSDB_CODE_MND_INVALID_PLATFORM = -2147482858 -TSDB_CODE_SDB_OBJ_ALREADY_THERE = -2147482848 -TSDB_CODE_SDB_INVALID_TABLE_TYPE = -2147482846 -TSDB_CODE_SDB_OBJ_NOT_THERE = -2147482845 -TSDB_CODE_SDB_INVALID_ACTION_TYPE = -2147482842 -TSDB_CODE_SDB_INVALID_DATA_VER = -2147482840 -TSDB_CODE_SDB_INVALID_DATA_LEN = -2147482839 -TSDB_CODE_SDB_INVALID_DATA_CONTENT = -2147482838 -TSDB_CODE_SDB_OBJ_CREATING = -2147482836 -TSDB_CODE_SDB_OBJ_DROPPING = -2147482835 -TSDB_CODE_MND_DNODE_ALREADY_EXIST = -2147482832 -TSDB_CODE_MND_DNODE_NOT_EXIST = -2147482831 -TSDB_CODE_MND_VGROUP_NOT_EXIST = -2147482830 -TSDB_CODE_MND_CANT_DROP_LEADER = -2147482829 -TSDB_CODE_MND_NO_ENOUGH_DNODES = -2147482828 -TSDB_CODE_MND_INVALID_CLUSTER_CFG = -2147482827 -TSDB_CODE_MND_VGROUP_NOT_IN_DNODE = -2147482824 -TSDB_CODE_MND_VGROUP_ALREADY_IN_DNODE = -2147482823 -TSDB_CODE_MND_INVALID_CLUSTER_ID = -2147482821 -TSDB_CODE_MND_ACCT_ALREADY_EXIST = -2147482816 -TSDB_CODE_MND_INVALID_ACCT_OPTION = -2147482814 -TSDB_CODE_MND_ACCT_EXPIRED = -2147482813 -TSDB_CODE_MND_ACCT_NOT_EXIST = -2147482812 -TSDB_CODE_MND_TOO_MANY_ACCTS = -2147482811 -TSDB_CODE_MND_USER_ALREADY_EXIST = -2147482800 -TSDB_CODE_MND_USER_NOT_EXIST = -2147482799 -TSDB_CODE_MND_INVALID_USER_FORMAT = -2147482798 -TSDB_CODE_MND_USER_NOT_AVAILABLE = -2147482792 -TSDB_CODE_MND_INVALID_PASS_FORMAT = -2147482797 -TSDB_CODE_MND_NO_USER_FROM_CONN = -2147482796 -TSDB_CODE_MND_TOO_MANY_USERS = -2147482795 -TSDB_CODE_MND_INVALID_ALTER_OPER = -2147482794 -TSDB_CODE_MND_AUTH_FAILURE = -2147482793 -TSDB_CODE_MND_PRIVILEDGE_EXIST = -2147482791 -TSDB_CODE_MND_USER_HOST_EXIST = -2147482790 -TSDB_CODE_MND_USER_HOST_NOT_EXIST = -2147482789 -TSDB_CODE_MND_TOO_MANY_USER_HOST = -2147482788 -TSDB_CODE_MND_USER_LOCAL_HOST_NOT_DROP = -2147482787 -TSDB_CODE_MND_STB_ALREADY_EXIST = -2147482784 -TSDB_CODE_MND_STB_NOT_EXIST = -2147482782 -TSDB_CODE_MND_TOO_MANY_TAGS = -2147482780 -TSDB_CODE_MND_TOO_MANY_COLUMNS = -2147482779 -TSDB_CODE_MND_TAG_ALREADY_EXIST = -2147482775 -TSDB_CODE_MND_TAG_NOT_EXIST = -2147482774 -TSDB_CODE_MND_COLUMN_ALREADY_EXIST = -2147482773 -TSDB_CODE_MND_COLUMN_NOT_EXIST = -2147482772 -TSDB_CODE_MND_INVALID_STB_OPTION = -2147482770 -TSDB_CODE_MND_INVALID_ROW_BYTES = -2147482769 -TSDB_CODE_MND_FIELD_VALUE_OVERFLOW = -2147482768 -TSDB_CODE_MND_COLUMN_COMPRESS_ALREADY_EXIST = -2147482632 -TSDB_CODE_MND_INVALID_FUNC_NAME = -2147482768 -TSDB_CODE_MND_INVALID_FUNC_CODE = -2147482766 -TSDB_CODE_MND_FUNC_ALREADY_EXIST = -2147482765 -TSDB_CODE_MND_FUNC_NOT_EXIST = -2147482764 -TSDB_CODE_MND_INVALID_FUNC_BUFSIZE = -2147482763 -TSDB_CODE_MND_INVALID_FUNC_COMMENT = -2147482760 -TSDB_CODE_MND_INVALID_FUNC_RETRIEVE = -2147482759 -TSDB_CODE_MND_TAG_INDEX_ALREADY_EXIST = -2147482493 -TSDB_CODE_MND_TAG_INDEX_NOT_EXIST = -2147482492 -TSDB_CODE_MND_DB_NOT_SELECTED = -2147482752 -TSDB_CODE_MND_DB_ALREADY_EXIST = -2147482751 -TSDB_CODE_MND_INVALID_DB_OPTION = -2147482750 -TSDB_CODE_MND_INVALID_DB = -2147482749 -TSDB_CODE_MND_TOO_MANY_DATABASES = -2147482747 -TSDB_CODE_MND_DB_IN_DROPPING = -2147482746 -TSDB_CODE_MND_DB_NOT_EXIST = -2147482744 -TSDB_CODE_MND_INVALID_DB_ACCT = -2147482743 -TSDB_CODE_MND_DB_OPTION_UNCHANGED = -2147482742 -TSDB_CODE_MND_DB_INDEX_NOT_EXIST = -2147482741 -TSDB_CODE_MND_DB_RETENTION_PERIOD_ZERO = -2147482740 -TSDB_CODE_MND_INVALID_ENCRYPT_KEY = -2147482738 -TSDB_CODE_MND_DB_IN_CREATING = -2147482730 -TSDB_CODE_MND_INVALID_SYS_TABLENAME = -2147482726 -TSDB_CODE_MND_ENCRYPT_NOT_ALLOW_CHANGE = -2147482725 -TSDB_CODE_MND_MNODE_ALREADY_EXIST = -2147482720 -TSDB_CODE_MND_MNODE_NOT_EXIST = -2147482719 -TSDB_CODE_MND_QNODE_ALREADY_EXIST = -2147482718 -TSDB_CODE_MND_QNODE_NOT_EXIST = -2147482717 -TSDB_CODE_MND_SNODE_ALREADY_EXIST = -2147482716 -TSDB_CODE_MND_SNODE_NOT_EXIST = -2147482715 -TSDB_CODE_MND_TOO_FEW_MNODES = -2147482712 -TSDB_CODE_MND_TOO_MANY_MNODES = -2147482711 -TSDB_CODE_MND_ARBGROUP_ALREADY_EXIST = -2147482710 -TSDB_CODE_MND_ARBGROUP_NOT_EXIST = -2147482709 -TSDB_CODE_MND_ARB_TOKEN_MISMATCH = -2147482708 -TSDB_CODE_MND_TOO_MANY_DNODES = -2147482704 -TSDB_CODE_MND_NO_ENOUGH_MEM_IN_DNODE = -2147482703 -TSDB_CODE_MND_INVALID_DNODE_CFG = -2147482702 -TSDB_CODE_MND_INVALID_DNODE_EP = -2147482701 -TSDB_CODE_MND_INVALID_DNODE_ID = -2147482700 -TSDB_CODE_MND_VGROUP_UN_CHANGED = -2147482699 -TSDB_CODE_MND_HAS_OFFLINE_DNODE = -2147482698 -TSDB_CODE_MND_INVALID_REPLICA = -2147482697 -TSDB_CODE_MND_NO_ENOUGH_VNODES = -2147482694 -TSDB_CODE_MND_NAME_CONFLICT_WITH_TOPIC = -2147482688 -TSDB_CODE_MND_TOO_MANY_STBS = -2147482687 -TSDB_CODE_MND_INVALID_STB_ALTER_OPTION = -2147482686 -TSDB_CODE_MND_STB_OPTION_UNCHNAGED = -2147482685 -TSDB_CODE_MND_FIELD_CONFLICT_WITH_TOPIC = -2147482684 -TSDB_CODE_MND_SINGLE_STB_MODE_DB = -2147482683 -TSDB_CODE_MND_INVALID_SCHEMA_VER = -2147482682 -TSDB_CODE_MND_STABLE_UID_NOT_MATCH = -2147482681 -TSDB_CODE_MND_FIELD_CONFLICT_WITH_TSMA = -2147482680 -TSDB_CODE_MND_DNODE_IN_CREATING = -2147482696 -TSDB_CODE_MND_DNODE_IN_DROPPING = -2147482695 -TSDB_CODE_MND_TRANS_ALREADY_EXIST = -2147482672 -TSDB_CODE_MND_TRANS_NOT_EXIST = -2147482671 -TSDB_CODE_MND_TRANS_INVALID_STAGE = -2147482670 -TSDB_CODE_MND_TRANS_CONFLICT = -2147482669 -TSDB_CODE_MND_TRANS_CLOG_IS_NULL = -2147482668 -TSDB_CODE_MND_TRANS_NETWORK_UNAVAILL = -2147482667 -TSDB_CODE_MND_LAST_TRANS_NOT_FINISHED = -2147482666 -TSDB_CODE_MND_TRANS_SYNC_TIMEOUT = -2147482665 -TSDB_CODE_MND_TRANS_CTX_SWITCH = -2147482664 -TSDB_CODE_MND_TRANS_UNKNOW_ERROR = -2147482657 -TSDB_CODE_MND_TOPIC_ALREADY_EXIST = -2147482656 -TSDB_CODE_MND_TOPIC_NOT_EXIST = -2147482655 -TSDB_CODE_MND_TOO_MANY_TOPICS = -2147482654 -TSDB_CODE_MND_INVALID_TOPIC = -2147482653 -TSDB_CODE_MND_INVALID_TOPIC_QUERY = -2147482652 -TSDB_CODE_MND_INVALID_TOPIC_OPTION = -2147482651 -TSDB_CODE_MND_CONSUMER_NOT_EXIST = -2147482650 -TSDB_CODE_MND_TOPIC_OPTION_UNCHNAGED = -2147482649 -TSDB_CODE_MND_SUBSCRIBE_NOT_EXIST = -2147482648 -TSDB_CODE_MND_OFFSET_NOT_EXIST = -2147482647 -TSDB_CODE_MND_CONSUMER_NOT_READY = -2147482646 -TSDB_CODE_MND_TOPIC_SUBSCRIBED = -2147482645 -TSDB_CODE_MND_CGROUP_USED = -2147482644 -TSDB_CODE_MND_TOPIC_MUST_BE_DELETED = -2147482643 -TSDB_CODE_MND_INVALID_SUB_OPTION = -2147482642 -TSDB_CODE_MND_IN_REBALANCE = -2147482641 -TSDB_CODE_MND_STREAM_ALREADY_EXIST = -2147482640 -TSDB_CODE_MND_STREAM_NOT_EXIST = -2147482639 -TSDB_CODE_MND_INVALID_STREAM_OPTION = -2147482638 -TSDB_CODE_MND_STREAM_MUST_BE_DELETED = -2147482637 -TSDB_CODE_MND_MULTI_REPLICA_SOURCE_DB = -2147482635 -TSDB_CODE_MND_TOO_MANY_STREAMS = -2147482634 -TSDB_CODE_MND_INVALID_TARGET_TABLE = -2147482633 -TSDB_CODE_MND_SMA_ALREADY_EXIST = -2147482496 -TSDB_CODE_MND_SMA_NOT_EXIST = -2147482495 -TSDB_CODE_MND_INVALID_SMA_OPTION = -2147482494 -TSDB_CODE_MND_INVALID_DROP_TSMA = -2147482491 -TSDB_CODE_MND_MAX_TSMA_NUM_EXCEEDED = -2147482490 -TSDB_CODE_MND_VIEW_ALREADY_EXIST = -2147482464 -TSDB_CODE_MND_VIEW_NOT_EXIST = -2147482463 -TSDB_CODE_MND_INVALID_COMPACT_ID = -2147482447 -TSDB_CODE_MND_COMPACT_DETAIL_NOT_EXIST = -2147482446 -TSDB_CODE_DNODE_OFFLINE = -2147482616 -TSDB_CODE_MNODE_NOT_FOUND = -2147482614 -TSDB_CODE_MNODE_ALREADY_DEPLOYED = -2147482615 -TSDB_CODE_MNODE_NOT_DEPLOYED = -2147482613 -TSDB_CODE_QNODE_NOT_FOUND = -2147482611 -TSDB_CODE_QNODE_ALREADY_DEPLOYED = -2147482612 -TSDB_CODE_QNODE_NOT_DEPLOYED = -2147482610 -TSDB_CODE_SNODE_NOT_FOUND = -2147482608 -TSDB_CODE_SNODE_ALREADY_DEPLOYED = -2147482609 -TSDB_CODE_SNODE_NOT_DEPLOYED = -2147482607 -TSDB_CODE_MNODE_NOT_CATCH_UP = -2147482606 -TSDB_CODE_MNODE_ALREADY_IS_VOTER = -2147482605 -TSDB_CODE_MNODE_ONLY_TWO_MNODE = -2147482604 -TSDB_CODE_MNODE_NO_NEED_RESTORE = -2147482603 -TSDB_CODE_DNODE_ONLY_USE_WHEN_OFFLINE = -2147482602 -TSDB_CODE_DNODE_NO_MACHINE_CODE = -2147482601 -TSDB_CODE_DNODE_NO_ENCRYPT_KEY = -2147482600 -TSDB_CODE_DNODE_INVALID_ENCRYPT_CONFIG = -2147482599 -TSDB_CODE_DNODE_INVALID_ENCRYPTKEY = -2147482592 -TSDB_CODE_DNODE_ENCRYPTKEY_CHANGED = -2147482591 -TSDB_CODE_DNODE_INVALID_ENCRYPT_KLEN = -2147482590 -TSDB_CODE_DNODE_INVALID_STATUS_INTERVAL = -2147482589 -TSDB_CODE_DNODE_INVALID_TIMEZONE = -2147482588 -TSDB_CODE_DNODE_INVALID_CHARSET = -2147482587 -TSDB_CODE_DNODE_INVALID_LOCALE = -2147482586 -TSDB_CODE_DNODE_INVALID_TTL_CHG_ON_WR = -2147482585 -TSDB_CODE_DNODE_INVALID_EN_WHITELIST = -2147482584 -TSDB_CODE_VND_INVALID_VGROUP_ID = -2147482365 -TSDB_CODE_VND_INIT_FAILED = -2147482364 -TSDB_CODE_VND_NO_WRITE_AUTH = -2147482350 -TSDB_CODE_VND_NOT_EXIST = -2147482336 -TSDB_CODE_VND_ALREADY_EXIST = -2147482335 -TSDB_CODE_VND_HASH_MISMATCH = -2147482334 -TSDB_CODE_VND_INVALID_TABLE_ACTION = -2147482332 -TSDB_CODE_VND_COL_ALREADY_EXISTS = -2147482331 -TSDB_CODE_VND_COL_NOT_EXISTS = -2147482330 -TSDB_CODE_VND_COL_SUBSCRIBED = -2147482329 -TSDB_CODE_VND_NO_AVAIL_BUFPOOL = -2147482328 -TSDB_CODE_VND_STOPPED = -2147482327 -TSDB_CODE_VND_DUP_REQUEST = -2147482320 -TSDB_CODE_VND_QUERY_BUSY = -2147482319 -TSDB_CODE_VND_NOT_CATCH_UP = -2147482318 -TSDB_CODE_VND_ALREADY_IS_VOTER = -2147482317 -TSDB_CODE_VND_DIR_ALREADY_EXIST = -2147482316 -TSDB_CODE_VND_META_DATA_UNSAFE_DELETE = -2147482315 -TSDB_CODE_VND_ARB_NOT_SYNCED = -2147482314 -TSDB_CODE_VND_COLUMN_COMPRESS_ALREADY_EXIST = -2147482314 -TSDB_CODE_TDB_INVALID_TABLE_ID = -2147482112 -TSDB_CODE_TDB_INVALID_TABLE_TYPE = -2147482111 -TSDB_CODE_TDB_IVD_TB_SCHEMA_VERSION = -2147482110 -TSDB_CODE_TDB_TABLE_ALREADY_EXIST = -2147482109 -TSDB_CODE_TDB_INVALID_CONFIG = -2147482108 -TSDB_CODE_TDB_INIT_FAILED = -2147482107 -TSDB_CODE_TDB_NO_DISK_PERMISSIONS = -2147482105 -TSDB_CODE_TDB_TAG_VER_OUT_OF_DATE = -2147482102 -TSDB_CODE_TDB_TIMESTAMP_OUT_OF_RANGE = -2147482101 -TSDB_CODE_TDB_SUBMIT_MSG_MSSED_UP = -2147482100 -TSDB_CODE_TDB_INVALID_ACTION = -2147482099 -TSDB_CODE_TDB_INVALID_CREATE_TB_MSG = -2147482098 -TSDB_CODE_TDB_NO_TABLE_DATA_IN_MEM = -2147482097 -TSDB_CODE_TDB_FILE_ALREADY_EXISTS = -2147482096 -TSDB_CODE_TDB_TABLE_RECONFIGURE = -2147482095 -TSDB_CODE_TDB_IVD_CREATE_TABLE_INFO = -2147482094 -TSDB_CODE_TDB_NO_AVAIL_DISK = -2147482093 -TSDB_CODE_TDB_MESSED_MSG = -2147482092 -TSDB_CODE_TDB_IVLD_TAG_VAL = -2147482091 -TSDB_CODE_TDB_NO_CACHE_LAST_ROW = -2147482090 -TSDB_CODE_TDB_TABLE_NOT_EXIST = -2147482088 -TSDB_CODE_TDB_STB_ALREADY_EXIST = -2147482087 -TSDB_CODE_TDB_STB_NOT_EXIST = -2147482086 -TSDB_CODE_TDB_INVALID_TABLE_SCHEMA_VER = -2147482085 -TSDB_CODE_TDB_TDB_ENV_OPEN_ERROR = -2147482084 -TSDB_CODE_TDB_TABLE_IN_OTHER_STABLE = -2147482083 -TSDB_CODE_QRY_INVALID_QHANDLE = -2147481856 -TSDB_CODE_QRY_INVALID_MSG = -2147481855 -TSDB_CODE_QRY_DUP_JOIN_KEY = -2147481851 -TSDB_CODE_QRY_EXCEED_TAGS_LIMIT = -2147481850 -TSDB_CODE_QRY_NOT_READY = -2147481849 -TSDB_CODE_QRY_HAS_RSP = -2147481848 -TSDB_CODE_QRY_IN_EXEC = -2147481847 -TSDB_CODE_QRY_TOO_MANY_TIMEWINDOW = -2147481846 -TSDB_CODE_QRY_NOT_ENOUGH_BUFFER = -2147481845 -TSDB_CODE_QRY_INCONSISTAN = -2147481844 -TSDB_CODE_QRY_SYS_ERROR = -2147481843 -TSDB_CODE_QRY_INVALID_TIME_CONDITION = -2147481842 -TSDB_CODE_QRY_INVALID_INPUT = -2147481841 -TSDB_CODE_QRY_SCH_NOT_EXIST = -2147481824 -TSDB_CODE_QRY_TASK_NOT_EXIST = -2147481823 -TSDB_CODE_QRY_TASK_ALREADY_EXIST = -2147481822 -TSDB_CODE_QRY_TASK_CTX_NOT_EXIST = -2147481821 -TSDB_CODE_QRY_TASK_CANCELLED = -2147481820 -TSDB_CODE_QRY_TASK_DROPPED = -2147481819 -TSDB_CODE_QRY_TASK_CANCELLING = -2147481818 -TSDB_CODE_QRY_TASK_DROPPING = -2147481817 -TSDB_CODE_QRY_DUPLICATED_OPERATION = -2147481816 -TSDB_CODE_QRY_TASK_MSG_ERROR = -2147481815 -TSDB_CODE_QRY_JOB_FREED = -2147481814 -TSDB_CODE_QRY_TASK_STATUS_ERROR = -2147481813 -TSDB_CODE_QRY_JSON_IN_ERROR = -2147481812 -TSDB_CODE_QRY_JSON_NOT_SUPPORT_ERROR = -2147481811 -TSDB_CODE_QRY_JSON_IN_GROUP_ERROR = -2147481810 -TSDB_CODE_QRY_JOB_NOT_EXIST = -2147481809 -TSDB_CODE_QRY_QWORKER_QUIT = -2147481808 -TSDB_CODE_QRY_GEO_NOT_SUPPORT_ERROR = -2147481807 -TSDB_CODE_QRY_INVALID_WINDOW_CONDITION = -2147481838 -TSDB_CODE_QRY_EXECUTOR_INTERNAL_ERROR = -2147481806 -TSDB_CODE_QRY_EXECUTOR_INTERNAL_ERROR = -2147481806 -TSDB_CODE_QRY_INVALID_JOIN_CONDITION = -2147481805 -TSDB_CODE_GRANT_EXPIRED = -2147481600 -TSDB_CODE_GRANT_DNODE_LIMITED = -2147481599 -TSDB_CODE_GRANT_ACCT_LIMITED = -2147481598 -TSDB_CODE_GRANT_TIMESERIES_LIMITED = -2147481597 -TSDB_CODE_GRANT_DB_LIMITED = -2147481596 -TSDB_CODE_GRANT_USER_LIMITED = -2147481595 -TSDB_CODE_GRANT_CONN_LIMITED = -2147481594 -TSDB_CODE_GRANT_STREAM_LIMITED = -2147481593 -TSDB_CODE_GRANT_SPEED_LIMITED = -2147481592 -TSDB_CODE_GRANT_STORAGE_LIMITED = -2147481591 -TSDB_CODE_GRANT_SUBSCRIPTION_LIMITED = -2147481590 -TSDB_CODE_GRANT_CPU_LIMITED = -2147481589 -TSDB_CODE_GRANT_STABLE_LIMITED = -2147481588 -TSDB_CODE_GRANT_TABLE_LIMITED = -2147481587 -TSDB_CODE_GRANT_PAR_IVLD_ACTIVE = -2147481586 -TSDB_CODE_GRANT_PAR_IVLD_KEY = -2147481585 -TSDB_CODE_GRANT_PAR_DEC_IVLD_KEY = -2147481584 -TSDB_CODE_GRANT_PAR_DEC_IVLD_KLEN = -2147481583 -TSDB_CODE_GRANT_GEN_IVLD_KEY = -2147481582 -TSDB_CODE_GRANT_GEN_ACTIVE_LEN = -2147481581 -TSDB_CODE_GRANT_GEN_ENC_IVLD_KLEN = -2147481580 -TSDB_CODE_GRANT_PAR_IVLD_DIST = -2147481579 -TSDB_CODE_GRANT_UNLICENSED_CLUSTER = -2147481578 -TSDB_CODE_GRANT_LACK_OF_BASIC = -2147481577 -TSDB_CODE_GRANT_OBJ_NOT_EXIST = -2147481576 -TSDB_CODE_GRANT_LAST_ACTIVE_NOT_FOUND = -2147481575 -TSDB_CODE_GRANT_MACHINES_MISMATCH = -2147481568 -TSDB_CODE_GRANT_OPT_EXPIRE_TOO_LARGE = -2147481567 -TSDB_CODE_GRANT_DUPLICATED_ACTIVE = -2147481566 -TSDB_CODE_GRANT_VIEW_LIMITED = -2147481565 -TSDB_CODE_GRANT_BASIC_EXPIRED = -2147481564 -TSDB_CODE_GRANT_STREAM_EXPIRED = -2147481563 -TSDB_CODE_GRANT_SUBSCRIPTION_EXPIRED = -2147481562 -TSDB_CODE_GRANT_VIEW_EXPIRED = -2147481561 -TSDB_CODE_GRANT_AUDIT_EXPIRED = -2147481560 -TSDB_CODE_GRANT_CSV_EXPIRED = -2147481559 -TSDB_CODE_GRANT_MULTI_STORAGE_EXPIRED = -2147481558 -TSDB_CODE_GRANT_OBJECT_STROAGE_EXPIRED = -2147481557 -TSDB_CODE_GRANT_DUAL_REPLICA_HA_EXPIRED = -2147481556 -TSDB_CODE_GRANT_DB_ENCRYPTION_EXPIRED = -2147481555 -TSDB_CODE_SYN_TIMEOUT = -2147481341 -TSDB_CODE_SYN_MISMATCHED_SIGNATURE = -2147481337 -TSDB_CODE_SYN_NOT_LEADER = -2147481332 -TSDB_CODE_SYN_NEW_CONFIG_ERROR = -2147481329 -TSDB_CODE_SYN_PROPOSE_NOT_READY = -2147481327 -TSDB_CODE_SYN_RESTORING = -2147481324 -TSDB_CODE_SYN_INVALID_SNAPSHOT_MSG = -2147481323 -TSDB_CODE_SYN_BUFFER_FULL = -2147481322 -TSDB_CODE_SYN_WRITE_STALL = -2147481321 -TSDB_CODE_SYN_NEGOTIATION_WIN_FULL = -2147481320 -TSDB_CODE_SYN_INTERNAL_ERROR = -2147481089 -TSDB_CODE_TQ_INVALID_CONFIG = -2147481088 -TSDB_CODE_TQ_INIT_FAILED = -2147481087 -TSDB_CODE_TQ_NO_DISK_PERMISSIONS = -2147481085 -TSDB_CODE_TQ_FILE_ALREADY_EXISTS = -2147481082 -TSDB_CODE_TQ_FAILED_TO_CREATE_DIR = -2147481081 -TSDB_CODE_TQ_META_NO_SUCH_KEY = -2147481080 -TSDB_CODE_TQ_META_KEY_NOT_IN_TXN = -2147481079 -TSDB_CODE_TQ_META_KEY_DUP_IN_TXN = -2147481078 -TSDB_CODE_TQ_GROUP_NOT_SET = -2147481077 -TSDB_CODE_TQ_TABLE_SCHEMA_NOT_FOUND = -2147481076 -TSDB_CODE_TQ_NO_COMMITTED_OFFSET = -2147481075 -TSDB_CODE_WAL_FILE_CORRUPTED = -2147479551 -TSDB_CODE_WAL_INVALID_VER = -2147479549 -TSDB_CODE_WAL_LOG_NOT_EXIST = -2147479547 -TSDB_CODE_WAL_CHKSUM_MISMATCH = -2147479546 -TSDB_CODE_WAL_LOG_INCOMPLETE = -2147479545 -TSDB_CODE_FS_INVLD_CFG = -2147474943 -TSDB_CODE_FS_TOO_MANY_MOUNT = -2147474942 -TSDB_CODE_FS_DUP_PRIMARY = -2147474941 -TSDB_CODE_FS_NO_PRIMARY_DISK = -2147474940 -TSDB_CODE_FS_NO_MOUNT_AT_TIER = -2147474939 -TSDB_CODE_FS_FILE_ALREADY_EXISTS = -2147474938 -TSDB_CODE_FS_INVLD_LEVEL = -2147474937 -TSDB_CODE_FS_NO_VALID_DISK = -2147474936 -TSDB_CODE_CTG_INTERNAL_ERROR = -2147474432 -TSDB_CODE_CTG_INVALID_INPUT = -2147474431 -TSDB_CODE_CTG_NOT_READY = -2147474430 -TSDB_CODE_CTG_SYS_ERROR = -2147474429 -TSDB_CODE_CTG_DB_DROPPED = -2147474428 -TSDB_CODE_CTG_OUT_OF_SERVICE = -2147474427 -TSDB_CODE_CTG_VG_META_MISMATCH = -2147474426 -TSDB_CODE_CTG_EXIT = -2147474425 -TSDB_CODE_QW_MSG_ERROR = -2147474096 -TSDB_CODE_SCH_STATUS_ERROR = -2147474175 -TSDB_CODE_SCH_INTERNAL_ERROR = -2147474174 -TSDB_CODE_SCH_TIMEOUT_ERROR = -2147474172 -TSDB_CODE_SCH_JOB_IS_DROPPING = -2147474171 -TSDB_CODE_SCH_JOB_NOT_EXISTS = -2147474170 -TSDB_CODE_PAR_SYNTAX_ERROR = -2147473920 -TSDB_CODE_PAR_INCOMPLETE_SQL = -2147473919 -TSDB_CODE_PAR_INVALID_COLUMN = -2147473918 -TSDB_CODE_PAR_TABLE_NOT_EXIST = -2147473917 -TSDB_CODE_PAR_AMBIGUOUS_COLUMN = -2147473916 -TSDB_CODE_PAR_WRONG_VALUE_TYPE = -2147473915 -TSDB_CODE_PAR_ILLEGAL_USE_AGG_FUNCTION = -2147473912 -TSDB_CODE_PAR_WRONG_NUMBER_OF_SELECT = -2147473911 -TSDB_CODE_PAR_GROUPBY_LACK_EXPRESSION = -2147473910 -TSDB_CODE_PAR_NOT_SELECTED_EXPRESSION = -2147473909 -TSDB_CODE_PAR_NOT_SINGLE_GROUP = -2147473908 -TSDB_CODE_PAR_TAGS_NOT_MATCHED = -2147473907 -TSDB_CODE_PAR_INVALID_TAG_NAME = -2147473906 -TSDB_CODE_PAR_NAME_OR_PASSWD_TOO_LONG = -2147473904 -TSDB_CODE_PAR_PASSWD_EMPTY = -2147473903 -TSDB_CODE_PAR_INVALID_PORT = -2147473902 -TSDB_CODE_PAR_INVALID_ENDPOINT = -2147473901 -TSDB_CODE_PAR_EXPRIE_STATEMENT = -2147473900 -TSDB_CODE_PAR_INTER_VALUE_TOO_SMALL = -2147473899 -TSDB_CODE_PAR_INTER_VALUE_TOO_BIG = -2147473893 -TSDB_CODE_PAR_DB_NOT_SPECIFIED = -2147473898 -TSDB_CODE_PAR_INVALID_IDENTIFIER_NAME = -2147473897 -TSDB_CODE_PAR_CORRESPONDING_STABLE_ERR = -2147473896 -TSDB_CODE_PAR_INVALID_DB_OPTION = -2147473895 -TSDB_CODE_PAR_INVALID_TABLE_OPTION = -2147473894 -TSDB_CODE_PAR_GROUPBY_WINDOW_COEXIST = -2147473884 -TSDB_CODE_PAR_AGG_FUNC_NESTING = -2147473881 -TSDB_CODE_PAR_INVALID_STATE_WIN_TYPE = -2147473880 -TSDB_CODE_PAR_INVALID_STATE_WIN_COL = -2147473879 -TSDB_CODE_PAR_INVALID_STATE_WIN_TABLE = -2147473878 -TSDB_CODE_PAR_INTER_SESSION_GAP = -2147473877 -TSDB_CODE_PAR_INTER_SESSION_COL = -2147473876 -TSDB_CODE_PAR_INTER_OFFSET_NEGATIVE = -2147473875 -TSDB_CODE_PAR_INTER_OFFSET_UNIT = -2147473874 -TSDB_CODE_PAR_INTER_OFFSET_TOO_BIG = -2147473873 -TSDB_CODE_PAR_INTER_SLIDING_UNIT = -2147473872 -TSDB_CODE_PAR_INTER_SLIDING_TOO_BIG = -2147473871 -TSDB_CODE_PAR_INTER_SLIDING_TOO_SMALL = -2147473870 -TSDB_CODE_PAR_ONLY_ONE_JSON_TAG = -2147473869 -TSDB_CODE_PAR_INCORRECT_NUM_OF_COL = -2147473868 -TSDB_CODE_PAR_INCORRECT_TIMESTAMP_VAL = -2147473867 -TSDB_CODE_PAR_OFFSET_LESS_ZERO = -2147473865 -TSDB_CODE_PAR_SLIMIT_LEAK_PARTITION_GROUP_BY = -2147473864 -TSDB_CODE_PAR_INVALID_TOPIC_QUERY = -2147473863 -TSDB_CODE_PAR_INVALID_DROP_STABLE = -2147473862 -TSDB_CODE_PAR_INVALID_FILL_TIME_RANGE = -2147473861 -TSDB_CODE_PAR_DUPLICATED_COLUMN = -2147473860 -TSDB_CODE_PAR_INVALID_TAGS_LENGTH = -2147473859 -TSDB_CODE_PAR_INVALID_ROW_LENGTH = -2147473858 -TSDB_CODE_PAR_INVALID_COLUMNS_NUM = -2147473857 -TSDB_CODE_PAR_TOO_MANY_COLUMNS = -2147473856 -TSDB_CODE_PAR_INVALID_FIRST_COLUMN = -2147473855 -TSDB_CODE_PAR_INVALID_VAR_COLUMN_LEN = -2147473854 -TSDB_CODE_PAR_INVALID_TAGS_NUM = -2147473853 -TSDB_CODE_PAR_PERMISSION_DENIED = -2147473852 -TSDB_CODE_PAR_INVALID_STREAM_QUERY = -2147473851 -TSDB_CODE_PAR_INVALID_INTERNAL_PK = -2147473850 -TSDB_CODE_PAR_INVALID_TIMELINE_FUNC = -2147473849 -TSDB_CODE_PAR_INVALID_PASSWD = -2147473848 -TSDB_CODE_PAR_INVALID_ALTER_TABLE = -2147473847 -TSDB_CODE_PAR_CANNOT_DROP_PRIMARY_KEY = -2147473846 -TSDB_CODE_PAR_INVALID_MODIFY_COL = -2147473845 -TSDB_CODE_PAR_INVALID_TBNAME = -2147473844 -TSDB_CODE_PAR_INVALID_FUNCTION_NAME = -2147473843 -TSDB_CODE_PAR_COMMENT_TOO_LONG = -2147473842 -TSDB_CODE_PAR_NOT_ALLOWED_FUNC = -2147473841 -TSDB_CODE_PAR_NOT_ALLOWED_WIN_QUERY = -2147473840 -TSDB_CODE_PAR_INVALID_DROP_COL = -2147473839 -TSDB_CODE_PAR_INVALID_COL_JSON = -2147473838 -TSDB_CODE_PAR_VALUE_TOO_LONG = -2147473837 -TSDB_CODE_PAR_INVALID_DELETE_WHERE = -2147473835 -TSDB_CODE_PAR_INVALID_REDISTRIBUTE_VG = -2147473834 -TSDB_CODE_PAR_FILL_NOT_ALLOWED_FUNC = -2147473833 -TSDB_CODE_PAR_INVALID_WINDOW_PC = -2147473832 -TSDB_CODE_PAR_WINDOW_NOT_ALLOWED_FUNC = -2147473831 -TSDB_CODE_PAR_STREAM_NOT_ALLOWED_FUNC = -2147473830 -TSDB_CODE_PAR_GROUP_BY_NOT_ALLOWED_FUNC = -2147473829 -TSDB_CODE_PAR_INVALID_INTERP_CLAUSE = -2147473827 -TSDB_CODE_PAR_NO_VALID_FUNC_IN_WIN = -2147473826 -TSDB_CODE_PAR_ONLY_SUPPORT_SINGLE_TABLE = -2147473825 -TSDB_CODE_PAR_INVALID_SMA_INDEX = -2147473824 -TSDB_CODE_PAR_INVALID_SELECTED_EXPR = -2147473823 -TSDB_CODE_PAR_GET_META_ERROR = -2147473822 -TSDB_CODE_PAR_NOT_UNIQUE_TABLE_ALIAS = -2147473821 -TSDB_CODE_PAR_SYSTABLE_NOT_ALLOWED_FUNC = -2147473816 -TSDB_CODE_PAR_SYSTABLE_NOT_ALLOWED = -2147473815 -TSDB_CODE_PAR_INVALID_VARBINARY = -2147473814 -TSDB_CODE_PAR_INVALID_IP_RANGE = -2147473813 -TSDB_CODE_PAR_INVALID_STREAM_QUERY = -2147473851 -TSDB_CODE_PAR_INVALID_VIEW_QUERY = -2147473812 -TSDB_CODE_PAR_COL_QUERY_MISMATCH = -2147473811 -TSDB_CODE_PAR_VIEW_CONFLICT_WITH_TABLE = -2147473810 -TSDB_CODE_PAR_NOT_SUPPORT_MULTI_RESULT = -2147473808 -TSDB_CODE_PAR_INVALID_WJOIN_HAVING_EXPR = -2147473806 -TSDB_CODE_PAR_GRP_WINDOW_NOT_ALLOWED = -2147473807 -TSDB_CODE_PAR_INVALID_WIN_OFFSET_UNIT = -2147473805 -TSDB_CODE_PAR_VALID_PRIM_TS_REQUIRED = -2147473804 -TSDB_CODE_PAR_ORDERBY_UNKNOWN_EXPR = -2147473803 -TSDB_CODE_PAR_NOT_WIN_FUNC = -2147473802 -TSDB_CODE_PAR_TAG_IS_PRIMARY_KEY = -2147473801 -TSDB_CODE_PAR_SECOND_COL_PK = -2147473800 -TSDB_CODE_PAR_COL_PK_TYPE = -2147473799 -TSDB_CODE_PAR_INVALID_PK_OP = -2147473798 -TSDB_CODE_PAR_PRIMARY_KEY_IS_NULL = -2147473797 -TSDB_CODE_PAR_PRIMARY_KEY_IS_NONE = -2147473796 -TSDB_CODE_PAR_INTERNAL_ERROR = -2147473665 -TSDB_CODE_PLAN_INTERNAL_ERROR = -2147473664 -TSDB_CODE_PLAN_EXPECTED_TS_EQUAL = -2147473663 -TSDB_CODE_PLAN_NOT_SUPPORT_CROSS_JOIN = -2147473662 -TSDB_CODE_PLAN_NOT_SUPPORT_JOIN_COND = -2147473661 -TSDB_CODE_FUNC_FUNTION_ERROR = -2147473408 -TSDB_CODE_FUNC_FUNTION_PARA_NUM = -2147473407 -TSDB_CODE_FUNC_FUNTION_PARA_TYPE = -2147473406 -TSDB_CODE_FUNC_FUNTION_PARA_VALUE = -2147473405 -TSDB_CODE_FUNC_NOT_BUILTIN_FUNTION = -2147473404 -TSDB_CODE_FUNC_DUP_TIMESTAMP = -2147473403 -TSDB_CODE_FUNC_TO_TIMESTAMP_FAILED_FORMAT_ERR = -2147473402 -TSDB_CODE_FUNC_TO_TIMESTAMP_FAILED_TS_ERR = -2147473401 -TSDB_CODE_FUNC_TO_TIMESTAMP_FAILED_NOT_SUPPORTED = -2147473400 -TSDB_CODE_FUNC_TO_CHAR_NOT_SUPPORTED = -2147473399 -TSDB_CODE_UDF_STOPPING = -2147473151 -TSDB_CODE_UDF_PIPE_READ_ERR = -2147473150 -TSDB_CODE_UDF_PIPE_CONNECT_ERR = -2147473149 -TSDB_CODE_UDF_PIPE_NOT_EXIST = -2147473148 -TSDB_CODE_UDF_LOAD_UDF_FAILURE = -2147473147 -TSDB_CODE_UDF_INVALID_INPUT = -2147473146 -TSDB_CODE_UDF_INVALID_BUFSIZE = -2147473145 -TSDB_CODE_UDF_INVALID_OUTPUT_TYPE = -2147473144 -TSDB_CODE_UDF_SCRIPT_NOT_SUPPORTED = -2147473143 -TSDB_CODE_UDF_FUNC_EXEC_FAILURE = -2147473142 -TSDB_CODE_SML_INVALID_PROTOCOL_TYPE = -2147471360 -TSDB_CODE_SML_INVALID_PRECISION_TYPE = -2147471359 -TSDB_CODE_SML_INVALID_DATA = -2147471358 -TSDB_CODE_SML_INVALID_DB_CONF = -2147471357 -TSDB_CODE_SML_NOT_SAME_TYPE = -2147471356 -TSDB_CODE_SML_INTERNAL_ERROR = -2147471355 -TSDB_CODE_SML_NOT_SUPPORT_PK = -2147471354 -TSDB_CODE_TSMA_INIT_FAILED = -2147471104 -TSDB_CODE_TSMA_ALREADY_EXIST = -2147471103 -TSDB_CODE_TSMA_INVALID_ENV = -2147471102 -TSDB_CODE_TSMA_INVALID_STAT = -2147471101 -TSDB_CODE_TSMA_INVALID_PTR = -2147471100 -TSDB_CODE_TSMA_INVALID_PARA = -2147471099 -TSDB_CODE_TSMA_INVALID_TB = -2147471098 -TSDB_CODE_TSMA_INVALID_INTERVAL = -2147471097 -TSDB_CODE_TSMA_INVALID_FUNC_PARAM = -2147471096 -TSDB_CODE_TSMA_UNSUPPORTED_FUNC = -2147471095 -TSDB_CODE_TSMA_MUST_BE_DROPPED = -2147471088 -TSDB_CODE_TSMA_NAME_TOO_LONG = -2147471087 -TSDB_CODE_RSMA_INVALID_ENV = -2147471024 -TSDB_CODE_RSMA_INVALID_STAT = -2147471023 -TSDB_CODE_RSMA_QTASKINFO_CREATE = -2147471022 -TSDB_CODE_RSMA_INVALID_SCHEMA = -2147471021 -TSDB_CODE_RSMA_STREAM_STATE_OPEN = -2147471020 -TSDB_CODE_RSMA_STREAM_STATE_COMMIT = -2147471019 -TSDB_CODE_RSMA_FS_SYNC = -2147471018 -TSDB_CODE_RSMA_RESULT = -2147471017 -TSDB_CODE_INDEX_REBUILDING = -2147470848 -TSDB_CODE_INDEX_INVALID_FILE = -2147470847 -TSDB_CODE_SCALAR_CONVERT_ERROR = -2147470768 -TSDB_CODE_TMQ_INVALID_MSG = -2147467264 -TSDB_CODE_TMQ_NEED_INITIALIZED = -2147467248 -TSDB_CODE_TMQ_SNAPSHOT_ERROR = -2147467258 -TSDB_CODE_TMQ_NO_COMMITTED = -2147467247 -TSDB_CODE_TMQ_VERSION_OUT_OF_RANGE = -2147467257 -TSDB_CODE_TMQ_INVALID_VGID = -2147467256 -TSDB_CODE_TMQ_INVALID_TOPIC = -2147467255 -TSDB_CODE_TMQ_CONSUMER_MISMATCH = -2147467263 -TSDB_CODE_TMQ_CONSUMER_CLOSED = -2147467262 -TSDB_CODE_TMQ_CONSUMER_ERROR = -2147467261 -TSDB_CODE_TMQ_TOPIC_OUT_OF_RANGE = -2147467260 -TSDB_CODE_TMQ_GROUP_OUT_OF_RANGE = -2147467259 -TSDB_CODE_TMQ_SAME_COMMITTED_VALUE = -2147467246 -TSDB_CODE_TMQ_REPLAY_NEED_ONE_VGROUP = -2147467245 -TSDB_CODE_TMQ_REPLAY_NOT_SUPPORT = -2147467244 -TSDB_CODE_STREAM_TASK_NOT_EXIST = -2147467008 -TSDB_CODE_STREAM_EXEC_CANCELLED = -2147467006 -TSDB_CODE_STREAM_INVALID_STATETRANS = -2147467005 -TSDB_CODE_STREAM_TASK_IVLD_STATUS = -2147467004 -TSDB_CODE_TDLITE_IVLD_OPEN_FLAGS = -2147462912 -TSDB_CODE_TDLITE_IVLD_OPEN_DIR = -2147462911 -TSDB_CODE_UTIL_QUEUE_OUT_OF_MEMORY = -2147459072 +TSDB_CODE_SUCCESS = 0x0 +TSDB_CODE_RPC_NETWORK_UNAVAIL = 0x8000000B +TSDB_CODE_RPC_FQDN_ERROR = 0x80000015 +TSDB_CODE_RPC_PORT_EADDRINUSE = 0x80000017 +TSDB_CODE_RPC_BROKEN_LINK = 0x80000018 +TSDB_CODE_RPC_TIMEOUT = 0x80000019 +TSDB_CODE_RPC_SOMENODE_NOT_CONNECTED = 0x80000020 +TSDB_CODE_RPC_MAX_SESSIONS = 0x80000022 +TSDB_CODE_RPC_NETWORK_ERROR = 0x80000023 +TSDB_CODE_RPC_NETWORK_BUSY = 0x80000024 +TSDB_CODE_TIME_UNSYNCED = 0x80000013 +TSDB_CODE_OPS_NOT_SUPPORT = 0x80000100 +TSDB_CODE_OUT_OF_MEMORY = 0x80000102 +TSDB_CODE_FILE_CORRUPTED = 0x80000104 +TSDB_CODE_REF_FULL = 0x80000106 +TSDB_CODE_REF_ID_REMOVED = 0x80000107 +TSDB_CODE_REF_INVALID_ID = 0x80000108 +TSDB_CODE_REF_ALREADY_EXIST = 0x80000109 +TSDB_CODE_REF_NOT_EXIST = 0x8000010A +TSDB_CODE_APP_ERROR = 0x80000110 +TSDB_CODE_ACTION_IN_PROGRESS = 0x80000111 +TSDB_CODE_OUT_OF_RANGE = 0x80000112 +TSDB_CODE_INVALID_MSG = 0x80000115 +TSDB_CODE_INVALID_MSG_LEN = 0x80000116 +TSDB_CODE_INVALID_PTR = 0x80000117 +TSDB_CODE_INVALID_PARA = 0x80000118 +TSDB_CODE_INVALID_CFG = 0x80000119 +TSDB_CODE_INVALID_OPTION = 0x8000011A +TSDB_CODE_INVALID_JSON_FORMAT = 0x8000011B +TSDB_CODE_INVALID_VERSION_NUMBER = 0x8000011C +TSDB_CODE_INVALID_VERSION_STRING = 0x8000011D +TSDB_CODE_VERSION_NOT_COMPATIBLE = 0x8000011E +TSDB_CODE_CHECKSUM_ERROR = 0x8000011F +TSDB_CODE_COMPRESS_ERROR = 0x80000120 +TSDB_CODE_MSG_NOT_PROCESSED = 0x80000121 +TSDB_CODE_CFG_NOT_FOUND = 0x80000122 +TSDB_CODE_REPEAT_INIT = 0x80000123 +TSDB_CODE_DUP_KEY = 0x80000124 +TSDB_CODE_NEED_RETRY = 0x80000125 +TSDB_CODE_OUT_OF_RPC_MEMORY_QUEUE = 0x80000126 +TSDB_CODE_INVALID_TIMESTAMP = 0x80000127 +TSDB_CODE_MSG_DECODE_ERROR = 0x80000128 +TSDB_CODE_MSG_ENCODE_ERROR = 0x8000012D +TSDB_CODE_NO_AVAIL_DISK = 0x80000129 +TSDB_CODE_NOT_FOUND = 0x8000012A +TSDB_CODE_NO_DISKSPACE = 0x8000012B +TSDB_CODE_TIMEOUT_ERROR = 0x8000012C +TSDB_CODE_NO_ENOUGH_DISKSPACE = 0x8000012E +TSDB_CODE_APP_IS_STARTING = 0x80000130 +TSDB_CODE_APP_IS_STOPPING = 0x80000131 +TSDB_CODE_INVALID_DATA_FMT = 0x80000132 +TSDB_CODE_INVALID_CFG_VALUE = 0x80000133 +TSDB_CODE_IP_NOT_IN_WHITE_LIST = 0x80000134 +TSDB_CODE_FAILED_TO_CONNECT_S3 = 0x80000135 +TSDB_CODE_MSG_PREPROCESSED = 0x80000136 +TSDB_CODE_TSC_INVALID_OPERATION = 0x80000200 +TSDB_CODE_TSC_INVALID_QHANDLE = 0x80000201 +TSDB_CODE_TSC_INVALID_TIME_STAMP = 0x80000202 +TSDB_CODE_TSC_INVALID_VALUE = 0x80000203 +TSDB_CODE_TSC_INVALID_VERSION = 0x80000204 +TSDB_CODE_TSC_INVALID_IE = 0x80000205 +TSDB_CODE_TSC_INVALID_FQDN = 0x80000206 +TSDB_CODE_TSC_INVALID_USER_LENGTH = 0x80000207 +TSDB_CODE_TSC_INVALID_PASS_LENGTH = 0x80000208 +TSDB_CODE_TSC_INVALID_DB_LENGTH = 0x80000209 +TSDB_CODE_TSC_INVALID_TABLE_ID_LENGTH = 0x8000020A +TSDB_CODE_TSC_INVALID_CONNECTION = 0x8000020B +TSDB_CODE_TSC_QUERY_CACHE_ERASED = 0x8000020E +TSDB_CODE_TSC_QUERY_CANCELLED = 0x8000020F +TSDB_CODE_TSC_SORTED_RES_TOO_MANY = 0x80000210 +TSDB_CODE_TSC_ACTION_IN_PROGRESS = 0x80000212 +TSDB_CODE_TSC_DISCONNECTED = 0x80000213 +TSDB_CODE_TSC_NO_WRITE_AUTH = 0x80000214 +TSDB_CODE_TSC_CONN_KILLED = 0x80000215 +TSDB_CODE_TSC_SQL_SYNTAX_ERROR = 0x80000216 +TSDB_CODE_TSC_DB_NOT_SELECTED = 0x80000217 +TSDB_CODE_TSC_EXCEED_SQL_LIMIT = 0x80000219 +TSDB_CODE_TSC_FILE_EMPTY = 0x8000021A +TSDB_CODE_TSC_LINE_SYNTAX_ERROR = 0x8000021B +TSDB_CODE_TSC_NO_META_CACHED = 0x8000021C +TSDB_CODE_TSC_DUP_COL_NAMES = 0x8000021D +TSDB_CODE_TSC_INVALID_TAG_LENGTH = 0x8000021E +TSDB_CODE_TSC_INVALID_COLUMN_LENGTH = 0x8000021F +TSDB_CODE_TSC_DUP_NAMES = 0x80000220 +TSDB_CODE_TSC_INVALID_JSON = 0x80000221 +TSDB_CODE_TSC_INVALID_JSON_TYPE = 0x80000222 +TSDB_CODE_TSC_VALUE_OUT_OF_RANGE = 0x80000224 +TSDB_CODE_TSC_INVALID_INPUT = 0x80000229 +TSDB_CODE_TSC_STMT_API_ERROR = 0x8000022A +TSDB_CODE_TSC_STMT_TBNAME_ERROR = 0x8000022B +TSDB_CODE_TSC_STMT_CLAUSE_ERROR = 0x8000022C +TSDB_CODE_TSC_QUERY_KILLED = 0x8000022D +TSDB_CODE_TSC_NO_EXEC_NODE = 0x8000022E +TSDB_CODE_TSC_NOT_STABLE_ERROR = 0x8000022F +TSDB_CODE_TSC_STMT_CACHE_ERROR = 0x80000230 +TSDB_CODE_TSC_ENCODE_PARAM_ERROR = 0x80000231 +TSDB_CODE_TSC_ENCODE_PARAM_NULL = 0x80000232 +TSDB_CODE_TSC_COMPRESS_PARAM_ERROR = 0x80000233 +TSDB_CODE_TSC_COMPRESS_LEVEL_ERROR = 0x80000234 +TSDB_CODE_TSC_INTERNAL_ERROR = 0x800002FF +TSDB_CODE_MND_REQ_REJECTED = 0x80000300 +TSDB_CODE_MND_NO_RIGHTS = 0x80000303 +TSDB_CODE_MND_INVALID_SHOWOBJ = 0x8000030B +TSDB_CODE_MND_INVALID_QUERY_ID = 0x8000030C +TSDB_CODE_MND_INVALID_CONN_ID = 0x8000030E +TSDB_CODE_MND_USER_DISABLED = 0x80000315 +TSDB_CODE_MND_INVALID_PLATFORM = 0x80000316 +TSDB_CODE_SDB_OBJ_ALREADY_THERE = 0x80000320 +TSDB_CODE_SDB_INVALID_TABLE_TYPE = 0x80000322 +TSDB_CODE_SDB_OBJ_NOT_THERE = 0x80000323 +TSDB_CODE_SDB_INVALID_ACTION_TYPE = 0x80000326 +TSDB_CODE_SDB_INVALID_DATA_VER = 0x80000328 +TSDB_CODE_SDB_INVALID_DATA_LEN = 0x80000329 +TSDB_CODE_SDB_INVALID_DATA_CONTENT = 0x8000032A +TSDB_CODE_SDB_OBJ_CREATING = 0x8000032C +TSDB_CODE_SDB_OBJ_DROPPING = 0x8000032D +TSDB_CODE_MND_DNODE_ALREADY_EXIST = 0x80000330 +TSDB_CODE_MND_DNODE_NOT_EXIST = 0x80000331 +TSDB_CODE_MND_VGROUP_NOT_EXIST = 0x80000332 +TSDB_CODE_MND_CANT_DROP_LEADER = 0x80000333 +TSDB_CODE_MND_NO_ENOUGH_DNODES = 0x80000334 +TSDB_CODE_MND_INVALID_CLUSTER_CFG = 0x80000335 +TSDB_CODE_MND_VGROUP_NOT_IN_DNODE = 0x80000338 +TSDB_CODE_MND_VGROUP_ALREADY_IN_DNODE = 0x80000339 +TSDB_CODE_MND_INVALID_CLUSTER_ID = 0x8000033B +TSDB_CODE_MND_ACCT_ALREADY_EXIST = 0x80000340 +TSDB_CODE_MND_INVALID_ACCT_OPTION = 0x80000342 +TSDB_CODE_MND_ACCT_EXPIRED = 0x80000343 +TSDB_CODE_MND_ACCT_NOT_EXIST = 0x80000344 +TSDB_CODE_MND_TOO_MANY_ACCTS = 0x80000345 +TSDB_CODE_MND_USER_ALREADY_EXIST = 0x80000350 +TSDB_CODE_MND_USER_NOT_EXIST = 0x80000351 +TSDB_CODE_MND_INVALID_USER_FORMAT = 0x80000352 +TSDB_CODE_MND_USER_NOT_AVAILABLE = 0x80000358 +TSDB_CODE_MND_INVALID_PASS_FORMAT = 0x80000353 +TSDB_CODE_MND_NO_USER_FROM_CONN = 0x80000354 +TSDB_CODE_MND_TOO_MANY_USERS = 0x80000355 +TSDB_CODE_MND_INVALID_ALTER_OPER = 0x80000356 +TSDB_CODE_MND_AUTH_FAILURE = 0x80000357 +TSDB_CODE_MND_PRIVILEDGE_EXIST = 0x80000359 +TSDB_CODE_MND_USER_HOST_EXIST = 0x8000035A +TSDB_CODE_MND_USER_HOST_NOT_EXIST = 0x8000035B +TSDB_CODE_MND_TOO_MANY_USER_HOST = 0x8000035C +TSDB_CODE_MND_USER_LOCAL_HOST_NOT_DROP = 0x8000035D +TSDB_CODE_MND_STB_ALREADY_EXIST = 0x80000360 +TSDB_CODE_MND_STB_NOT_EXIST = 0x80000362 +TSDB_CODE_MND_TOO_MANY_TAGS = 0x80000364 +TSDB_CODE_MND_TOO_MANY_COLUMNS = 0x80000365 +TSDB_CODE_MND_TAG_ALREADY_EXIST = 0x80000369 +TSDB_CODE_MND_TAG_NOT_EXIST = 0x8000036A +TSDB_CODE_MND_COLUMN_ALREADY_EXIST = 0x8000036B +TSDB_CODE_MND_COLUMN_NOT_EXIST = 0x8000036C +TSDB_CODE_MND_INVALID_STB_OPTION = 0x8000036E +TSDB_CODE_MND_INVALID_ROW_BYTES = 0x8000036F +TSDB_CODE_MND_COLUMN_COMPRESS_ALREADY_EXIST = 0x800003F8 +TSDB_CODE_MND_INVALID_FUNC_NAME = 0x80000370 +TSDB_CODE_MND_INVALID_FUNC_CODE = 0x80000372 +TSDB_CODE_MND_FUNC_ALREADY_EXIST = 0x80000373 +TSDB_CODE_MND_FUNC_NOT_EXIST = 0x80000374 +TSDB_CODE_MND_INVALID_FUNC_BUFSIZE = 0x80000375 +TSDB_CODE_MND_INVALID_FUNC_COMMENT = 0x80000378 +TSDB_CODE_MND_INVALID_FUNC_RETRIEVE = 0x80000379 +TSDB_CODE_MND_TAG_INDEX_ALREADY_EXIST = 0x80000483 +TSDB_CODE_MND_TAG_INDEX_NOT_EXIST = 0x80000484 +TSDB_CODE_MND_DB_NOT_SELECTED = 0x80000380 +TSDB_CODE_MND_DB_ALREADY_EXIST = 0x80000381 +TSDB_CODE_MND_INVALID_DB_OPTION = 0x80000382 +TSDB_CODE_MND_INVALID_DB = 0x80000383 +TSDB_CODE_MND_TOO_MANY_DATABASES = 0x80000385 +TSDB_CODE_MND_DB_IN_DROPPING = 0x80000386 +TSDB_CODE_MND_DB_NOT_EXIST = 0x80000388 +TSDB_CODE_MND_INVALID_DB_ACCT = 0x80000389 +TSDB_CODE_MND_DB_OPTION_UNCHANGED = 0x8000038A +TSDB_CODE_MND_DB_INDEX_NOT_EXIST = 0x8000038B +TSDB_CODE_MND_DB_RETENTION_PERIOD_ZERO = 0x8000038C +TSDB_CODE_MND_INVALID_ENCRYPT_KEY = 0x8000038E +TSDB_CODE_MND_DB_IN_CREATING = 0x80000396 +TSDB_CODE_MND_INVALID_SYS_TABLENAME = 0x8000039A +TSDB_CODE_MND_ENCRYPT_NOT_ALLOW_CHANGE = 0x8000039B +TSDB_CODE_MND_INVALID_WAL_LEVEL = 0x8000039C +TSDB_CODE_MND_MNODE_ALREADY_EXIST = 0x800003A0 +TSDB_CODE_MND_MNODE_NOT_EXIST = 0x800003A1 +TSDB_CODE_MND_QNODE_ALREADY_EXIST = 0x800003A2 +TSDB_CODE_MND_QNODE_NOT_EXIST = 0x800003A3 +TSDB_CODE_MND_SNODE_ALREADY_EXIST = 0x800003A4 +TSDB_CODE_MND_SNODE_NOT_EXIST = 0x800003A5 +TSDB_CODE_MND_TOO_FEW_MNODES = 0x800003A8 +TSDB_CODE_MND_TOO_MANY_MNODES = 0x800003A9 +TSDB_CODE_MND_ARBGROUP_ALREADY_EXIST = 0x800003AA +TSDB_CODE_MND_ARBGROUP_NOT_EXIST = 0x800003AB +TSDB_CODE_MND_ARB_TOKEN_MISMATCH = 0x800003AC +TSDB_CODE_MND_TOO_MANY_DNODES = 0x800003B0 +TSDB_CODE_MND_NO_ENOUGH_MEM_IN_DNODE = 0x800003B1 +TSDB_CODE_MND_INVALID_DNODE_CFG = 0x800003B2 +TSDB_CODE_MND_INVALID_DNODE_EP = 0x800003B3 +TSDB_CODE_MND_INVALID_DNODE_ID = 0x800003B4 +TSDB_CODE_MND_VGROUP_UN_CHANGED = 0x800003B5 +TSDB_CODE_MND_HAS_OFFLINE_DNODE = 0x800003B6 +TSDB_CODE_MND_INVALID_REPLICA = 0x800003B7 +TSDB_CODE_MND_NO_ENOUGH_VNODES = 0x800003BA +TSDB_CODE_MND_NAME_CONFLICT_WITH_TOPIC = 0x800003C0 +TSDB_CODE_MND_TOO_MANY_STBS = 0x800003C1 +TSDB_CODE_MND_INVALID_STB_ALTER_OPTION = 0x800003C2 +TSDB_CODE_MND_STB_OPTION_UNCHNAGED = 0x800003C3 +TSDB_CODE_MND_FIELD_CONFLICT_WITH_TOPIC = 0x800003C4 +TSDB_CODE_MND_SINGLE_STB_MODE_DB = 0x800003C5 +TSDB_CODE_MND_INVALID_SCHEMA_VER = 0x800003C6 +TSDB_CODE_MND_STABLE_UID_NOT_MATCH = 0x800003C7 +TSDB_CODE_MND_FIELD_CONFLICT_WITH_TSMA = 0x800003C8 +TSDB_CODE_MND_DNODE_IN_CREATING = 0x800003B8 +TSDB_CODE_MND_DNODE_IN_DROPPING = 0x800003B9 +TSDB_CODE_MND_TRANS_ALREADY_EXIST = 0x800003D0 +TSDB_CODE_MND_TRANS_NOT_EXIST = 0x800003D1 +TSDB_CODE_MND_TRANS_INVALID_STAGE = 0x800003D2 +TSDB_CODE_MND_TRANS_CONFLICT = 0x800003D3 +TSDB_CODE_MND_TRANS_CLOG_IS_NULL = 0x800003D4 +TSDB_CODE_MND_TRANS_NETWORK_UNAVAILL = 0x800003D5 +TSDB_CODE_MND_LAST_TRANS_NOT_FINISHED = 0x800003D6 +TSDB_CODE_MND_TRANS_SYNC_TIMEOUT = 0x800003D7 +TSDB_CODE_MND_TRANS_CTX_SWITCH = 0x800003D8 +TSDB_CODE_MND_TRANS_UNKNOW_ERROR = 0x800003DF +TSDB_CODE_MND_TOPIC_ALREADY_EXIST = 0x800003E0 +TSDB_CODE_MND_TOPIC_NOT_EXIST = 0x800003E1 +TSDB_CODE_MND_TOO_MANY_TOPICS = 0x800003E2 +TSDB_CODE_MND_INVALID_TOPIC = 0x800003E3 +TSDB_CODE_MND_INVALID_TOPIC_QUERY = 0x800003E4 +TSDB_CODE_MND_INVALID_TOPIC_OPTION = 0x800003E5 +TSDB_CODE_MND_CONSUMER_NOT_EXIST = 0x800003E6 +TSDB_CODE_MND_TOPIC_OPTION_UNCHNAGED = 0x800003E7 +TSDB_CODE_MND_SUBSCRIBE_NOT_EXIST = 0x800003E8 +TSDB_CODE_MND_OFFSET_NOT_EXIST = 0x800003E9 +TSDB_CODE_MND_CONSUMER_NOT_READY = 0x800003EA +TSDB_CODE_MND_TOPIC_SUBSCRIBED = 0x800003EB +TSDB_CODE_MND_CGROUP_USED = 0x800003EC +TSDB_CODE_MND_TOPIC_MUST_BE_DELETED = 0x800003ED +TSDB_CODE_MND_INVALID_SUB_OPTION = 0x800003EE +TSDB_CODE_MND_IN_REBALANCE = 0x800003EF +TSDB_CODE_MND_STREAM_ALREADY_EXIST = 0x800003F0 +TSDB_CODE_MND_STREAM_NOT_EXIST = 0x800003F1 +TSDB_CODE_MND_INVALID_STREAM_OPTION = 0x800003F2 +TSDB_CODE_MND_STREAM_MUST_BE_DELETED = 0x800003F3 +TSDB_CODE_MND_MULTI_REPLICA_SOURCE_DB = 0x800003F5 +TSDB_CODE_MND_TOO_MANY_STREAMS = 0x800003F6 +TSDB_CODE_MND_INVALID_TARGET_TABLE = 0x800003F7 +TSDB_CODE_MND_SMA_ALREADY_EXIST = 0x80000480 +TSDB_CODE_MND_SMA_NOT_EXIST = 0x80000481 +TSDB_CODE_MND_INVALID_SMA_OPTION = 0x80000482 +TSDB_CODE_MND_INVALID_DROP_TSMA = 0x80000485 +TSDB_CODE_MND_MAX_TSMA_NUM_EXCEEDED = 0x80000486 +TSDB_CODE_MND_VIEW_ALREADY_EXIST = 0x800004A0 +TSDB_CODE_MND_VIEW_NOT_EXIST = 0x800004A1 +TSDB_CODE_MND_INVALID_COMPACT_ID = 0x800004B1 +TSDB_CODE_MND_COMPACT_DETAIL_NOT_EXIST = 0x800004B2 +TSDB_CODE_DNODE_OFFLINE = 0x80000408 +TSDB_CODE_MNODE_NOT_FOUND = 0x8000040A +TSDB_CODE_MNODE_ALREADY_DEPLOYED = 0x80000409 +TSDB_CODE_MNODE_NOT_DEPLOYED = 0x8000040B +TSDB_CODE_QNODE_NOT_FOUND = 0x8000040D +TSDB_CODE_QNODE_ALREADY_DEPLOYED = 0x8000040C +TSDB_CODE_QNODE_NOT_DEPLOYED = 0x8000040E +TSDB_CODE_SNODE_NOT_FOUND = 0x80000410 +TSDB_CODE_SNODE_ALREADY_DEPLOYED = 0x8000040F +TSDB_CODE_SNODE_NOT_DEPLOYED = 0x80000411 +TSDB_CODE_MNODE_NOT_CATCH_UP = 0x80000412 +TSDB_CODE_MNODE_ALREADY_IS_VOTER = 0x80000413 +TSDB_CODE_MNODE_ONLY_TWO_MNODE = 0x80000414 +TSDB_CODE_MNODE_NO_NEED_RESTORE = 0x80000415 +TSDB_CODE_DNODE_ONLY_USE_WHEN_OFFLINE = 0x80000416 +TSDB_CODE_DNODE_NO_MACHINE_CODE = 0x80000417 +TSDB_CODE_DNODE_NO_ENCRYPT_KEY = 0x80000418 +TSDB_CODE_DNODE_INVALID_ENCRYPT_CONFIG = 0x80000419 +TSDB_CODE_DNODE_INVALID_ENCRYPTKEY = 0x80000420 +TSDB_CODE_DNODE_ENCRYPTKEY_CHANGED = 0x80000421 +TSDB_CODE_DNODE_INVALID_ENCRYPT_KLEN = 0x80000422 +TSDB_CODE_DNODE_INVALID_STATUS_INTERVAL = 0x80000423 +TSDB_CODE_DNODE_INVALID_TIMEZONE = 0x80000424 +TSDB_CODE_DNODE_INVALID_CHARSET = 0x80000425 +TSDB_CODE_DNODE_INVALID_LOCALE = 0x80000426 +TSDB_CODE_DNODE_INVALID_TTL_CHG_ON_WR = 0x80000427 +TSDB_CODE_DNODE_INVALID_EN_WHITELIST = 0x80000428 +TSDB_CODE_VND_INVALID_VGROUP_ID = 0x80000503 +TSDB_CODE_VND_INIT_FAILED = 0x80000504 +TSDB_CODE_VND_NO_WRITE_AUTH = 0x80000512 +TSDB_CODE_VND_NOT_EXIST = 0x80000520 +TSDB_CODE_VND_ALREADY_EXIST = 0x80000521 +TSDB_CODE_VND_HASH_MISMATCH = 0x80000522 +TSDB_CODE_VND_INVALID_TABLE_ACTION = 0x80000524 +TSDB_CODE_VND_COL_ALREADY_EXISTS = 0x80000525 +TSDB_CODE_VND_COL_NOT_EXISTS = 0x80000526 +TSDB_CODE_VND_COL_SUBSCRIBED = 0x80000527 +TSDB_CODE_VND_NO_AVAIL_BUFPOOL = 0x80000528 +TSDB_CODE_VND_STOPPED = 0x80000529 +TSDB_CODE_VND_DUP_REQUEST = 0x80000530 +TSDB_CODE_VND_QUERY_BUSY = 0x80000531 +TSDB_CODE_VND_NOT_CATCH_UP = 0x80000532 +TSDB_CODE_VND_ALREADY_IS_VOTER = 0x80000533 +TSDB_CODE_VND_DIR_ALREADY_EXIST = 0x80000534 +TSDB_CODE_VND_META_DATA_UNSAFE_DELETE = 0x80000535 +TSDB_CODE_VND_ARB_NOT_SYNCED = 0x80000537 +TSDB_CODE_VND_COLUMN_COMPRESS_ALREADY_EXIST = 0x80000536 +TSDB_CODE_TDB_INVALID_TABLE_ID = 0x80000600 +TSDB_CODE_TDB_INVALID_TABLE_TYPE = 0x80000601 +TSDB_CODE_TDB_IVD_TB_SCHEMA_VERSION = 0x80000602 +TSDB_CODE_TDB_TABLE_ALREADY_EXIST = 0x80000603 +TSDB_CODE_TDB_INVALID_CONFIG = 0x80000604 +TSDB_CODE_TDB_INIT_FAILED = 0x80000605 +TSDB_CODE_TDB_NO_DISK_PERMISSIONS = 0x80000607 +TSDB_CODE_TDB_TAG_VER_OUT_OF_DATE = 0x8000060A +TSDB_CODE_TDB_TIMESTAMP_OUT_OF_RANGE = 0x8000060B +TSDB_CODE_TDB_SUBMIT_MSG_MSSED_UP = 0x8000060C +TSDB_CODE_TDB_INVALID_ACTION = 0x8000060D +TSDB_CODE_TDB_INVALID_CREATE_TB_MSG = 0x8000060E +TSDB_CODE_TDB_NO_TABLE_DATA_IN_MEM = 0x8000060F +TSDB_CODE_TDB_FILE_ALREADY_EXISTS = 0x80000610 +TSDB_CODE_TDB_TABLE_RECONFIGURE = 0x80000611 +TSDB_CODE_TDB_IVD_CREATE_TABLE_INFO = 0x80000612 +TSDB_CODE_TDB_NO_AVAIL_DISK = 0x80000613 +TSDB_CODE_TDB_MESSED_MSG = 0x80000614 +TSDB_CODE_TDB_IVLD_TAG_VAL = 0x80000615 +TSDB_CODE_TDB_NO_CACHE_LAST_ROW = 0x80000616 +TSDB_CODE_TDB_TABLE_NOT_EXIST = 0x80000618 +TSDB_CODE_TDB_STB_ALREADY_EXIST = 0x80000619 +TSDB_CODE_TDB_STB_NOT_EXIST = 0x8000061A +TSDB_CODE_TDB_INVALID_TABLE_SCHEMA_VER = 0x8000061B +TSDB_CODE_TDB_TDB_ENV_OPEN_ERROR = 0x8000061C +TSDB_CODE_TDB_TABLE_IN_OTHER_STABLE = 0x8000061D +TSDB_CODE_QRY_INVALID_QHANDLE = 0x80000700 +TSDB_CODE_QRY_INVALID_MSG = 0x80000701 +TSDB_CODE_QRY_DUP_JOIN_KEY = 0x80000705 +TSDB_CODE_QRY_EXCEED_TAGS_LIMIT = 0x80000706 +TSDB_CODE_QRY_NOT_READY = 0x80000707 +TSDB_CODE_QRY_HAS_RSP = 0x80000708 +TSDB_CODE_QRY_IN_EXEC = 0x80000709 +TSDB_CODE_QRY_TOO_MANY_TIMEWINDOW = 0x8000070A +TSDB_CODE_QRY_NOT_ENOUGH_BUFFER = 0x8000070B +TSDB_CODE_QRY_INCONSISTAN = 0x8000070C +TSDB_CODE_QRY_SYS_ERROR = 0x8000070D +TSDB_CODE_QRY_INVALID_TIME_CONDITION = 0x8000070E +TSDB_CODE_QRY_INVALID_INPUT = 0x8000070F +TSDB_CODE_QRY_SCH_NOT_EXIST = 0x80000720 +TSDB_CODE_QRY_TASK_NOT_EXIST = 0x80000721 +TSDB_CODE_QRY_TASK_ALREADY_EXIST = 0x80000722 +TSDB_CODE_QRY_TASK_CTX_NOT_EXIST = 0x80000723 +TSDB_CODE_QRY_TASK_CANCELLED = 0x80000724 +TSDB_CODE_QRY_TASK_DROPPED = 0x80000725 +TSDB_CODE_QRY_TASK_CANCELLING = 0x80000726 +TSDB_CODE_QRY_TASK_DROPPING = 0x80000727 +TSDB_CODE_QRY_DUPLICATED_OPERATION = 0x80000728 +TSDB_CODE_QRY_TASK_MSG_ERROR = 0x80000729 +TSDB_CODE_QRY_JOB_FREED = 0x8000072A +TSDB_CODE_QRY_TASK_STATUS_ERROR = 0x8000072B +TSDB_CODE_QRY_JSON_IN_ERROR = 0x8000072C +TSDB_CODE_QRY_JSON_NOT_SUPPORT_ERROR = 0x8000072D +TSDB_CODE_QRY_JSON_IN_GROUP_ERROR = 0x8000072E +TSDB_CODE_QRY_JOB_NOT_EXIST = 0x8000072F +TSDB_CODE_QRY_QWORKER_QUIT = 0x80000730 +TSDB_CODE_QRY_GEO_NOT_SUPPORT_ERROR = 0x80000731 +TSDB_CODE_QRY_INVALID_WINDOW_CONDITION = 0x80000712 +TSDB_CODE_QRY_EXECUTOR_INTERNAL_ERROR = 0x80000732 +TSDB_CODE_QRY_EXECUTOR_INTERNAL_ERROR = 0x80000732 +TSDB_CODE_QRY_INVALID_JOIN_CONDITION = 0x80000733 +TSDB_CODE_GRANT_EXPIRED = 0x80000800 +TSDB_CODE_GRANT_DNODE_LIMITED = 0x80000801 +TSDB_CODE_GRANT_ACCT_LIMITED = 0x80000802 +TSDB_CODE_GRANT_TIMESERIES_LIMITED = 0x80000803 +TSDB_CODE_GRANT_DB_LIMITED = 0x80000804 +TSDB_CODE_GRANT_USER_LIMITED = 0x80000805 +TSDB_CODE_GRANT_CONN_LIMITED = 0x80000806 +TSDB_CODE_GRANT_STREAM_LIMITED = 0x80000807 +TSDB_CODE_GRANT_SPEED_LIMITED = 0x80000808 +TSDB_CODE_GRANT_STORAGE_LIMITED = 0x80000809 +TSDB_CODE_GRANT_SUBSCRIPTION_LIMITED = 0x8000080A +TSDB_CODE_GRANT_CPU_LIMITED = 0x8000080B +TSDB_CODE_GRANT_STABLE_LIMITED = 0x8000080C +TSDB_CODE_GRANT_TABLE_LIMITED = 0x8000080D +TSDB_CODE_GRANT_PAR_IVLD_ACTIVE = 0x8000080E +TSDB_CODE_GRANT_PAR_IVLD_KEY = 0x8000080F +TSDB_CODE_GRANT_PAR_DEC_IVLD_KEY = 0x80000810 +TSDB_CODE_GRANT_PAR_DEC_IVLD_KLEN = 0x80000811 +TSDB_CODE_GRANT_GEN_IVLD_KEY = 0x80000812 +TSDB_CODE_GRANT_GEN_ACTIVE_LEN = 0x80000813 +TSDB_CODE_GRANT_GEN_ENC_IVLD_KLEN = 0x80000814 +TSDB_CODE_GRANT_PAR_IVLD_DIST = 0x80000815 +TSDB_CODE_GRANT_UNLICENSED_CLUSTER = 0x80000816 +TSDB_CODE_GRANT_LACK_OF_BASIC = 0x80000817 +TSDB_CODE_GRANT_OBJ_NOT_EXIST = 0x80000818 +TSDB_CODE_GRANT_LAST_ACTIVE_NOT_FOUND = 0x80000819 +TSDB_CODE_GRANT_MACHINES_MISMATCH = 0x80000820 +TSDB_CODE_GRANT_OPT_EXPIRE_TOO_LARGE = 0x80000821 +TSDB_CODE_GRANT_DUPLICATED_ACTIVE = 0x80000822 +TSDB_CODE_GRANT_VIEW_LIMITED = 0x80000823 +TSDB_CODE_GRANT_BASIC_EXPIRED = 0x80000824 +TSDB_CODE_GRANT_STREAM_EXPIRED = 0x80000825 +TSDB_CODE_GRANT_SUBSCRIPTION_EXPIRED = 0x80000826 +TSDB_CODE_GRANT_VIEW_EXPIRED = 0x80000827 +TSDB_CODE_GRANT_AUDIT_EXPIRED = 0x80000828 +TSDB_CODE_GRANT_CSV_EXPIRED = 0x80000829 +TSDB_CODE_GRANT_MULTI_STORAGE_EXPIRED = 0x8000082A +TSDB_CODE_GRANT_OBJECT_STROAGE_EXPIRED = 0x8000082B +TSDB_CODE_GRANT_DUAL_REPLICA_HA_EXPIRED = 0x8000082C +TSDB_CODE_GRANT_DB_ENCRYPTION_EXPIRED = 0x8000082D +TSDB_CODE_SYN_TIMEOUT = 0x80000903 +TSDB_CODE_SYN_MISMATCHED_SIGNATURE = 0x80000907 +TSDB_CODE_SYN_NOT_LEADER = 0x8000090C +TSDB_CODE_SYN_NEW_CONFIG_ERROR = 0x8000090F +TSDB_CODE_SYN_PROPOSE_NOT_READY = 0x80000911 +TSDB_CODE_SYN_RESTORING = 0x80000914 +TSDB_CODE_SYN_INVALID_SNAPSHOT_MSG = 0x80000915 +TSDB_CODE_SYN_BUFFER_FULL = 0x80000916 +TSDB_CODE_SYN_WRITE_STALL = 0x80000917 +TSDB_CODE_SYN_NEGOTIATION_WIN_FULL = 0x80000918 +TSDB_CODE_SYN_INTERNAL_ERROR = 0x800009FF +TSDB_CODE_TQ_INVALID_CONFIG = 0x80000A00 +TSDB_CODE_TQ_INIT_FAILED = 0x80000A01 +TSDB_CODE_TQ_NO_DISK_PERMISSIONS = 0x80000A03 +TSDB_CODE_TQ_FILE_ALREADY_EXISTS = 0x80000A06 +TSDB_CODE_TQ_FAILED_TO_CREATE_DIR = 0x80000A07 +TSDB_CODE_TQ_META_NO_SUCH_KEY = 0x80000A08 +TSDB_CODE_TQ_META_KEY_NOT_IN_TXN = 0x80000A09 +TSDB_CODE_TQ_META_KEY_DUP_IN_TXN = 0x80000A0A +TSDB_CODE_TQ_GROUP_NOT_SET = 0x80000A0B +TSDB_CODE_TQ_TABLE_SCHEMA_NOT_FOUND = 0x80000A0C +TSDB_CODE_TQ_NO_COMMITTED_OFFSET = 0x80000A0D +TSDB_CODE_WAL_FILE_CORRUPTED = 0x80001001 +TSDB_CODE_WAL_INVALID_VER = 0x80001003 +TSDB_CODE_WAL_LOG_NOT_EXIST = 0x80001005 +TSDB_CODE_WAL_CHKSUM_MISMATCH = 0x80001006 +TSDB_CODE_WAL_LOG_INCOMPLETE = 0x80001007 +TSDB_CODE_FS_INVLD_CFG = 0x80002201 +TSDB_CODE_FS_TOO_MANY_MOUNT = 0x80002202 +TSDB_CODE_FS_DUP_PRIMARY = 0x80002203 +TSDB_CODE_FS_NO_PRIMARY_DISK = 0x80002204 +TSDB_CODE_FS_NO_MOUNT_AT_TIER = 0x80002205 +TSDB_CODE_FS_FILE_ALREADY_EXISTS = 0x80002206 +TSDB_CODE_FS_INVLD_LEVEL = 0x80002207 +TSDB_CODE_FS_NO_VALID_DISK = 0x80002208 +TSDB_CODE_CTG_INTERNAL_ERROR = 0x80002400 +TSDB_CODE_CTG_INVALID_INPUT = 0x80002401 +TSDB_CODE_CTG_NOT_READY = 0x80002402 +TSDB_CODE_CTG_SYS_ERROR = 0x80002403 +TSDB_CODE_CTG_DB_DROPPED = 0x80002404 +TSDB_CODE_CTG_OUT_OF_SERVICE = 0x80002405 +TSDB_CODE_CTG_VG_META_MISMATCH = 0x80002406 +TSDB_CODE_CTG_EXIT = 0x80002407 +TSDB_CODE_QW_MSG_ERROR = 0x80002550 +TSDB_CODE_SCH_STATUS_ERROR = 0x80002501 +TSDB_CODE_SCH_INTERNAL_ERROR = 0x80002502 +TSDB_CODE_SCH_TIMEOUT_ERROR = 0x80002504 +TSDB_CODE_SCH_JOB_IS_DROPPING = 0x80002505 +TSDB_CODE_SCH_JOB_NOT_EXISTS = 0x80002506 +TSDB_CODE_PAR_SYNTAX_ERROR = 0x80002600 +TSDB_CODE_PAR_INCOMPLETE_SQL = 0x80002601 +TSDB_CODE_PAR_INVALID_COLUMN = 0x80002602 +TSDB_CODE_PAR_TABLE_NOT_EXIST = 0x80002603 +TSDB_CODE_PAR_AMBIGUOUS_COLUMN = 0x80002604 +TSDB_CODE_PAR_WRONG_VALUE_TYPE = 0x80002605 +TSDB_CODE_PAR_ILLEGAL_USE_AGG_FUNCTION = 0x80002608 +TSDB_CODE_PAR_WRONG_NUMBER_OF_SELECT = 0x80002609 +TSDB_CODE_PAR_GROUPBY_LACK_EXPRESSION = 0x8000260A +TSDB_CODE_PAR_NOT_SELECTED_EXPRESSION = 0x8000260B +TSDB_CODE_PAR_NOT_SINGLE_GROUP = 0x8000260C +TSDB_CODE_PAR_TAGS_NOT_MATCHED = 0x8000260D +TSDB_CODE_PAR_INVALID_TAG_NAME = 0x8000260E +TSDB_CODE_PAR_NAME_OR_PASSWD_TOO_LONG = 0x80002610 +TSDB_CODE_PAR_PASSWD_EMPTY = 0x80002611 +TSDB_CODE_PAR_INVALID_PORT = 0x80002612 +TSDB_CODE_PAR_INVALID_ENDPOINT = 0x80002613 +TSDB_CODE_PAR_EXPRIE_STATEMENT = 0x80002614 +TSDB_CODE_PAR_INTER_VALUE_TOO_SMALL = 0x80002615 +TSDB_CODE_PAR_INTER_VALUE_TOO_BIG = 0x8000261B +TSDB_CODE_PAR_DB_NOT_SPECIFIED = 0x80002616 +TSDB_CODE_PAR_INVALID_IDENTIFIER_NAME = 0x80002617 +TSDB_CODE_PAR_CORRESPONDING_STABLE_ERR = 0x80002618 +TSDB_CODE_PAR_INVALID_DB_OPTION = 0x80002619 +TSDB_CODE_PAR_INVALID_TABLE_OPTION = 0x8000261A +TSDB_CODE_PAR_GROUPBY_WINDOW_COEXIST = 0x80002624 +TSDB_CODE_PAR_AGG_FUNC_NESTING = 0x80002627 +TSDB_CODE_PAR_INVALID_STATE_WIN_TYPE = 0x80002628 +TSDB_CODE_PAR_INVALID_STATE_WIN_COL = 0x80002629 +TSDB_CODE_PAR_INVALID_STATE_WIN_TABLE = 0x8000262A +TSDB_CODE_PAR_INTER_SESSION_GAP = 0x8000262B +TSDB_CODE_PAR_INTER_SESSION_COL = 0x8000262C +TSDB_CODE_PAR_INTER_OFFSET_NEGATIVE = 0x8000262D +TSDB_CODE_PAR_INTER_OFFSET_UNIT = 0x8000262E +TSDB_CODE_PAR_INTER_OFFSET_TOO_BIG = 0x8000262F +TSDB_CODE_PAR_INTER_SLIDING_UNIT = 0x80002630 +TSDB_CODE_PAR_INTER_SLIDING_TOO_BIG = 0x80002631 +TSDB_CODE_PAR_INTER_SLIDING_TOO_SMALL = 0x80002632 +TSDB_CODE_PAR_ONLY_ONE_JSON_TAG = 0x80002633 +TSDB_CODE_PAR_INCORRECT_NUM_OF_COL = 0x80002634 +TSDB_CODE_PAR_INCORRECT_TIMESTAMP_VAL = 0x80002635 +TSDB_CODE_PAR_OFFSET_LESS_ZERO = 0x80002637 +TSDB_CODE_PAR_SLIMIT_LEAK_PARTITION_GROUP_BY = 0x80002638 +TSDB_CODE_PAR_INVALID_TOPIC_QUERY = 0x80002639 +TSDB_CODE_PAR_INVALID_DROP_STABLE = 0x8000263A +TSDB_CODE_PAR_INVALID_FILL_TIME_RANGE = 0x8000263B +TSDB_CODE_PAR_DUPLICATED_COLUMN = 0x8000263C +TSDB_CODE_PAR_INVALID_TAGS_LENGTH = 0x8000263D +TSDB_CODE_PAR_INVALID_ROW_LENGTH = 0x8000263E +TSDB_CODE_PAR_INVALID_COLUMNS_NUM = 0x8000263F +TSDB_CODE_PAR_TOO_MANY_COLUMNS = 0x80002640 +TSDB_CODE_PAR_INVALID_FIRST_COLUMN = 0x80002641 +TSDB_CODE_PAR_INVALID_VAR_COLUMN_LEN = 0x80002642 +TSDB_CODE_PAR_INVALID_TAGS_NUM = 0x80002643 +TSDB_CODE_PAR_PERMISSION_DENIED = 0x80002644 +TSDB_CODE_PAR_INVALID_STREAM_QUERY = 0x80002645 +TSDB_CODE_PAR_INVALID_INTERNAL_PK = 0x80002646 +TSDB_CODE_PAR_INVALID_TIMELINE_FUNC = 0x80002647 +TSDB_CODE_PAR_INVALID_PASSWD = 0x80002648 +TSDB_CODE_PAR_INVALID_ALTER_TABLE = 0x80002649 +TSDB_CODE_PAR_CANNOT_DROP_PRIMARY_KEY = 0x8000264A +TSDB_CODE_PAR_INVALID_MODIFY_COL = 0x8000264B +TSDB_CODE_PAR_INVALID_TBNAME = 0x8000264C +TSDB_CODE_PAR_INVALID_FUNCTION_NAME = 0x8000264D +TSDB_CODE_PAR_COMMENT_TOO_LONG = 0x8000264E +TSDB_CODE_PAR_NOT_ALLOWED_FUNC = 0x8000264F +TSDB_CODE_PAR_NOT_ALLOWED_WIN_QUERY = 0x80002650 +TSDB_CODE_PAR_INVALID_DROP_COL = 0x80002651 +TSDB_CODE_PAR_INVALID_COL_JSON = 0x80002652 +TSDB_CODE_PAR_VALUE_TOO_LONG = 0x80002653 +TSDB_CODE_PAR_INVALID_DELETE_WHERE = 0x80002655 +TSDB_CODE_PAR_INVALID_REDISTRIBUTE_VG = 0x80002656 +TSDB_CODE_PAR_FILL_NOT_ALLOWED_FUNC = 0x80002657 +TSDB_CODE_PAR_INVALID_WINDOW_PC = 0x80002658 +TSDB_CODE_PAR_WINDOW_NOT_ALLOWED_FUNC = 0x80002659 +TSDB_CODE_PAR_STREAM_NOT_ALLOWED_FUNC = 0x8000265A +TSDB_CODE_PAR_GROUP_BY_NOT_ALLOWED_FUNC = 0x8000265B +TSDB_CODE_PAR_INVALID_INTERP_CLAUSE = 0x8000265D +TSDB_CODE_PAR_NO_VALID_FUNC_IN_WIN = 0x8000265E +TSDB_CODE_PAR_ONLY_SUPPORT_SINGLE_TABLE = 0x8000265F +TSDB_CODE_PAR_INVALID_SMA_INDEX = 0x80002660 +TSDB_CODE_PAR_INVALID_SELECTED_EXPR = 0x80002661 +TSDB_CODE_PAR_GET_META_ERROR = 0x80002662 +TSDB_CODE_PAR_NOT_UNIQUE_TABLE_ALIAS = 0x80002663 +TSDB_CODE_PAR_SYSTABLE_NOT_ALLOWED_FUNC = 0x80002668 +TSDB_CODE_PAR_SYSTABLE_NOT_ALLOWED = 0x80002669 +TSDB_CODE_PAR_INVALID_VARBINARY = 0x8000266A +TSDB_CODE_PAR_INVALID_IP_RANGE = 0x8000266B +TSDB_CODE_PAR_INVALID_STREAM_QUERY = 0x80002645 +TSDB_CODE_PAR_INVALID_VIEW_QUERY = 0x8000266C +TSDB_CODE_PAR_COL_QUERY_MISMATCH = 0x8000266D +TSDB_CODE_PAR_VIEW_CONFLICT_WITH_TABLE = 0x8000266E +TSDB_CODE_PAR_NOT_SUPPORT_MULTI_RESULT = 0x80002670 +TSDB_CODE_PAR_INVALID_WJOIN_HAVING_EXPR = 0x80002672 +TSDB_CODE_PAR_GRP_WINDOW_NOT_ALLOWED = 0x80002671 +TSDB_CODE_PAR_INVALID_WIN_OFFSET_UNIT = 0x80002673 +TSDB_CODE_PAR_VALID_PRIM_TS_REQUIRED = 0x80002674 +TSDB_CODE_PAR_ORDERBY_UNKNOWN_EXPR = 0x80002675 +TSDB_CODE_PAR_NOT_WIN_FUNC = 0x80002676 +TSDB_CODE_PAR_TAG_IS_PRIMARY_KEY = 0x80002677 +TSDB_CODE_PAR_SECOND_COL_PK = 0x80002678 +TSDB_CODE_PAR_COL_PK_TYPE = 0x80002679 +TSDB_CODE_PAR_INVALID_PK_OP = 0x8000267A +TSDB_CODE_PAR_PRIMARY_KEY_IS_NULL = 0x8000267B +TSDB_CODE_PAR_PRIMARY_KEY_IS_NONE = 0x8000267C +TSDB_CODE_PAR_INTERNAL_ERROR = 0x800026FF +TSDB_CODE_PLAN_INTERNAL_ERROR = 0x80002700 +TSDB_CODE_PLAN_EXPECTED_TS_EQUAL = 0x80002701 +TSDB_CODE_PLAN_NOT_SUPPORT_CROSS_JOIN = 0x80002702 +TSDB_CODE_PLAN_NOT_SUPPORT_JOIN_COND = 0x80002703 +TSDB_CODE_FUNC_FUNTION_ERROR = 0x80002800 +TSDB_CODE_FUNC_FUNTION_PARA_NUM = 0x80002801 +TSDB_CODE_FUNC_FUNTION_PARA_TYPE = 0x80002802 +TSDB_CODE_FUNC_FUNTION_PARA_VALUE = 0x80002803 +TSDB_CODE_FUNC_NOT_BUILTIN_FUNTION = 0x80002804 +TSDB_CODE_FUNC_DUP_TIMESTAMP = 0x80002805 +TSDB_CODE_FUNC_TO_TIMESTAMP_FAILED_FORMAT_ERR = 0x80002806 +TSDB_CODE_FUNC_TO_TIMESTAMP_FAILED_TS_ERR = 0x80002807 +TSDB_CODE_FUNC_TO_TIMESTAMP_FAILED_NOT_SUPPORTED = 0x80002808 +TSDB_CODE_FUNC_TO_CHAR_NOT_SUPPORTED = 0x80002809 +TSDB_CODE_UDF_STOPPING = 0x80002901 +TSDB_CODE_UDF_PIPE_READ_ERR = 0x80002902 +TSDB_CODE_UDF_PIPE_CONNECT_ERR = 0x80002903 +TSDB_CODE_UDF_PIPE_NOT_EXIST = 0x80002904 +TSDB_CODE_UDF_LOAD_UDF_FAILURE = 0x80002905 +TSDB_CODE_UDF_INVALID_INPUT = 0x80002906 +TSDB_CODE_UDF_INVALID_BUFSIZE = 0x80002907 +TSDB_CODE_UDF_INVALID_OUTPUT_TYPE = 0x80002908 +TSDB_CODE_UDF_SCRIPT_NOT_SUPPORTED = 0x80002909 +TSDB_CODE_UDF_FUNC_EXEC_FAILURE = 0x8000290A +TSDB_CODE_SML_INVALID_PROTOCOL_TYPE = 0x80003000 +TSDB_CODE_SML_INVALID_PRECISION_TYPE = 0x80003001 +TSDB_CODE_SML_INVALID_DATA = 0x80003002 +TSDB_CODE_SML_INVALID_DB_CONF = 0x80003003 +TSDB_CODE_SML_NOT_SAME_TYPE = 0x80003004 +TSDB_CODE_SML_INTERNAL_ERROR = 0x80003005 +TSDB_CODE_SML_NOT_SUPPORT_PK = 0x80003006 +TSDB_CODE_TSMA_INIT_FAILED = 0x80003100 +TSDB_CODE_TSMA_ALREADY_EXIST = 0x80003101 +TSDB_CODE_TSMA_INVALID_ENV = 0x80003102 +TSDB_CODE_TSMA_INVALID_STAT = 0x80003103 +TSDB_CODE_TSMA_INVALID_PTR = 0x80003104 +TSDB_CODE_TSMA_INVALID_PARA = 0x80003105 +TSDB_CODE_TSMA_INVALID_TB = 0x80003106 +TSDB_CODE_TSMA_INVALID_INTERVAL = 0x80003107 +TSDB_CODE_TSMA_INVALID_FUNC_PARAM = 0x80003108 +TSDB_CODE_TSMA_UNSUPPORTED_FUNC = 0x80003109 +TSDB_CODE_TSMA_MUST_BE_DROPPED = 0x80003110 +TSDB_CODE_TSMA_NAME_TOO_LONG = 0x80003111 +TSDB_CODE_RSMA_INVALID_ENV = 0x80003150 +TSDB_CODE_RSMA_INVALID_STAT = 0x80003151 +TSDB_CODE_RSMA_QTASKINFO_CREATE = 0x80003152 +TSDB_CODE_RSMA_INVALID_SCHEMA = 0x80003153 +TSDB_CODE_RSMA_STREAM_STATE_OPEN = 0x80003154 +TSDB_CODE_RSMA_STREAM_STATE_COMMIT = 0x80003155 +TSDB_CODE_RSMA_FS_SYNC = 0x80003156 +TSDB_CODE_RSMA_RESULT = 0x80003157 +TSDB_CODE_INDEX_REBUILDING = 0x80003200 +TSDB_CODE_INDEX_INVALID_FILE = 0x80003201 +TSDB_CODE_SCALAR_CONVERT_ERROR = 0x80003250 +TSDB_CODE_TMQ_INVALID_MSG = 0x80004000 +TSDB_CODE_TMQ_NEED_INITIALIZED = 0x80004010 +TSDB_CODE_TMQ_SNAPSHOT_ERROR = 0x80004006 +TSDB_CODE_TMQ_NO_COMMITTED = 0x80004011 +TSDB_CODE_TMQ_VERSION_OUT_OF_RANGE = 0x80004007 +TSDB_CODE_TMQ_INVALID_VGID = 0x80004008 +TSDB_CODE_TMQ_INVALID_TOPIC = 0x80004009 +TSDB_CODE_TMQ_CONSUMER_MISMATCH = 0x80004001 +TSDB_CODE_TMQ_CONSUMER_CLOSED = 0x80004002 +TSDB_CODE_TMQ_CONSUMER_ERROR = 0x80004003 +TSDB_CODE_TMQ_TOPIC_OUT_OF_RANGE = 0x80004004 +TSDB_CODE_TMQ_GROUP_OUT_OF_RANGE = 0x80004005 +TSDB_CODE_TMQ_SAME_COMMITTED_VALUE = 0x80004012 +TSDB_CODE_TMQ_REPLAY_NEED_ONE_VGROUP = 0x80004013 +TSDB_CODE_TMQ_REPLAY_NOT_SUPPORT = 0x80004014 +TSDB_CODE_STREAM_TASK_NOT_EXIST = 0x80004100 +TSDB_CODE_STREAM_EXEC_CANCELLED = 0x80004102 +TSDB_CODE_STREAM_INVALID_STATETRANS = 0x80004103 +TSDB_CODE_STREAM_TASK_IVLD_STATUS = 0x80004104 +TSDB_CODE_TDLITE_IVLD_OPEN_FLAGS = 0x80005100 +TSDB_CODE_TDLITE_IVLD_OPEN_DIR = 0x80005101 +TSDB_CODE_UTIL_QUEUE_OUT_OF_MEMORY = 0x80006000 diff --git a/source/util/test/terrorTest.cpp b/source/util/test/terrorTest.cpp index 0e968edbe3..db92c851b3 100644 --- a/source/util/test/terrorTest.cpp +++ b/source/util/test/terrorTest.cpp @@ -73,7 +73,24 @@ pair parseKeyValuePair(const string &line, char delim = '=') { key = key.substr(1, key.size() - 2); string valStr = line.substr(pos + 1); - int32_t val = stoi(valStr); + + // remove leading spaces + firstNotSpace = valStr.find_first_not_of(" "); + if (firstNotSpace != string::npos) { + valStr = valStr.substr(firstNotSpace); + } else { + valStr.clear(); + } + + // remove ending spaces + lastNotSpace = valStr.find_last_not_of(" "); + if (lastNotSpace != string::npos) { + valStr = valStr.substr(0, lastNotSpace + 1); + } + + valStr = valStr.substr(2); + int32_t val = int32_t(std::stol(valStr, &pos, 16)); + return make_pair(key, val); } @@ -188,7 +205,8 @@ void generateConfigFile(const string& filePath) { for (int32_t i = 0; i < errSize; ++i) { STaosError *pInfo = &errors[i]; - file << std::left << std::setw(maxStringLength) << pInfo->macro << "= " << pInfo->val << endl; + file << std::left << std::setw(maxStringLength) << pInfo->macro << "= "; + file << "0x" << std::uppercase << std::hex << pInfo->val << endl; } if (file.fail()) { diff --git a/tests/army/community/cluster/incSnapshot.py b/tests/army/cluster/cluster/incSnapshot.py similarity index 100% rename from tests/army/community/cluster/incSnapshot.py rename to tests/army/cluster/cluster/incSnapshot.py diff --git a/tests/army/grant/grantBugs.py b/tests/army/grant/grantBugs.py new file mode 100644 index 0000000000..8888d50861 --- /dev/null +++ b/tests/army/grant/grantBugs.py @@ -0,0 +1,65 @@ +################################################################### +# Copyright (c) 2016 by TAOS Technologies, Inc. +# All rights reserved. +# +# This file is proprietary and confidential to TAOS Technologies. +# No part of this file may be reproduced, stored, transmitted, +# disclosed or used in any form or by any means other than as +# expressly provided by the written permission from Jianhui Tao +# +################################################################### + +# -*- coding: utf-8 -*- + +import frame.etool + +from frame.log import * +from frame.cases import * +from frame.sql import * +from frame.caseBase import * +from frame import * +from frame.autogen import * + + +class TDTestCase(TBase): + + def td_30642(self): + sqls = [ + "CREATE DATABASE IF NOT EXISTS `_xTest2`", + "CREATE USER `_xTest` PASS 'taosdata'", + "CREATE TABLE IF NOT EXISTS `_xTest2`.`meters` (ts timestamp, v1 int) tags(t1 int)", + + "CREATE DATABASE IF NOT EXISTS `test2`", + "CREATE USER `user1` PASS 'taosdata'", + "CREATE TABLE IF NOT EXISTS `test2`.`meters2` (ts timestamp, v1 int) tags(t1 int)" + ] + tdSql.executes(sqls) + + sql1 = 'GRANT read ON `_xTest2`.`meters` WITH (t1 = 1) TO `_xTest`' + tdSql.query(sql1) + sql1_verify = "select * from information_schema.ins_user_privileges where user_name='_xTest' and privilege='read' and db_name='_xTest2' and table_name='meters'" + tdSql.query(sql1_verify) + tdSql.checkRows(1) + tdSql.checkData(0, 4, '(`_xTest2`.`meters`.`t1` = 1)') + + sql2 = 'GRANT write ON test2.meters2 WITH (t1 = 1) TO user1' + tdSql.query(sql2) + sql2_verify = "select * from information_schema.ins_user_privileges where user_name='user1' and privilege='write' and db_name='test2' and table_name='meters2'" + tdSql.query(sql2_verify) + tdSql.checkRows(1) + tdSql.checkData(0, 4, '(`test2`.`meters2`.`t1` = 1)') + + # run + def run(self): + tdLog.debug(f"start to excute {__file__}") + + # TD-30642 + self.td_30642() + + + tdLog.success(f"{__file__} successfully executed") + + + +tdCases.addLinux(__file__, TDTestCase()) +tdCases.addWindows(__file__, TDTestCase()) diff --git a/tests/army/storage/compressBasic.py b/tests/army/storage/compressBasic.py index 64d0d4148f..0d62ab9e8b 100644 --- a/tests/army/storage/compressBasic.py +++ b/tests/army/storage/compressBasic.py @@ -194,11 +194,11 @@ class TDTestCase(TBase): # alter float(c9) double(c10) to tsz comp = "tsz" sql = f"alter table {tbname} modify column c9 COMPRESS '{comp}';" - tdSql.execute(sql) + tdSql.execute(sql, show=True) self.checkDataDesc(tbname, 10, 5, comp) self.writeData(10000) sql = f"alter table {tbname} modify column c10 COMPRESS '{comp}';" - tdSql.execute(sql) + tdSql.execute(sql, show=True) self.checkDataDesc(tbname, 11, 5, comp) self.writeData(10000) @@ -207,9 +207,48 @@ class TDTestCase(TBase): for i in range(self.colCnt - 1): col = f"c{i}" sql = f"alter table {tbname} modify column {col} LEVEL '{level}';" - tdSql.execute(sql) + tdSql.execute(sql, show=True) + self.checkDataDesc(tbname, i + 1, 6, level) self.writeData(1000) + # modify two combine + + + i = 9 + encode = "delta-d" + compress = "zlib" + sql = f"alter table {tbname} modify column c{i} ENCODE '{encode}' COMPRESS '{compress}';" + tdSql.execute(sql, show=True) + self.checkDataDesc(tbname, i + 1, 4, encode) + self.checkDataDesc(tbname, i + 1, 5, compress) + + i = 10 + encode = "delta-d" + level = "high" + sql = f"alter table {tbname} modify column c{i} ENCODE '{encode}' LEVEL '{level}';" + tdSql.execute(sql, show=True) + self.checkDataDesc(tbname, i + 1, 4, encode) + self.checkDataDesc(tbname, i + 1, 6, level) + + i = 2 + compress = "zlib" + level = "high" + sql = f"alter table {tbname} modify column c{i} COMPRESS '{compress}' LEVEL '{level}';" + tdSql.execute(sql, show=True) + self.checkDataDesc(tbname, i + 1, 5, compress) + self.checkDataDesc(tbname, i + 1, 6, level) + + # modify three combine + i = 7 + encode = "simple8b" + compress = "zstd" + level = "medium" + sql = f"alter table {tbname} modify column c{i} ENCODE '{encode}' COMPRESS '{compress}' LEVEL '{level}';" + tdSql.execute(sql, show=True) + self.checkDataDesc(tbname, i + 1, 4, encode) + self.checkDataDesc(tbname, i + 1, 5, compress) + self.checkDataDesc(tbname, i + 1, 6, level) + # alter error sqls = [ "alter table nodb.nostb modify column ts LEVEL 'high';", diff --git a/tests/parallel_test/cases.task b/tests/parallel_test/cases.task index 6114a560dc..b96c8eb030 100644 --- a/tests/parallel_test/cases.task +++ b/tests/parallel_test/cases.task @@ -30,6 +30,7 @@ ,,y,army,./pytest.sh python3 ./test.py -f query/subquery/subqueryBugs.py -N 3 ,,y,army,./pytest.sh python3 ./test.py -f storage/oneStageComp.py -N 3 -L 3 -D 1 ,,y,army,./pytest.sh python3 ./test.py -f storage/compressBasic.py -N 3 +,,y,army,./pytest.sh python3 ./test.py -f grant/grantBugs.py -N 3 # # system test diff --git a/tests/script/tsim/stream/checkStreamSTable1.sim b/tests/script/tsim/stream/checkStreamSTable1.sim index d5781a4e85..b25e582104 100644 --- a/tests/script/tsim/stream/checkStreamSTable1.sim +++ b/tests/script/tsim/stream/checkStreamSTable1.sim @@ -15,8 +15,38 @@ sql create stable st(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); sql create table t1 using st tags(1,1,1); sql create table t2 using st tags(2,2,2); sql create stream streams1 trigger at_once into streamt1 as select _wstart, count(*) c1, count(a) c2 from st interval(1s) ; + +print ====check task status start + +$loop_count = 0 + +loopCheck: + sleep 1000 +$loop_count = $loop_count + 1 +if $loop_count == 30 then + return -1 +endi + +print 1 select * from information_schema.ins_stream_tasks; +sql select * from information_schema.ins_stream_tasks; + +if $rows == 0 then + print rows=$rows + goto loopCheck +endi + +print 1 select * from information_schema.ins_stream_tasks where status != "ready"; +sql select * from information_schema.ins_stream_tasks where status != "ready"; + +if $rows != 0 then + print rows=$rows + goto loopCheck +endi + +print ====check task status end + sql insert into t1 values(1648791211000,1,2,3); sql insert into t1 values(1648791212000,2,2,3); @@ -46,8 +76,38 @@ sql alter table streamt1 add column c3 double; print create stream streams1 trigger at_once into streamt1 as select _wstart, count(*) c1, count(a) c2, avg(b) c3 from st interval(1s) ; sql create stream streams1 trigger at_once into streamt1 as select _wstart, count(*) c1, count(a) c2, avg(b) c3 from st interval(1s) ; + +print ====check task status start + +$loop_count = 0 + +loopCheck1: + sleep 1000 +$loop_count = $loop_count + 1 +if $loop_count == 30 then + return -1 +endi + +print 1 select * from information_schema.ins_stream_tasks; +sql select * from information_schema.ins_stream_tasks; + +if $rows == 0 then + print rows=$rows + goto loopCheck1 +endi + +print 1 select * from information_schema.ins_stream_tasks where status != "ready"; +sql select * from information_schema.ins_stream_tasks where status != "ready"; + +if $rows != 0 then + print rows=$rows + goto loopCheck1 +endi + +print ====check task status end + sql insert into t2 values(1648791213000,1,2,3); sql insert into t1 values(1648791214000,1,2,3); diff --git a/tests/system-test/7-tmq/tmq_taosx.py b/tests/system-test/7-tmq/tmq_taosx.py index 39b9c6d34a..49b62d8abb 100644 --- a/tests/system-test/7-tmq/tmq_taosx.py +++ b/tests/system-test/7-tmq/tmq_taosx.py @@ -496,7 +496,71 @@ class TDTestCase: consumer.close() print("consume_ts_4551 ok") + def consume_TS_5067_Test(self): + tdSql.execute(f'create database if not exists d1 vgroups 1') + tdSql.execute(f'use d1') + tdSql.execute(f'create table st(ts timestamp, i int) tags(t int)') + tdSql.execute(f'insert into t1 using st tags(1) values(now, 1) (now+1s, 2)') + tdSql.execute(f'insert into t2 using st tags(2) values(now, 1) (now+1s, 2)') + tdSql.execute(f'insert into t3 using st tags(3) values(now, 1) (now+1s, 2)') + tdSql.execute(f'insert into t1 using st tags(1) values(now+5s, 11) (now+10s, 12)') + + tdSql.query("select * from st") + tdSql.checkRows(8) + + tdSql.execute(f'create topic t1 as select * from st') + tdSql.execute(f'create topic t2 as select * from st') + consumer_dict = { + "group.id": "g1", + "td.connect.user": "root", + "td.connect.pass": "taosdata", + "auto.offset.reset": "earliest", + } + consumer = Consumer(consumer_dict) + + try: + consumer.subscribe(["t1"]) + except TmqError: + tdLog.exit(f"subscribe error") + + index = 0 + try: + while True: + res = consumer.poll(1) + if not res: + if index != 1: + tdLog.exit("consume error") + break + val = res.value() + if val is None: + continue + cnt = 0; + for block in val: + cnt += len(block.fetchall()) + + if cnt != 8: + tdLog.exit("consume error") + + index += 1 + finally: + consumer.close() + + consumer1 = Consumer(consumer_dict) + try: + consumer1.subscribe(["t2"]) + except TmqError: + tdLog.exit(f"subscribe error") + + tdSql.execute(f'drop consumer group g1 on t1') + tdSql.query(f'show consumers') + tdSql.checkRows(1) + consumer1.close() + tdSql.execute(f'drop topic t1') + tdSql.execute(f'drop topic t2') + tdSql.execute(f'drop database d1') + def run(self): + self.consume_TS_5067_Test() self.consumeTest() self.consume_ts_4544() self.consume_ts_4551()