From c6932abccacd89efcee526cc7d5e71552879ca4e Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Mon, 9 Dec 2024 18:01:17 +0800 Subject: [PATCH 01/30] feat:[TD-32166] check input params for clientRaw --- source/client/src/clientRawBlockWrite.c | 320 ++++++++++++++++++------ 1 file changed, 242 insertions(+), 78 deletions(-) diff --git a/source/client/src/clientRawBlockWrite.c b/source/client/src/clientRawBlockWrite.c index 3a23d3837510..6a83266c5e82 100644 --- a/source/client/src/clientRawBlockWrite.c +++ b/source/client/src/clientRawBlockWrite.c @@ -52,10 +52,21 @@ #define TMQ_META_VERSION "1.0" -static int32_t tmqWriteBatchMetaDataImpl(TAOS* taos, void* meta, int32_t metaLen); -static tb_uid_t processSuid(tb_uid_t suid, char* db) { return suid + MurmurHash3_32(db, strlen(db)); } +static int32_t tmqWriteBatchMetaDataImpl(TAOS* taos, void* meta, uint32_t metaLen); +static tb_uid_t processSuid(tb_uid_t suid, char* db) { + if (db == NULL) { + return suid; + } + return suid + MurmurHash3_32(db, strlen(db)); +} + static void buildCreateTableJson(SSchemaWrapper* schemaRow, SSchemaWrapper* schemaTag, char* name, int64_t id, int8_t t, SColCmprWrapper* pColCmprRow, cJSON** pJson) { + if (schemaRow == NULL || schemaTag == NULL || name == NULL || pColCmprRow == NULL || pJson == NULL) { + uError("invalid parameter, schemaRow:%p, schemaTag:%p, name:%p, pColCmprRow:%p, pJson:%p", schemaRow, schemaTag, + name, pColCmprRow, pJson); + return; + } int32_t code = TSDB_CODE_SUCCESS; int8_t buildDefaultCompress = 0; if (pColCmprRow->nCols <= 0) { @@ -168,6 +179,9 @@ static void buildCreateTableJson(SSchemaWrapper* schemaRow, SSchemaWrapper* sche } static int32_t setCompressOption(cJSON* json, uint32_t para) { + if (json == NULL) { + return TSDB_CODE_INVALID_PARA; + } uint8_t encode = COMPRESS_L1_TYPE_U32(para); int32_t code = 0; if (encode != 0) { @@ -201,6 +215,10 @@ static int32_t setCompressOption(cJSON* json, uint32_t para) { return code; } static void buildAlterSTableJson(void* alterData, int32_t alterDataLen, cJSON** pJson) { + if (alterData == NULL || pJson == NULL) { + uError("invalid parameter in %s", __func__); + return; + } SMAlterStbReq req = {0}; cJSON* json = NULL; char* string = NULL; @@ -344,6 +362,10 @@ static void buildAlterSTableJson(void* alterData, int32_t alterDataLen, cJSON** } static void processCreateStb(SMqMetaRsp* metaRsp, cJSON** pJson) { + if (metaRsp == NULL || pJson == NULL) { + uError("invalid parameter in %s", __func__); + return; + } SVCreateStbReq req = {0}; SDecoder coder; @@ -364,6 +386,10 @@ static void processCreateStb(SMqMetaRsp* metaRsp, cJSON** pJson) { } static void processAlterStb(SMqMetaRsp* metaRsp, cJSON** pJson) { + if (metaRsp == NULL || pJson == NULL) { + uError("invalid parameter in %s", __func__); + return; + } SVCreateStbReq req = {0}; SDecoder coder = {0}; uDebug("alter stable data:%p", metaRsp); @@ -384,6 +410,10 @@ static void processAlterStb(SMqMetaRsp* metaRsp, cJSON** pJson) { } static void buildChildElement(cJSON* json, SVCreateTbReq* pCreateReq) { + if (json == NULL || pCreateReq == NULL) { + uError("invalid parameter in %s", __func__); + return; + } STag* pTag = (STag*)pCreateReq->ctb.pTag; char* sname = pCreateReq->ctb.stbName; char* name = pCreateReq->name; @@ -491,6 +521,10 @@ static void buildChildElement(cJSON* json, SVCreateTbReq* pCreateReq) { } static void buildCreateCTableJson(SVCreateTbReq* pCreateReq, int32_t nReqs, cJSON** pJson) { + if (pJson == NULL || pCreateReq == NULL) { + uError("invalid parameter in %s", __func__); + return; + } int32_t code = 0; char* string = NULL; cJSON* json = cJSON_CreateObject(); @@ -519,6 +553,10 @@ static void buildCreateCTableJson(SVCreateTbReq* pCreateReq, int32_t nReqs, cJSO } static void processCreateTable(SMqMetaRsp* metaRsp, cJSON** pJson) { + if (pJson == NULL || metaRsp == NULL) { + uError("invalid parameter in %s", __func__); + return; + } SDecoder decoder = {0}; SVCreateTbBatchReq req = {0}; SVCreateTbReq* pCreateReq; @@ -549,6 +587,10 @@ static void processCreateTable(SMqMetaRsp* metaRsp, cJSON** pJson) { } static void processAutoCreateTable(SMqDataRsp* rsp, char** string) { + if (rsp == NULL || string == NULL) { + uError("invalid parameter in %s", __func__); + return; + } SDecoder* decoder = NULL; SVCreateTbReq* pCreateReq = NULL; int32_t code = 0; @@ -599,6 +641,10 @@ static void processAutoCreateTable(SMqDataRsp* rsp, char** string) { } static void processAlterTable(SMqMetaRsp* metaRsp, cJSON** pJson) { + if (pJson == NULL || metaRsp == NULL) { + uError("invalid parameter in %s", __func__); + return; + } SDecoder decoder = {0}; SVAlterTbReq vAlterTbReq = {0}; char* string = NULL; @@ -838,6 +884,10 @@ static void processAlterTable(SMqMetaRsp* metaRsp, cJSON** pJson) { } static void processDropSTable(SMqMetaRsp* metaRsp, cJSON** pJson) { + if (pJson == NULL || metaRsp == NULL) { + uError("invalid parameter in %s", __func__); + return; + } SDecoder decoder = {0}; SVDropStbReq req = {0}; cJSON* json = NULL; @@ -872,6 +922,10 @@ static void processDropSTable(SMqMetaRsp* metaRsp, cJSON** pJson) { *pJson = json; } static void processDeleteTable(SMqMetaRsp* metaRsp, cJSON** pJson) { + if (pJson == NULL || metaRsp == NULL) { + uError("invalid parameter in %s", __func__); + return; + } SDeleteRes req = {0}; SDecoder coder = {0}; cJSON* json = NULL; @@ -909,6 +963,10 @@ static void processDeleteTable(SMqMetaRsp* metaRsp, cJSON** pJson) { } static void processDropTable(SMqMetaRsp* metaRsp, cJSON** pJson) { + if (pJson == NULL || metaRsp == NULL) { + uError("invalid parameter in %s", __func__); + return; + } SDecoder decoder = {0}; SVDropTbBatchReq req = {0}; cJSON* json = NULL; @@ -945,7 +1003,11 @@ static void processDropTable(SMqMetaRsp* metaRsp, cJSON** pJson) { *pJson = json; } -static int32_t taosCreateStb(TAOS* taos, void* meta, int32_t metaLen) { +static int32_t taosCreateStb(TAOS* taos, void* meta, uint32_t metaLen) { + if (taos == NULL || meta == NULL) { + uError("invalid parameter in %s", __func__); + return TSDB_CODE_INVALID_PARA; + } SVCreateStbReq req = {0}; SDecoder coder; SMCreateStbReq pReq = {0}; @@ -960,8 +1022,8 @@ static int32_t taosCreateStb(TAOS* taos, void* meta, int32_t metaLen) { goto end; } // decode and process req - void* data = POINTER_SHIFT(meta, sizeof(SMsgHead)); - int32_t len = metaLen - sizeof(SMsgHead); + void* data = POINTER_SHIFT(meta, sizeof(SMsgHead)); + uint32_t len = metaLen - sizeof(SMsgHead); tDecoderInit(&coder, data, len); if (tDecodeSVCreateStbReq(&coder, &req) < 0) { code = TSDB_CODE_INVALID_PARA; @@ -1055,7 +1117,11 @@ static int32_t taosCreateStb(TAOS* taos, void* meta, int32_t metaLen) { return code; } -static int32_t taosDropStb(TAOS* taos, void* meta, int32_t metaLen) { +static int32_t taosDropStb(TAOS* taos, void* meta, uint32_t metaLen) { + if (taos == NULL || meta == NULL) { + uError("invalid parameter in %s", __func__); + return TSDB_CODE_INVALID_PARA; + } SVDropStbReq req = {0}; SDecoder coder = {0}; SMDropStbReq pReq = {0}; @@ -1070,8 +1136,8 @@ static int32_t taosDropStb(TAOS* taos, void* meta, int32_t metaLen) { goto end; } // decode and process req - void* data = POINTER_SHIFT(meta, sizeof(SMsgHead)); - int32_t len = metaLen - sizeof(SMsgHead); + void* data = POINTER_SHIFT(meta, sizeof(SMsgHead)); + uint32_t len = metaLen - sizeof(SMsgHead); tDecoderInit(&coder, data, len); if (tDecodeSVDropStbReq(&coder, &req) < 0) { code = TSDB_CODE_INVALID_PARA; @@ -1160,11 +1226,19 @@ typedef struct SVgroupCreateTableBatch { } SVgroupCreateTableBatch; static void destroyCreateTbReqBatch(void* data) { + if (data == NULL) { + uError("invalid parameter in %s", __func__); + return; + } SVgroupCreateTableBatch* pTbBatch = (SVgroupCreateTableBatch*)data; taosArrayDestroy(pTbBatch->req.pArray); } -static int32_t taosCreateTable(TAOS* taos, void* meta, int32_t metaLen) { +static int32_t taosCreateTable(TAOS* taos, void* meta, uint32_t metaLen) { + if (taos == NULL || meta == NULL) { + uError("invalid parameter in %s", __func__); + return TSDB_CODE_INVALID_PARA; + } SVCreateTbBatchReq req = {0}; SDecoder coder = {0}; int32_t code = TSDB_CODE_SUCCESS; @@ -1182,8 +1256,8 @@ static int32_t taosCreateTable(TAOS* taos, void* meta, int32_t metaLen) { goto end; } // decode and process req - void* data = POINTER_SHIFT(meta, sizeof(SMsgHead)); - int32_t len = metaLen - sizeof(SMsgHead); + void* data = POINTER_SHIFT(meta, sizeof(SMsgHead)); + uint32_t len = metaLen - sizeof(SMsgHead); tDecoderInit(&coder, data, len); if (tDecodeSVCreateTbBatchReq(&coder, &req) < 0) { code = TSDB_CODE_INVALID_PARA; @@ -1346,11 +1420,19 @@ typedef struct SVgroupDropTableBatch { } SVgroupDropTableBatch; static void destroyDropTbReqBatch(void* data) { + if (data == NULL) { + uError("invalid parameter in %s", __func__); + return; + } SVgroupDropTableBatch* pTbBatch = (SVgroupDropTableBatch*)data; taosArrayDestroy(pTbBatch->req.pArray); } -static int32_t taosDropTable(TAOS* taos, void* meta, int32_t metaLen) { +static int32_t taosDropTable(TAOS* taos, void* meta, uint32_t metaLen) { + if (taos == NULL || meta == NULL) { + uError("invalid parameter in %s", __func__); + return TSDB_CODE_INVALID_PARA; + } SVDropTbBatchReq req = {0}; SDecoder coder = {0}; int32_t code = TSDB_CODE_SUCCESS; @@ -1367,8 +1449,8 @@ static int32_t taosDropTable(TAOS* taos, void* meta, int32_t metaLen) { goto end; } // decode and process req - void* data = POINTER_SHIFT(meta, sizeof(SMsgHead)); - int32_t len = metaLen - sizeof(SMsgHead); + void* data = POINTER_SHIFT(meta, sizeof(SMsgHead)); + uint32_t len = metaLen - sizeof(SMsgHead); tDecoderInit(&coder, data, len); if (tDecodeSVDropTbBatchReq(&coder, &req) < 0) { code = TSDB_CODE_INVALID_PARA; @@ -1462,7 +1544,11 @@ static int32_t taosDropTable(TAOS* taos, void* meta, int32_t metaLen) { return code; } -static int32_t taosDeleteData(TAOS* taos, void* meta, int32_t metaLen) { +static int32_t taosDeleteData(TAOS* taos, void* meta, uint32_t metaLen) { + if (taos == NULL || meta == NULL) { + uError("invalid parameter in %s", __func__); + return TSDB_CODE_INVALID_PARA; + } SDeleteRes req = {0}; SDecoder coder = {0}; char sql[256] = {0}; @@ -1471,8 +1557,8 @@ static int32_t taosDeleteData(TAOS* taos, void* meta, int32_t metaLen) { uDebug("connId:0x%" PRIx64 " delete data, meta:%p, len:%d", *(int64_t*)taos, meta, metaLen); // decode and process req - void* data = POINTER_SHIFT(meta, sizeof(SMsgHead)); - int32_t len = metaLen - sizeof(SMsgHead); + void* data = POINTER_SHIFT(meta, sizeof(SMsgHead)); + uint32_t len = metaLen - sizeof(SMsgHead); tDecoderInit(&coder, data, len); if (tDecodeDeleteRes(&coder, &req) < 0) { code = TSDB_CODE_INVALID_PARA; @@ -1497,7 +1583,11 @@ static int32_t taosDeleteData(TAOS* taos, void* meta, int32_t metaLen) { return code; } -static int32_t taosAlterTable(TAOS* taos, void* meta, int32_t metaLen) { +static int32_t taosAlterTable(TAOS* taos, void* meta, uint32_t metaLen) { + if (taos == NULL || meta == NULL) { + uError("invalid parameter in %s", __func__); + return TSDB_CODE_INVALID_PARA; + } SVAlterTbReq req = {0}; SDecoder dcoder = {0}; int32_t code = TSDB_CODE_SUCCESS; @@ -1514,8 +1604,8 @@ static int32_t taosAlterTable(TAOS* taos, void* meta, int32_t metaLen) { goto end; } // decode and process req - void* data = POINTER_SHIFT(meta, sizeof(SMsgHead)); - int32_t len = metaLen - sizeof(SMsgHead); + void* data = POINTER_SHIFT(meta, sizeof(SMsgHead)); + uint32_t len = metaLen - sizeof(SMsgHead); tDecoderInit(&dcoder, data, len); if (tDecodeSVAlterTbReq(&dcoder, &req) < 0) { code = TSDB_CODE_INVALID_PARA; @@ -1619,7 +1709,8 @@ int taos_write_raw_block_with_fields(TAOS* taos, int rows, char* pData, const ch int taos_write_raw_block_with_fields_with_reqid(TAOS* taos, int rows, char* pData, const char* tbname, TAOS_FIELD* fields, int numFields, int64_t reqid) { - if (!taos || !pData || !tbname) { + if (taos == NULL || pData == NULL || tbname == NULL) { + uError("invalid parameter in %s", __func__); return TSDB_CODE_INVALID_PARA; } int32_t code = TSDB_CODE_SUCCESS; @@ -1680,7 +1771,7 @@ int taos_write_raw_block(TAOS* taos, int rows, char* pData, const char* tbname) } int taos_write_raw_block_with_reqid(TAOS* taos, int rows, char* pData, const char* tbname, int64_t reqid) { - if (!taos || !pData || !tbname) { + if (taos == NULL || pData == NULL || tbname == NULL) { return TSDB_CODE_INVALID_PARA; } int32_t code = TSDB_CODE_SUCCESS; @@ -1736,6 +1827,10 @@ int taos_write_raw_block_with_reqid(TAOS* taos, int rows, char* pData, const cha } static void* getRawDataFromRes(void* pRetrieve) { + if (pRetrieve == NULL) { + uError("invalid parameter in %s", __func__); + return NULL; + } void* rawData = NULL; // deal with compatibility if (*(int64_t*)pRetrieve == 0) { @@ -1747,6 +1842,10 @@ static void* getRawDataFromRes(void* pRetrieve) { } static int32_t buildCreateTbMap(SMqDataRsp* rsp, SHashObj* pHashObj) { + if (rsp == NULL || pHashObj == NULL) { + uError("invalid parameter in %s", __func__); + return TSDB_CODE_INVALID_PARA; + } // find schema data info int32_t code = 0; SVCreateTbReq pCreateReq = {0}; @@ -1806,11 +1905,19 @@ typedef struct { } tbInfo; static void tmqFreeMeta(void* data) { + if (data == NULL) { + uError("invalid parameter in %s", __func__); + return; + } STableMeta* pTableMeta = *(STableMeta**)data; taosMemoryFree(pTableMeta); } static void freeRawCache(void* data) { + if (data == NULL) { + uError("invalid parameter in %s", __func__); + return; + } rawCacheInfo* pRawCache = (rawCacheInfo*)data; taosHashCleanup(pRawCache->pMetaHash); taosHashCleanup(pRawCache->pNameHash); @@ -1829,6 +1936,10 @@ static int32_t initRawCacheHash() { } static bool needRefreshMeta(void* rawData, STableMeta* pTableMeta, SSchemaWrapper* pSW) { + if (rawData == NULL || pTableMeta == NULL || pSW == NULL) { + uError("invalid parameter in %s", __func__); + return false; + } char* p = (char*)rawData; // | version | total length | total rows | blankFill | total columns | flag seg| block group id | column schema | each // column length | @@ -1864,6 +1975,10 @@ static bool needRefreshMeta(void* rawData, STableMeta* pTableMeta, SSchemaWrappe } static int32_t getRawCache(SHashObj** pVgHash, SHashObj** pNameHash, SHashObj** pMetaHash, void* key) { + if (pVgHash == NULL || pNameHash == NULL || pMetaHash == NULL || key == NULL) { + uError("invalid parameter in %s", __func__); + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; void* cacheInfo = taosHashGet(writeRawCache, &key, POINTER_BYTES); if (cacheInfo == NULL) { @@ -1892,6 +2007,10 @@ static int32_t getRawCache(SHashObj** pVgHash, SHashObj** pNameHash, SHashObj** } static int32_t buildRawRequest(TAOS* taos, SRequestObj** pRequest, SCatalog** pCatalog, SRequestConnInfo* conn) { + if (taos == NULL || pRequest == NULL || pCatalog == NULL || conn == NULL) { + uError("invalid parameter in %s", __func__); + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; RAW_RETURN_CHECK(buildRequest(*(int64_t*)taos, "", 0, NULL, false, pRequest, 0)); (*pRequest)->syncQuery = true; @@ -1911,26 +2030,38 @@ static int32_t buildRawRequest(TAOS* taos, SRequestObj** pRequest, SCatalog** pC } typedef int32_t _raw_decode_func_(SDecoder* pDecoder, SMqDataRsp* pRsp); -static int32_t decodeRawData(SDecoder* decoder, void* data, int32_t dataLen, _raw_decode_func_ func, +static int32_t decodeRawData(SDecoder* decoder, void* data, uint32_t dataLen, _raw_decode_func_ func, SMqRspObj* rspObj) { - int8_t dataVersion = *(int8_t*)data; - if (dataVersion >= MQ_DATA_RSP_VERSION) { - data = POINTER_SHIFT(data, sizeof(int8_t) + sizeof(int32_t)); - dataLen -= sizeof(int8_t) + sizeof(int32_t); + if (decoder == NULL || data == NULL || func == NULL || rspObj == NULL) { + uError("invalid parameter in %s", __func__); + return TSDB_CODE_INVALID_PARA; + } + int8_t dataVersion = *(int8_t*)data; + if (dataVersion >= MQ_DATA_RSP_VERSION) { + data = POINTER_SHIFT(data, sizeof(int8_t) + sizeof(int32_t)); + if (dataLen < sizeof(int8_t) + sizeof(int32_t)) { + return TSDB_CODE_INVALID_PARA; + } + dataLen -= sizeof(int8_t) + sizeof(int32_t); } - rspObj->resIter = -1; - tDecoderInit(decoder, data, dataLen); - int32_t code = func(decoder, &rspObj->dataRsp); - if (code != 0) { - SET_ERROR_MSG("decode mq taosx data rsp failed"); + rspObj->resIter = -1; + tDecoderInit(decoder, data, dataLen); + int32_t code = func(decoder, &rspObj->dataRsp); + if (code != 0) { + SET_ERROR_MSG("decode mq taosx data rsp failed"); } - return code; + return code; } static int32_t processCacheMeta(SHashObj* pVgHash, SHashObj* pNameHash, SHashObj* pMetaHash, SVCreateTbReq* pCreateReqDst, SCatalog* pCatalog, SRequestConnInfo* conn, SName* pName, STableMeta** pMeta, SSchemaWrapper* pSW, void* rawData, int32_t retry) { + if (pVgHash == NULL || pNameHash == NULL || pMetaHash == NULL || pCatalog == NULL || conn == NULL || pName == NULL || + pMeta == NULL || pSW == NULL || rawData == NULL) { + uError("invalid parameter in %s", __func__); + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; STableMeta* pTableMeta = NULL; tbInfo* tmpInfo = (tbInfo*)taosHashGet(pNameHash, pName->tname, strlen(pName->tname)); @@ -1987,7 +2118,11 @@ static int32_t processCacheMeta(SHashObj* pVgHash, SHashObj* pNameHash, SHashObj return code; } -static int32_t tmqWriteRawDataImpl(TAOS* taos, void* data, int32_t dataLen) { +static int32_t tmqWriteRawDataImpl(TAOS* taos, void* data, uint32_t dataLen) { + if (taos == NULL || data == NULL) { + uError("invalid parameter in %s", __func__); + return TSDB_CODE_INVALID_PARA; + } int32_t code = TSDB_CODE_SUCCESS; SQuery* pQuery = NULL; SMqRspObj rspObj = {0}; @@ -2060,7 +2195,11 @@ static int32_t tmqWriteRawDataImpl(TAOS* taos, void* data, int32_t dataLen) { return code; } -static int32_t tmqWriteRawMetaDataImpl(TAOS* taos, void* data, int32_t dataLen) { +static int32_t tmqWriteRawMetaDataImpl(TAOS* taos, void* data, uint32_t dataLen) { + if (taos == NULL || data == NULL) { + uError("invalid parameter in %s", __func__); + return TSDB_CODE_INVALID_PARA; + } int32_t code = TSDB_CODE_SUCCESS; SQuery* pQuery = NULL; SMqRspObj rspObj = {0}; @@ -2149,6 +2288,10 @@ static int32_t tmqWriteRawMetaDataImpl(TAOS* taos, void* data, int32_t dataLen) } static void processSimpleMeta(SMqMetaRsp* pMetaRsp, cJSON** meta) { + if (pMetaRsp == NULL || meta == NULL) { + uError("invalid parameter in %s", __func__); + return; + } if (pMetaRsp->resMsgType == TDMT_VND_CREATE_STB) { processCreateStb(pMetaRsp, meta); } else if (pMetaRsp->resMsgType == TDMT_VND_ALTER_STB) { @@ -2169,6 +2312,10 @@ static void processSimpleMeta(SMqMetaRsp* pMetaRsp, cJSON** meta) { } static void processBatchMetaToJson(SMqBatchMetaRsp* pMsgRsp, char** string) { + if (pMsgRsp == NULL || string == NULL) { + uError("invalid parameter in %s", __func__); + return; + } SDecoder coder; SMqBatchMetaRsp rsp = {0}; int32_t code = 0; @@ -2214,7 +2361,10 @@ static void processBatchMetaToJson(SMqBatchMetaRsp* pMsgRsp, char** string) { } char* tmq_get_json_meta(TAOS_RES* res) { - if (res == NULL) return NULL; + if (res == NULL) { + uError("invalid parameter in %s", __func__); + return NULL; + } uDebug("tmq_get_json_meta res:%p", res); if (!TD_RES_TMQ_META(res) && !TD_RES_TMQ_METADATA(res) && !TD_RES_TMQ_BATCH_META(res)) { return NULL; @@ -2242,6 +2392,10 @@ char* tmq_get_json_meta(TAOS_RES* res) { void tmq_free_json_meta(char* jsonMeta) { taosMemoryFreeClear(jsonMeta); } static int32_t getOffSetLen(const SMqDataRsp* pRsp) { + if (pRsp == NULL) { + uError("invalid parameter in %s", __func__); + return TSDB_CODE_INVALID_PARA; + } SEncoder coder = {0}; tEncoderInit(&coder, NULL, 0); if (tEncodeSTqOffsetVal(&coder, &pRsp->reqOffset) < 0) return -1; @@ -2253,44 +2407,48 @@ static int32_t getOffSetLen(const SMqDataRsp* pRsp) { typedef int32_t __encode_func__(SEncoder* pEncoder, const SMqDataRsp* pRsp); static int32_t encodeMqDataRsp(__encode_func__* encodeFunc, SMqDataRsp* rspObj, tmq_raw_data* raw) { - int32_t len = 0; - int32_t code = 0; - SEncoder encoder = {0}; - void* buf = NULL; - tEncodeSize(encodeFunc, rspObj, len, code); - if (code < 0) { - code = TSDB_CODE_INVALID_MSG; - goto FAILED; - } - len += sizeof(int8_t) + sizeof(int32_t); - buf = taosMemoryCalloc(1, len); - if (buf == NULL) { - code = terrno; - goto FAILED; - } - tEncoderInit(&encoder, buf, len); - if (tEncodeI8(&encoder, MQ_DATA_RSP_VERSION) < 0) { - code = TSDB_CODE_INVALID_MSG; - goto FAILED; - } - int32_t offsetLen = getOffSetLen(rspObj); - if (offsetLen <= 0) { - code = TSDB_CODE_INVALID_MSG; - goto FAILED; - } - if (tEncodeI32(&encoder, offsetLen) < 0) { - code = TSDB_CODE_INVALID_MSG; - goto FAILED; - } - if (encodeFunc(&encoder, rspObj) < 0) { - code = TSDB_CODE_INVALID_MSG; - goto FAILED; - } - tEncoderClear(&encoder); - - raw->raw = buf; - raw->raw_len = len; - return code; + if (raw == NULL || encodeFunc == NULL || rspObj == NULL) { + uError("invalid parameter in %s", __func__); + return TSDB_CODE_INVALID_PARA; + } + uint32_t len = 0; + int32_t code = 0; + SEncoder encoder = {0}; + void* buf = NULL; + tEncodeSize(encodeFunc, rspObj, len, code); + if (code < 0) { + code = TSDB_CODE_INVALID_MSG; + goto FAILED; + } + len += sizeof(int8_t) + sizeof(int32_t); + buf = taosMemoryCalloc(1, len); + if (buf == NULL) { + code = terrno; + goto FAILED; + } + tEncoderInit(&encoder, buf, len); + if (tEncodeI8(&encoder, MQ_DATA_RSP_VERSION) < 0) { + code = TSDB_CODE_INVALID_MSG; + goto FAILED; + } + int32_t offsetLen = getOffSetLen(rspObj); + if (offsetLen <= 0) { + code = TSDB_CODE_INVALID_MSG; + goto FAILED; + } + if (tEncodeI32(&encoder, offsetLen) < 0) { + code = TSDB_CODE_INVALID_MSG; + goto FAILED; + } + if (encodeFunc(&encoder, rspObj) < 0) { + code = TSDB_CODE_INVALID_MSG; + goto FAILED; + } + tEncoderClear(&encoder); + + raw->raw = buf; + raw->raw_len = len; + return code; FAILED: tEncoderClear(&encoder); taosMemoryFree(buf); @@ -2298,13 +2456,14 @@ static int32_t encodeMqDataRsp(__encode_func__* encodeFunc, SMqDataRsp* rspObj, } int32_t tmq_get_raw(TAOS_RES* res, tmq_raw_data* raw) { - if (!raw || !res) { + if (raw == NULL || res == NULL) { + uError("invalid parameter in %s", __func__); return TSDB_CODE_INVALID_PARA; } SMqRspObj* rspObj = ((SMqRspObj*)res); if (TD_RES_TMQ_META(res)) { raw->raw = rspObj->metaRsp.metaRsp; - raw->raw_len = rspObj->metaRsp.metaRspLen; + raw->raw_len = rspObj->metaRsp.metaRspLen >= 0 ? rspObj->metaRsp.metaRspLen : 0; raw->raw_type = rspObj->metaRsp.resMsgType; uDebug("tmq get raw type meta:%p", raw); } else if (TD_RES_TMQ(res)) { @@ -2364,6 +2523,10 @@ static int32_t writeRawInit() { } static int32_t writeRawImpl(TAOS* taos, void* buf, uint32_t len, uint16_t type) { + if (taos == NULL || buf == NULL) { + uError("invalid parameter in %s", __func__); + return TSDB_CODE_INVALID_PARA; + } if (writeRawInit() != 0) { return TSDB_CODE_INTERNAL_ERROR; } @@ -2394,15 +2557,16 @@ static int32_t writeRawImpl(TAOS* taos, void* buf, uint32_t len, uint16_t type) int32_t tmq_write_raw(TAOS* taos, tmq_raw_data raw) { if (taos == NULL || raw.raw == NULL || raw.raw_len <= 0) { - SET_ERROR_MSG("taos:%p or data:%p is NULL or raw_len <= 0", taos, raw.raw); + uError("taos:%p or data:%p is NULL or raw_len <= 0", taos, raw.raw); return TSDB_CODE_INVALID_PARA; } return writeRawImpl(taos, raw.raw, raw.raw_len, raw.raw_type); } -static int32_t tmqWriteBatchMetaDataImpl(TAOS* taos, void* meta, int32_t metaLen) { +static int32_t tmqWriteBatchMetaDataImpl(TAOS* taos, void* meta, uint32_t metaLen) { if (taos == NULL || meta == NULL) { + uError("invalid parameter in %s", __func__); return TSDB_CODE_INVALID_PARA; } SMqBatchMetaRsp rsp = {0}; From bea48dfe987a95c6918b9cf29f0a00b5c37f9f39 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Tue, 10 Dec 2024 14:45:45 +0800 Subject: [PATCH 02/30] feat:[TD-32166] check input params for tmq --- source/client/src/clientTmq.c | 116 ++++++++++++++++++- source/dnode/mnode/impl/src/mndConsumer.c | 85 ++++++++++++++ source/dnode/mnode/impl/src/mndSubscribe.c | 123 ++++++++++++++++++++- source/dnode/mnode/impl/src/mndTopic.c | 54 ++++++++- source/dnode/vnode/src/inc/tq.h | 8 +- source/dnode/vnode/src/tq/tq.c | 61 +++++++++- source/dnode/vnode/src/tq/tqMeta.c | 82 ++++++++++++-- source/dnode/vnode/src/tq/tqOffset.c | 10 ++ source/dnode/vnode/src/tq/tqPush.c | 9 ++ source/dnode/vnode/src/tq/tqRead.c | 106 ++++++++++++++++-- source/dnode/vnode/src/tq/tqScan.c | 35 ++++-- source/dnode/vnode/src/tq/tqSnapshot.c | 26 ++++- source/dnode/vnode/src/tq/tqUtil.c | 30 +++++ 13 files changed, 694 insertions(+), 51 deletions(-) diff --git a/source/client/src/clientTmq.c b/source/client/src/clientTmq.c index 902e581bfd06..36668b84b2ef 100644 --- a/source/client/src/clientTmq.c +++ b/source/client/src/clientTmq.c @@ -554,6 +554,9 @@ char** tmq_list_to_c_array(const tmq_list_t* list) { } static int32_t tmqCommitDone(SMqCommitCbParamSet* pParamSet) { + if (pParamSet == NULL) { + return TSDB_CODE_INVALID_PARA; + } int64_t refId = pParamSet->refId; int32_t code = 0; tmq_t* tmq = taosAcquireRef(tmqMgmt.rsetId, refId); @@ -575,6 +578,9 @@ static int32_t tmqCommitDone(SMqCommitCbParamSet* pParamSet) { } static int32_t commitRspCountDown(SMqCommitCbParamSet* pParamSet, int64_t consumerId, const char* pTopic, int32_t vgId) { + if (pParamSet == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t waitingRspNum = atomic_sub_fetch_32(&pParamSet->waitingRspNum, 1); if (waitingRspNum == 0) { tqDebugC("consumer:0x%" PRIx64 " topic:%s vgId:%d all commit-rsp received, commit completed", consumerId, pTopic, @@ -603,6 +609,9 @@ static int32_t tmqCommitCb(void* param, SDataBuf* pBuf, int32_t code) { static int32_t doSendCommitMsg(tmq_t* tmq, int32_t vgId, SEpSet* epSet, STqOffsetVal* offset, const char* pTopicName, SMqCommitCbParamSet* pParamSet) { + if (tmq == NULL || epSet == NULL || offset == NULL || pTopicName == NULL || pParamSet == NULL) { + return TSDB_CODE_INVALID_PARA; + } SMqVgOffset pOffset = {0}; pOffset.consumerId = tmq->consumerId; @@ -673,6 +682,9 @@ static int32_t doSendCommitMsg(tmq_t* tmq, int32_t vgId, SEpSet* epSet, STqOffse } static int32_t getTopicByName(tmq_t* tmq, const char* pTopicName, SMqClientTopic** topic) { + if (tmq == NULL || pTopicName == NULL || topic == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t numOfTopics = taosArrayGetSize(tmq->clientTopics); for (int32_t i = 0; i < numOfTopics; ++i) { SMqClientTopic* pTopic = taosArrayGet(tmq->clientTopics, i); @@ -689,6 +701,9 @@ static int32_t getTopicByName(tmq_t* tmq, const char* pTopicName, SMqClientTopic static int32_t prepareCommitCbParamSet(tmq_t* tmq, tmq_commit_cb* pCommitFp, void* userParam, int32_t rspNum, SMqCommitCbParamSet** ppParamSet) { + if (tmq == NULL || ppParamSet == NULL) { + return TSDB_CODE_INVALID_PARA; + } SMqCommitCbParamSet* pParamSet = taosMemoryCalloc(1, sizeof(SMqCommitCbParamSet)); if (pParamSet == NULL) { return terrno; @@ -704,6 +719,9 @@ static int32_t prepareCommitCbParamSet(tmq_t* tmq, tmq_commit_cb* pCommitFp, voi } static int32_t getClientVg(tmq_t* tmq, char* pTopicName, int32_t vgId, SMqClientVg** pVg) { + if (tmq == NULL || pTopicName == NULL || pVg == NULL) { + return TSDB_CODE_INVALID_PARA; + } SMqClientTopic* pTopic = NULL; int32_t code = getTopicByName(tmq, pTopicName, &pTopic); if (code != 0) { @@ -724,6 +742,9 @@ static int32_t getClientVg(tmq_t* tmq, char* pTopicName, int32_t vgId, SMqClient } static int32_t innerCommit(tmq_t* tmq, char* pTopicName, STqOffsetVal* offsetVal, SMqClientVg* pVg, SMqCommitCbParamSet* pParamSet){ + if (tmq == NULL || pTopicName == NULL || offsetVal == NULL || pVg == NULL || pParamSet == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; if (offsetVal->type <= 0) { code = TSDB_CODE_TMQ_INVALID_MSG; @@ -754,6 +775,9 @@ static int32_t innerCommit(tmq_t* tmq, char* pTopicName, STqOffsetVal* offsetVal static int32_t asyncCommitOffset(tmq_t* tmq, char* pTopicName, int32_t vgId, STqOffsetVal* offsetVal, tmq_commit_cb* pCommitFp, void* userParam) { + if (tmq == NULL || pTopicName == NULL || offsetVal == NULL) { + return TSDB_CODE_INVALID_PARA; + } tqInfoC("consumer:0x%" PRIx64 " do manual commit offset for %s, vgId:%d", tmq->consumerId, pTopicName, vgId); SMqCommitCbParamSet* pParamSet = NULL; int32_t code = prepareCommitCbParamSet(tmq, pCommitFp, userParam, 0, &pParamSet); @@ -807,6 +831,9 @@ static void asyncCommitFromResult(tmq_t* tmq, const TAOS_RES* pRes, tmq_commit_c } static int32_t innerCommitAll(tmq_t* tmq, SMqCommitCbParamSet* pParamSet){ + if (tmq == NULL || pParamSet == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; taosRLockLatch(&tmq->lock); int32_t numOfTopics = taosArrayGetSize(tmq->clientTopics); @@ -842,6 +869,9 @@ static int32_t innerCommitAll(tmq_t* tmq, SMqCommitCbParamSet* pParamSet){ } static void asyncCommitAllOffsets(tmq_t* tmq, tmq_commit_cb* pCommitFp, void* userParam) { + if (tmq == NULL) { + return; + } int32_t code = 0; SMqCommitCbParamSet* pParamSet = NULL; // init waitingRspNum as DEFAULT_COMMIT_CNT to prevent concurrency issue @@ -1071,12 +1101,15 @@ void tmqSendHbReq(void* param, void* tmrId) { } static void defaultCommitCbFn(tmq_t* pTmq, int32_t code, void* param) { - if (code != 0) { + if (code != 0 && pTmq != NULL) { tqErrorC("consumer:0x%" PRIx64 ", failed to commit offset, code:%s", pTmq->consumerId, tstrerror(code)); } } static void tmqFreeRspWrapper(SMqRspWrapper* rspWrapper) { + if (rspWrapper == NULL) { + return; + } if (rspWrapper->tmqRspType == TMQ_MSG_TYPE__EP_RSP) { tDeleteSMqAskEpRsp(&rspWrapper->epRsp); } else if (rspWrapper->tmqRspType == TMQ_MSG_TYPE__POLL_DATA_RSP) { @@ -1091,12 +1124,18 @@ static void tmqFreeRspWrapper(SMqRspWrapper* rspWrapper) { } static void freeClientVg(void* param) { + if (param == NULL) { + return; + } SMqClientVg* pVg = param; tOffsetDestroy(&pVg->offsetInfo.endOffset); tOffsetDestroy(&pVg->offsetInfo.beginOffset); tOffsetDestroy(&pVg->offsetInfo.committedOffset); } static void freeClientTopic(void* param) { + if (param == NULL) { + return; + } SMqClientTopic* pTopic = param; taosMemoryFreeClear(pTopic->schema.pSchema); taosArrayDestroyEx(pTopic->vgs, freeClientVg); @@ -1104,6 +1143,9 @@ static void freeClientTopic(void* param) { static void initClientTopicFromRsp(SMqClientTopic* pTopic, SMqSubTopicEp* pTopicEp, SHashObj* pVgOffsetHashMap, tmq_t* tmq) { + if (pTopic == NULL || pTopicEp == NULL || pVgOffsetHashMap == NULL || tmq == NULL) { + return; + } pTopic->schema = pTopicEp->schema; pTopicEp->schema.nCols = 0; pTopicEp->schema.pSchema = NULL; @@ -1167,6 +1209,9 @@ static void initClientTopicFromRsp(SMqClientTopic* pTopic, SMqSubTopicEp* pTopic } static void buildNewTopicList(tmq_t* tmq, SArray* newTopics, const SMqAskEpRsp* pRsp){ + if (tmq == NULL || newTopics == NULL || pRsp == NULL) { + return; + } SHashObj* pVgOffsetHashMap = taosHashInit(64, MurmurHash3_32, false, HASH_NO_LOCK); if (pVgOffsetHashMap == NULL) { tqErrorC("consumer:0x%" PRIx64 " taos hash init null, code:%d", tmq->consumerId, terrno); @@ -1221,6 +1266,9 @@ static void buildNewTopicList(tmq_t* tmq, SArray* newTopics, const SMqAskEpRsp* } static void doUpdateLocalEp(tmq_t* tmq, int32_t epoch, const SMqAskEpRsp* pRsp) { + if (tmq == NULL || pRsp == NULL) { + return; + } int32_t topicNumGet = taosArrayGetSize(pRsp->topics); // vnode transform (epoch == tmq->epoch && topicNumGet != 0) // ask ep rsp (epoch == tmq->epoch && topicNumGet == 0) @@ -1337,6 +1385,9 @@ static int32_t askEpCb(void* param, SDataBuf* pMsg, int32_t code) { } static int32_t askEp(tmq_t* pTmq, void* param, bool sync, bool updateEpSet) { + if (pTmq == NULL) { + return TSDB_CODE_INVALID_PARA; + } SMqAskEpReq req = {0}; req.consumerId = pTmq->consumerId; req.epoch = updateEpSet ? -1 : pTmq->epoch; @@ -1395,6 +1446,9 @@ static int32_t askEp(tmq_t* pTmq, void* param, bool sync, bool updateEpSet) { } void tmqHandleAllDelayedTask(tmq_t* pTmq) { + if (pTmq == NULL) { + return; + } STaosQall* qall = NULL; int32_t code = 0; @@ -1443,6 +1497,7 @@ void tmqHandleAllDelayedTask(tmq_t* pTmq) { } void tmqClearUnhandleMsg(tmq_t* tmq) { + if (tmq == NULL) return; SMqRspWrapper* rspWrapper = NULL; while (taosGetQitem(tmq->qall, (void**)&rspWrapper) != 0) { tmqFreeRspWrapper(rspWrapper); @@ -1507,6 +1562,7 @@ int32_t tmq_subscription(tmq_t* tmq, tmq_list_t** topics) { } void tmqFreeImpl(void* handle) { + if (handle == NULL) return; tmq_t* tmq = (tmq_t*)handle; int64_t id = tmq->consumerId; @@ -1715,6 +1771,7 @@ tmq_t* tmq_consumer_new(tmq_conf_t* conf, char* errstr, int32_t errstrLen) { } static int32_t syncAskEp(tmq_t* pTmq) { + if (pTmq == NULL) return TSDB_CODE_INVALID_PARA; SAskEpInfo* pInfo = taosMemoryMalloc(sizeof(SAskEpInfo)); if (pInfo == NULL) return terrno; if (tsem2_init(&pInfo->sem, 0, 0) != 0) { @@ -1897,6 +1954,9 @@ void tmq_conf_set_auto_commit_cb(tmq_conf_t* conf, tmq_commit_cb* cb, void* para } static void getVgInfo(tmq_t* tmq, char* topicName, int32_t vgId, SMqClientVg** pVg) { + if (tmq == NULL || topicName == NULL || pVg == NULL) { + return; + } int32_t topicNumCur = taosArrayGetSize(tmq->clientTopics); for (int i = 0; i < topicNumCur; i++) { SMqClientTopic* pTopicCur = taosArrayGet(tmq->clientTopics, i); @@ -1914,6 +1974,9 @@ static void getVgInfo(tmq_t* tmq, char* topicName, int32_t vgId, SMqClientVg** p } static SMqClientTopic* getTopicInfo(tmq_t* tmq, char* topicName) { + if (tmq == NULL || topicName == NULL) { + return NULL; + } int32_t topicNumCur = taosArrayGetSize(tmq->clientTopics); for (int i = 0; i < topicNumCur; i++) { SMqClientTopic* pTopicCur = taosArrayGet(tmq->clientTopics, i); @@ -2026,6 +2089,9 @@ int32_t tmqPollCb(void* param, SDataBuf* pMsg, int32_t code) { } void tmqBuildConsumeReqImpl(SMqPollReq* pReq, tmq_t* tmq, int64_t timeout, SMqClientTopic* pTopic, SMqClientVg* pVg) { + if (pReq == NULL || tmq == NULL || pTopic == NULL || pVg == NULL) { + return; + } (void)snprintf(pReq->subKey, TSDB_SUBSCRIBE_KEY_LEN, "%s%s%s", tmq->groupId, TMQ_SEPARATOR, pTopic->topicName); pReq->withTbName = tmq->withTbName; pReq->consumerId = tmq->consumerId; @@ -2072,7 +2138,7 @@ void changeByteEndian(char* pData) { } static void tmqGetRawDataRowsPrecisionFromRes(void* pRetrieve, void** rawData, int64_t* rows, int32_t* precision) { - if (pRetrieve == NULL) { + if (pRetrieve == NULL || rawData == NULL || rows == NULL) { return; } if (*(int64_t*)pRetrieve == 0) { @@ -2092,6 +2158,9 @@ static void tmqGetRawDataRowsPrecisionFromRes(void* pRetrieve, void** rawData, i static void tmqBuildRspFromWrapperInner(SMqPollRspWrapper* pWrapper, SMqClientVg* pVg, int64_t* numOfRows, SMqRspObj* pRspObj) { + if (pWrapper == NULL || pVg == NULL || numOfRows == NULL || pRspObj == NULL) { + return; + } pRspObj->resIter = -1; pRspObj->resInfo.totalRows = 0; pRspObj->resInfo.precision = TSDB_TIME_PRECISION_MILLI; @@ -2130,6 +2199,9 @@ static void tmqBuildRspFromWrapperInner(SMqPollRspWrapper* pWrapper, SMqClientVg } static int32_t doTmqPollImpl(tmq_t* pTmq, SMqClientTopic* pTopic, SMqClientVg* pVg, int64_t timeout) { + if (pTmq == NULL || pTopic == NULL || pVg == NULL) { + return TSDB_CODE_INVALID_MSG; + } SMqPollReq req = {0}; char* msg = NULL; SMqPollCbParam* pParam = NULL; @@ -2199,6 +2271,9 @@ static int32_t doTmqPollImpl(tmq_t* pTmq, SMqClientTopic* pTopic, SMqClientVg* p // broadcast the poll request to all related vnodes static int32_t tmqPollImpl(tmq_t* tmq, int64_t timeout) { + if (tmq == NULL) { + return TSDB_CODE_INVALID_MSG; + } int32_t code = 0; taosWLockLatch(&tmq->lock); @@ -2258,6 +2333,9 @@ static int32_t tmqPollImpl(tmq_t* tmq, int64_t timeout) { static void updateVgInfo(SMqClientVg* pVg, STqOffsetVal* reqOffset, STqOffsetVal* rspOffset, int64_t sver, int64_t ever, int64_t consumerId, bool hasData) { + if (pVg == NULL || reqOffset == NULL || rspOffset == NULL) { + return; + } if (!pVg->seekUpdated) { tqDebugC("consumer:0x%" PRIx64 " local offset is update, since seekupdate not set", consumerId); if (hasData) { @@ -2283,6 +2361,9 @@ static SMqRspObj* buildRsp(SMqPollRspWrapper* pollRspWrapper){ SMqBatchMetaRsp batchMetaRsp; } MEMSIZE; + if (pollRspWrapper == NULL) { + return NULL; + } SMqRspObj* pRspObj = taosMemoryCalloc(1, sizeof(SMqRspObj)); if (pRspObj == NULL) { tqErrorC("buildRsp:failed to allocate memory"); @@ -2297,6 +2378,9 @@ static SMqRspObj* buildRsp(SMqPollRspWrapper* pollRspWrapper){ } static void processMqRspError(tmq_t* tmq, SMqRspWrapper* pRspWrapper){ + if (tmq == NULL || pRspWrapper == NULL) { + return; + } SMqPollRspWrapper* pollRspWrapper = &pRspWrapper->pollRsp; if (pRspWrapper->code == TSDB_CODE_VND_INVALID_VGROUP_ID) { // for vnode transform @@ -2322,6 +2406,9 @@ static void processMqRspError(tmq_t* tmq, SMqRspWrapper* pRspWrapper){ taosWUnLockLatch(&tmq->lock); } static SMqRspObj* processMqRsp(tmq_t* tmq, SMqRspWrapper* pRspWrapper){ + if (tmq == NULL || pRspWrapper == NULL) { + return NULL; + } SMqRspObj* pRspObj = NULL; if (pRspWrapper->tmqRspType == TMQ_MSG_TYPE__EP_RSP) { @@ -2401,6 +2488,9 @@ static SMqRspObj* processMqRsp(tmq_t* tmq, SMqRspWrapper* pRspWrapper){ } static void* tmqHandleAllRsp(tmq_t* tmq, int64_t timeout) { + if (tmq == NULL) { + return NULL; + } tqDebugC("consumer:0x%" PRIx64 " start to handle the rsp, total:%d", tmq->consumerId, taosQallItemSize(tmq->qall)); void* returnVal = NULL; @@ -2478,6 +2568,7 @@ TAOS_RES* tmq_consumer_poll(tmq_t* tmq, int64_t timeout) { } static void displayConsumeStatistics(tmq_t* pTmq) { + if (pTmq == NULL) return; taosRLockLatch(&pTmq->lock); int32_t numOfTopics = taosArrayGetSize(pTmq->clientTopics); tqInfoC("consumer:0x%" PRIx64 " closing poll:%" PRId64 " rows:%" PRId64 " topics:%d, final epoch:%d", @@ -2680,7 +2771,11 @@ void tmq_commit_async(tmq_t* tmq, const TAOS_RES* pRes, tmq_commit_cb* cb, void* } } -static void commitCallBackFn(tmq_t* UNUSED_PARAM(tmq), int32_t code, void* param) { +static void commitCallBackFn(tmq_t* tmq, int32_t code, void* param) { + if (param == NULL) { + tqErrorC("invalid param in commit cb"); + return; + } SSyncCommitInfo* pInfo = (SSyncCommitInfo*)param; pInfo->code = code; if (tsem2_post(&pInfo->sem) != 0){ @@ -2730,6 +2825,10 @@ int32_t tmq_commit_sync(tmq_t* tmq, const TAOS_RES* pRes) { // wal range will be ok after calling tmq_get_topic_assignment or poll interface static int32_t checkWalRange(SVgOffsetInfo* offset, int64_t value) { + if (offset == NULL) { + tqErrorC("invalid offset, null"); + return TSDB_CODE_INVALID_PARA; + } if (offset->walVerBegin == -1 || offset->walVerEnd == -1) { tqErrorC("Assignment or poll interface need to be called first"); return TSDB_CODE_TMQ_NEED_INITIALIZED; @@ -2848,6 +2947,9 @@ void tmq_commit_offset_async(tmq_t* tmq, const char* pTopicName, int32_t vgId, i } int32_t tmqGetNextResInfo(TAOS_RES* res, bool convertUcs4, SReqResultInfo** pResInfo) { + if (res == NULL || pResInfo == NULL) { + return TSDB_CODE_INVALID_PARA; + } SMqRspObj* pRspObj = (SMqRspObj*)res; SMqDataRsp* data = &pRspObj->dataRsp; @@ -2885,7 +2987,7 @@ int32_t tmqGetNextResInfo(TAOS_RES* res, bool convertUcs4, SReqResultInfo** pRes } static int32_t tmqGetWalInfoCb(void* param, SDataBuf* pMsg, int32_t code) { - if (param == NULL) { + if (param == NULL || pMsg == NULL) { return code; } SMqVgWalInfoParam* pParam = param; @@ -2958,6 +3060,9 @@ static bool isInSnapshotMode(int8_t type, bool useSnapshot) { } static int32_t tmCommittedCb(void* param, SDataBuf* pMsg, int32_t code) { + if (param == NULL) { + return code; + } SMqCommittedParam* pParam = param; if (code != 0) { @@ -2987,6 +3092,9 @@ static int32_t tmCommittedCb(void* param, SDataBuf* pMsg, int32_t code) { } int64_t getCommittedFromServer(tmq_t* tmq, char* tname, int32_t vgId, SEpSet* epSet) { + if (tmq == NULL || tname == NULL || epSet == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; SMqVgOffset pOffset = {0}; diff --git a/source/dnode/mnode/impl/src/mndConsumer.c b/source/dnode/mnode/impl/src/mndConsumer.c index 0538a5fe8389..ee3241c41eed 100644 --- a/source/dnode/mnode/impl/src/mndConsumer.c +++ b/source/dnode/mnode/impl/src/mndConsumer.c @@ -52,6 +52,9 @@ int32_t mndInitConsumer(SMnode *pMnode) { .deleteFp = (SdbDeleteFp)mndConsumerActionDelete, }; + if (pMnode == NULL){ + return TSDB_CODE_INVALID_PARA; + } mndSetMsgHandle(pMnode, TDMT_MND_TMQ_SUBSCRIBE, mndProcessSubscribeReq); mndSetMsgHandle(pMnode, TDMT_MND_TMQ_HB, mndProcessMqHbReq); mndSetMsgHandle(pMnode, TDMT_MND_TMQ_ASK_EP, mndProcessAskEpReq); @@ -66,6 +69,9 @@ int32_t mndInitConsumer(SMnode *pMnode) { void mndCleanupConsumer(SMnode *pMnode) {} int32_t mndSendConsumerMsg(SMnode *pMnode, int64_t consumerId, uint16_t msgType, SRpcHandleInfo *info) { + if (pMnode == NULL || info == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; void *msg = rpcMallocCont(sizeof(int64_t)); MND_TMQ_NULL_CHECK(msg); @@ -88,6 +94,9 @@ int32_t mndSendConsumerMsg(SMnode *pMnode, int64_t consumerId, uint16_t msgType, } static int32_t validateTopics(STrans* pTrans, SCMSubscribeReq *subscribe, SMnode *pMnode, const char *pUser) { + if (pTrans == NULL || subscribe == NULL || pMnode == NULL || pUser == NULL) { + return TSDB_CODE_INVALID_PARA; + } SMqTopicObj *pTopic = NULL; int32_t code = 0; @@ -130,6 +139,9 @@ static int32_t validateTopics(STrans* pTrans, SCMSubscribeReq *subscribe, SMnode } static int32_t mndProcessConsumerClearMsg(SRpcMsg *pMsg) { + if (pMsg == NULL || pMsg->pCont == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; SMnode *pMnode = pMsg->info.node; SMqConsumerClearMsg *pClearMsg = pMsg->pCont; @@ -155,6 +167,9 @@ static int32_t mndProcessConsumerClearMsg(SRpcMsg *pMsg) { } static int32_t checkPrivilege(SMnode *pMnode, SMqConsumerObj *pConsumer, SMqHbRsp *rsp, char *user) { + if (pMnode == NULL || pConsumer == NULL || rsp == NULL || user == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; rsp->topicPrivileges = taosArrayInit(taosArrayGetSize(pConsumer->currentTopics), sizeof(STopicPrivilege)); MND_TMQ_NULL_CHECK(rsp->topicPrivileges); @@ -181,6 +196,9 @@ static int32_t checkPrivilege(SMnode *pMnode, SMqConsumerObj *pConsumer, SMqHbRs } static void storeOffsetRows(SMnode *pMnode, SMqHbReq *req, SMqConsumerObj *pConsumer){ + if (pMnode == NULL || req == NULL || pConsumer == NULL){ + return; + } for (int i = 0; i < taosArrayGetSize(req->topics); i++) { TopicOffsetRows *data = taosArrayGet(req->topics, i); if (data == NULL){ @@ -210,6 +228,9 @@ static void storeOffsetRows(SMnode *pMnode, SMqHbReq *req, SMqConsumerObj *pCons } static int32_t buildMqHbRsp(SRpcMsg *pMsg, SMqHbRsp *rsp){ + if (pMsg == NULL || rsp == NULL){ + return TSDB_CODE_INVALID_PARA; + } int32_t tlen = tSerializeSMqHbRsp(NULL, 0, rsp); if (tlen <= 0){ return TSDB_CODE_TMQ_INVALID_MSG; @@ -229,6 +250,9 @@ static int32_t buildMqHbRsp(SRpcMsg *pMsg, SMqHbRsp *rsp){ } static int32_t mndProcessMqHbReq(SRpcMsg *pMsg) { + if (pMsg == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; SMnode *pMnode = pMsg->info.node; SMqHbReq req = {0}; @@ -256,6 +280,9 @@ static int32_t mndProcessMqHbReq(SRpcMsg *pMsg) { } static int32_t addEpSetInfo(SMnode *pMnode, SMqConsumerObj *pConsumer, int32_t epoch, SMqAskEpRsp *rsp){ + if (pMnode == NULL || pConsumer == NULL || rsp == NULL){ + return TSDB_CODE_INVALID_PARA; + } taosRLockLatch(&pConsumer->lock); int32_t numOfTopics = taosArrayGetSize(pConsumer->currentTopics); @@ -359,6 +386,9 @@ static int32_t addEpSetInfo(SMnode *pMnode, SMqConsumerObj *pConsumer, int32_t e } static int32_t buildAskEpRsp(SRpcMsg *pMsg, SMqAskEpRsp *rsp, int32_t serverEpoch, int64_t consumerId){ + if (pMsg == NULL || rsp == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; // encode rsp int32_t tlen = sizeof(SMqRspHead) + tEncodeSMqAskEpRsp(NULL, rsp); @@ -388,6 +418,9 @@ static int32_t buildAskEpRsp(SRpcMsg *pMsg, SMqAskEpRsp *rsp, int32_t serverEpoc } static int32_t mndProcessAskEpReq(SRpcMsg *pMsg) { + if (pMsg == NULL) { + return TSDB_CODE_INVALID_PARA; + } SMnode *pMnode = pMsg->info.node; SMqAskEpReq req = {0}; SMqAskEpRsp rsp = {0}; @@ -431,6 +464,9 @@ static int32_t mndProcessAskEpReq(SRpcMsg *pMsg) { } int32_t mndSetConsumerDropLogs(STrans *pTrans, SMqConsumerObj *pConsumer) { + if (pConsumer == NULL || pTrans == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; SSdbRaw *pCommitRaw = mndConsumerActionEncode(pConsumer); MND_TMQ_NULL_CHECK(pCommitRaw); @@ -445,6 +481,9 @@ int32_t mndSetConsumerDropLogs(STrans *pTrans, SMqConsumerObj *pConsumer) { } int32_t mndSetConsumerCommitLogs(STrans *pTrans, SMqConsumerObj *pConsumer) { + if (pConsumer == NULL || pTrans == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; SSdbRaw *pCommitRaw = mndConsumerActionEncode(pConsumer); MND_TMQ_NULL_CHECK(pCommitRaw); @@ -459,6 +498,9 @@ int32_t mndSetConsumerCommitLogs(STrans *pTrans, SMqConsumerObj *pConsumer) { } static void freeItem(void *param) { + if (param == NULL) { + return; + } void *pItem = *(void **)param; if (pItem != NULL) { taosMemoryFree(pItem); @@ -475,6 +517,9 @@ if (taosArrayPush(pConsumerNew->array, &newTopicCopy) == NULL){\ } static int32_t getTopicAddDelete(SMqConsumerObj *pExistedConsumer, SMqConsumerObj *pConsumerNew){ + if (pExistedConsumer == NULL || pConsumerNew == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; pConsumerNew->rebNewTopics = taosArrayInit(0, sizeof(void *)); MND_TMQ_NULL_CHECK(pConsumerNew->rebNewTopics); @@ -528,6 +573,9 @@ static int32_t getTopicAddDelete(SMqConsumerObj *pExistedConsumer, SMqConsumerOb } static int32_t checkAndSortTopic(SMnode *pMnode, SArray *pTopicList){ + if (pTopicList == NULL || pMnode == NULL) { + return TSDB_CODE_INVALID_PARA; + } taosArraySort(pTopicList, taosArrayCompareString); taosArrayRemoveDuplicate(pTopicList, taosArrayCompareString, freeItem); @@ -542,6 +590,9 @@ static int32_t checkAndSortTopic(SMnode *pMnode, SArray *pTopicList){ } static int32_t buildSubConsumer(SMnode *pMnode, SCMSubscribeReq *subscribe, SMqConsumerObj** ppConsumer){ + if (pMnode == NULL || subscribe == NULL) { + return TSDB_CODE_INVALID_PARA; + } int64_t consumerId = subscribe->consumerId; char *cgroup = subscribe->cgroup; SMqConsumerObj *pConsumerNew = NULL; @@ -581,6 +632,9 @@ static int32_t buildSubConsumer(SMnode *pMnode, SCMSubscribeReq *subscribe, SMqC } int32_t mndProcessSubscribeReq(SRpcMsg *pMsg) { + if (pMsg == NULL) { + return TSDB_CODE_INVALID_PARA; + } SMnode *pMnode = pMsg->info.node; char *msgStr = pMsg->pCont; int32_t code = 0; @@ -619,6 +673,9 @@ int32_t mndProcessSubscribeReq(SRpcMsg *pMsg) { } SSdbRaw *mndConsumerActionEncode(SMqConsumerObj *pConsumer) { + if (pConsumer == NULL) { + return NULL; + } int32_t code = 0; int32_t lino = 0; terrno = TSDB_CODE_OUT_OF_MEMORY; @@ -659,6 +716,9 @@ SSdbRaw *mndConsumerActionEncode(SMqConsumerObj *pConsumer) { } SSdbRow *mndConsumerActionDecode(SSdbRaw *pRaw) { + if (pRaw == NULL) { + return NULL; + } int32_t code = 0; int32_t lino = 0; SSdbRow *pRow = NULL; @@ -717,6 +777,9 @@ SSdbRow *mndConsumerActionDecode(SSdbRaw *pRaw) { } static int32_t mndConsumerActionInsert(SSdb *pSdb, SMqConsumerObj *pConsumer) { + if (pConsumer == NULL) { + return TSDB_CODE_INVALID_PARA; + } mInfo("consumer:0x%" PRIx64 " sub insert, cgroup:%s status:%d(%s) epoch:%d", pConsumer->consumerId, pConsumer->cgroup, pConsumer->status, mndConsumerStatusName(pConsumer->status), pConsumer->epoch); pConsumer->subscribeTime = pConsumer->createTime; @@ -724,6 +787,9 @@ static int32_t mndConsumerActionInsert(SSdb *pSdb, SMqConsumerObj *pConsumer) { } static int32_t mndConsumerActionDelete(SSdb *pSdb, SMqConsumerObj *pConsumer) { + if (pConsumer == NULL) { + return TSDB_CODE_INVALID_PARA; + } mInfo("consumer:0x%" PRIx64 " perform delete action, status:(%d)%s", pConsumer->consumerId, pConsumer->status, mndConsumerStatusName(pConsumer->status)); tClearSMqConsumerObj(pConsumer); @@ -744,6 +810,9 @@ static int32_t mndConsumerActionDelete(SSdb *pSdb, SMqConsumerObj *pConsumer) { // remove from topic list static void removeFromTopicList(SArray *topicList, const char *pTopic, int64_t consumerId, char *type) { + if (topicList == NULL || pTopic == NULL) { + return; + } int32_t size = taosArrayGetSize(topicList); for (int32_t i = 0; i < size; i++) { char *p = taosArrayGetP(topicList, i); @@ -759,6 +828,9 @@ static void removeFromTopicList(SArray *topicList, const char *pTopic, int64_t c } static bool existInCurrentTopicList(const SMqConsumerObj *pConsumer, const char *pTopic) { + if (pConsumer == NULL || pTopic == NULL) { + return false; + } bool existing = false; int32_t size = taosArrayGetSize(pConsumer->currentTopics); for (int32_t i = 0; i < size; i++) { @@ -773,6 +845,9 @@ static bool existInCurrentTopicList(const SMqConsumerObj *pConsumer, const char } static int32_t mndConsumerActionUpdate(SSdb *pSdb, SMqConsumerObj *pOldConsumer, SMqConsumerObj *pNewConsumer) { + if (pOldConsumer == NULL || pNewConsumer == NULL) { + return TSDB_CODE_INVALID_PARA; + } mInfo("consumer:0x%" PRIx64 " perform update action, update type:%d, subscribe-time:%" PRId64 ", createTime:%" PRId64, pOldConsumer->consumerId, pNewConsumer->updateType, pOldConsumer->subscribeTime, pOldConsumer->createTime); @@ -857,6 +932,9 @@ static int32_t mndConsumerActionUpdate(SSdb *pSdb, SMqConsumerObj *pOldConsumer, } int32_t mndAcquireConsumer(SMnode *pMnode, int64_t consumerId, SMqConsumerObj** pConsumer) { + if (pMnode == NULL || pConsumer == NULL) { + return TSDB_CODE_INVALID_PARA; + } SSdb *pSdb = pMnode->pSdb; *pConsumer = sdbAcquire(pSdb, SDB_CONSUMER, &consumerId); if (*pConsumer == NULL) { @@ -866,11 +944,17 @@ int32_t mndAcquireConsumer(SMnode *pMnode, int64_t consumerId, SMqConsumerObj** } void mndReleaseConsumer(SMnode *pMnode, SMqConsumerObj *pConsumer) { + if (pMnode == NULL || pConsumer == NULL) { + return; + } SSdb *pSdb = pMnode->pSdb; sdbRelease(pSdb, pConsumer); } static int32_t mndRetrieveConsumer(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, int32_t rowsCapacity) { + if (pReq == NULL || pShow == NULL || pBlock == NULL) { + return TSDB_CODE_INVALID_PARA; + } SMnode *pMnode = pReq->info.node; SSdb *pSdb = pMnode->pSdb; int32_t numOfRows = 0; @@ -1021,6 +1105,7 @@ static int32_t mndRetrieveConsumer(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock * } static void mndCancelGetNextConsumer(SMnode *pMnode, void *pIter) { + if (pMnode == NULL || pIter == NULL) return; SSdb *pSdb = pMnode->pSdb; sdbCancelFetchByType(pSdb, pIter, SDB_CONSUMER); } diff --git a/source/dnode/mnode/impl/src/mndSubscribe.c b/source/dnode/mnode/impl/src/mndSubscribe.c index bcca01a2304f..ad36d48a1fa3 100644 --- a/source/dnode/mnode/impl/src/mndSubscribe.c +++ b/source/dnode/mnode/impl/src/mndSubscribe.c @@ -43,6 +43,9 @@ static void mndCancelGetNextSubscribe(SMnode *pMnode, void *pIter); static int32_t mndCheckConsumer(SRpcMsg *pMsg, SHashObj *hash); static int32_t mndSetSubCommitLogs(STrans *pTrans, SMqSubscribeObj *pSub) { + if (pTrans == NULL || pSub == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; SSdbRaw *pCommitRaw = mndSubActionEncode(pSub); MND_TMQ_NULL_CHECK(pCommitRaw); @@ -68,6 +71,9 @@ int32_t mndInitSubscribe(SMnode *pMnode) { .deleteFp = (SdbDeleteFp)mndSubActionDelete, }; + if (pMnode == NULL) { + return TSDB_CODE_INVALID_PARA; + } mndSetMsgHandle(pMnode, TDMT_VND_TMQ_SUBSCRIBE_RSP, mndTransProcessRsp); mndSetMsgHandle(pMnode, TDMT_VND_TMQ_DELETE_SUB_RSP, mndTransProcessRsp); mndSetMsgHandle(pMnode, TDMT_MND_TMQ_TIMER, mndProcessRebalanceReq); @@ -81,6 +87,9 @@ int32_t mndInitSubscribe(SMnode *pMnode) { } static int32_t mndCreateSubscription(SMnode *pMnode, const SMqTopicObj *pTopic, const char *subKey, SMqSubscribeObj** pSub) { + if(pMnode == NULL || pTopic == NULL || subKey == NULL || pSub == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; MND_TMQ_RETURN_CHECK(tNewSubscribeObj(subKey, pSub)); (*pSub)->dbUid = pTopic->dbUid; @@ -99,6 +108,9 @@ static int32_t mndCreateSubscription(SMnode *pMnode, const SMqTopicObj *pTopic, static int32_t mndBuildSubChangeReq(void **pBuf, int32_t *pLen, SMqSubscribeObj *pSub, const SMqRebOutputVg *pRebVg, SSubplan *pPlan) { + if (pSub == NULL || pRebVg == NULL || pBuf == NULL || pLen == NULL) { + return TSDB_CODE_INVALID_PARA; + } SMqRebVgReq req = {0}; int32_t code = 0; SEncoder encoder = {0}; @@ -146,6 +158,9 @@ static int32_t mndBuildSubChangeReq(void **pBuf, int32_t *pLen, SMqSubscribeObj static int32_t mndPersistSubChangeVgReq(SMnode *pMnode, STrans *pTrans, SMqSubscribeObj *pSub, const SMqRebOutputVg *pRebVg, SSubplan *pPlan) { + if (pMnode == NULL || pTrans == NULL || pSub == NULL || pRebVg == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; void *buf = NULL; @@ -180,6 +195,9 @@ static int32_t mndPersistSubChangeVgReq(SMnode *pMnode, STrans *pTrans, SMqSubsc } static void mndSplitSubscribeKey(const char *key, char *topic, char *cgroup, bool fullName) { + if (key == NULL || topic == NULL || cgroup == NULL) { + return; + } int32_t i = 0; while (key[i] != TMQ_SEPARATOR_CHAR) { i++; @@ -197,6 +215,9 @@ static void mndSplitSubscribeKey(const char *key, char *topic, char *cgroup, boo } static int32_t mndGetOrCreateRebSub(SHashObj *pHash, const char *key, SMqRebInfo **pReb) { + if (pHash == NULL || key == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; SMqRebInfo* pRebInfo = taosHashGet(pHash, key, strlen(key) + 1); if (pRebInfo == NULL) { @@ -222,6 +243,9 @@ static int32_t mndGetOrCreateRebSub(SHashObj *pHash, const char *key, SMqRebInfo } static int32_t pushVgDataToHash(SArray *vgs, SHashObj *pHash, int64_t consumerId, char *key) { + if (vgs == NULL || pHash == NULL || key == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; SMqVgEp **pVgEp = (SMqVgEp **)taosArrayPop(vgs); MND_TMQ_NULL_CHECK(pVgEp); @@ -233,6 +257,9 @@ static int32_t pushVgDataToHash(SArray *vgs, SHashObj *pHash, int64_t consumerId } static int32_t processRemovedConsumers(SMqRebOutputObj *pOutput, SHashObj *pHash, const SMqRebInputObj *pInput) { + if (pHash == NULL || pOutput == NULL || pInput == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; int32_t numOfRemoved = taosArrayGetSize(pInput->pRebInfo->removedConsumers); int32_t actualRemoved = 0; @@ -266,6 +293,9 @@ static int32_t processRemovedConsumers(SMqRebOutputObj *pOutput, SHashObj *pHash } static int32_t processNewConsumers(SMqRebOutputObj *pOutput, const SMqRebInputObj *pInput) { + if (pOutput == NULL || pInput == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; int32_t numOfNewConsumers = taosArrayGetSize(pInput->pRebInfo->newConsumers); @@ -285,6 +315,9 @@ static int32_t processNewConsumers(SMqRebOutputObj *pOutput, const SMqRebInputOb } static int32_t processUnassignedVgroups(SMqRebOutputObj *pOutput, SHashObj *pHash) { + if (pOutput == NULL || pHash == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; int32_t numOfVgroups = taosArrayGetSize(pOutput->pSub->unassignedVgs); for (int32_t i = 0; i < numOfVgroups; i++) { @@ -296,6 +329,9 @@ static int32_t processUnassignedVgroups(SMqRebOutputObj *pOutput, SHashObj *pHas static int32_t processModifiedConsumers(SMqRebOutputObj *pOutput, SHashObj *pHash, int32_t minVgCnt, int32_t remainderVgCnt) { + if (pOutput == NULL || pHash == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; int32_t cnt = 0; void *pIter = NULL; @@ -328,6 +364,9 @@ static int32_t processModifiedConsumers(SMqRebOutputObj *pOutput, SHashObj *pHas } static int32_t processRemoveAddVgs(SMnode *pMnode, SMqRebOutputObj *pOutput) { + if (pMnode == NULL || pOutput == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; int32_t totalVgNum = 0; SVgObj *pVgroup = NULL; @@ -403,6 +442,9 @@ static int32_t processRemoveAddVgs(SMnode *pMnode, SMqRebOutputObj *pOutput) { } static int32_t processSubOffsetRows(SMnode *pMnode, const SMqRebInputObj *pInput, SMqRebOutputObj *pOutput) { + if (pMnode == NULL || pInput == NULL || pOutput == NULL) { + return TSDB_CODE_INVALID_PARA; + } SMqSubscribeObj *pSub = NULL; int32_t code = mndAcquireSubscribeByKey(pMnode, pInput->pRebInfo->key, &pSub); // put all offset rows if( code != 0){ @@ -465,6 +507,7 @@ static int32_t processSubOffsetRows(SMnode *pMnode, const SMqRebInputObj *pInput } static void printRebalanceLog(SMqRebOutputObj *pOutput) { + if (pOutput == NULL) return; mInfo("sub:%s mq rebalance calculation completed, re-balanced vg", pOutput->pSub->key); for (int32_t i = 0; i < taosArrayGetSize(pOutput->rebVgs); i++) { SMqRebOutputVg *pOutputRebVg = taosArrayGet(pOutput->rebVgs, i); @@ -492,6 +535,9 @@ static void printRebalanceLog(SMqRebOutputObj *pOutput) { static void calcVgroupsCnt(const SMqRebInputObj *pInput, int32_t totalVgNum, const char *pSubKey, int32_t *minVgCnt, int32_t *remainderVgCnt) { + if (pInput == NULL || pSubKey == NULL || minVgCnt == NULL || remainderVgCnt == NULL) { + return; + } int32_t numOfRemoved = taosArrayGetSize(pInput->pRebInfo->removedConsumers); int32_t numOfAdded = taosArrayGetSize(pInput->pRebInfo->newConsumers); int32_t numOfFinal = pInput->oldConsumerNum + numOfAdded - numOfRemoved; @@ -509,6 +555,9 @@ static void calcVgroupsCnt(const SMqRebInputObj *pInput, int32_t totalVgNum, con } static int32_t assignVgroups(SMqRebOutputObj *pOutput, SHashObj *pHash, int32_t minVgCnt) { + if (pOutput == NULL || pHash == NULL) { + return TSDB_CODE_INVALID_PARA; + } SMqRebOutputVg *pRebVg = NULL; void *pAssignIter = NULL; void *pIter = NULL; @@ -580,6 +629,9 @@ static int32_t assignVgroups(SMqRebOutputObj *pOutput, SHashObj *pHash, int32_t } static int32_t mndDoRebalance(SMnode *pMnode, const SMqRebInputObj *pInput, SMqRebOutputObj *pOutput) { + if (pMnode == NULL || pInput == NULL || pOutput == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t totalVgNum = processRemoveAddVgs(pMnode, pOutput); if (totalVgNum < 0){ return totalVgNum; @@ -605,6 +657,9 @@ static int32_t mndDoRebalance(SMnode *pMnode, const SMqRebInputObj *pInput, SMqR } static int32_t presistConsumerByType(STrans *pTrans, SArray *consumers, int8_t type, char *cgroup, char *topic) { + if (pTrans == NULL || consumers == NULL || cgroup == NULL || topic == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; SMqConsumerObj *pConsumerNew = NULL; int32_t consumerNum = taosArrayGetSize(consumers); @@ -623,6 +678,9 @@ static int32_t presistConsumerByType(STrans *pTrans, SArray *consumers, int8_t t } static int32_t mndPresistConsumer(STrans *pTrans, const SMqRebOutputObj *pOutput, char *cgroup, char *topic) { + if (pTrans == NULL || pOutput == NULL || cgroup == NULL || topic == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; MND_TMQ_RETURN_CHECK(presistConsumerByType(pTrans, pOutput->modifyConsumers, CONSUMER_UPDATE_REB, cgroup, NULL)); MND_TMQ_RETURN_CHECK(presistConsumerByType(pTrans, pOutput->newConsumers, CONSUMER_ADD_REB, cgroup, topic)); @@ -632,6 +690,9 @@ static int32_t mndPresistConsumer(STrans *pTrans, const SMqRebOutputObj *pOutput } static int32_t mndPersistRebResult(SMnode *pMnode, SRpcMsg *pMsg, const SMqRebOutputObj *pOutput) { + if (pMnode == NULL || pMsg == NULL || pOutput == NULL) { + return TSDB_CODE_INVALID_PARA; + } struct SSubplan *pPlan = NULL; int32_t code = 0; STrans *pTrans = NULL; @@ -682,6 +743,7 @@ static int32_t mndPersistRebResult(SMnode *pMnode, SRpcMsg *pMsg, const SMqRebOu } static void freeRebalanceItem(void *param) { + if (param == NULL) return; SMqRebInfo *pInfo = param; taosArrayDestroy(pInfo->newConsumers); taosArrayDestroy(pInfo->removedConsumers); @@ -689,6 +751,9 @@ static void freeRebalanceItem(void *param) { // type = 0 remove type = 1 add static int32_t buildRebInfo(SHashObj *rebSubHash, SArray *topicList, int8_t type, char *group, int64_t consumerId) { + if (rebSubHash == NULL || topicList == NULL || group == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; int32_t topicNum = taosArrayGetSize(topicList); for (int32_t i = 0; i < topicNum; i++) { @@ -709,6 +774,9 @@ static int32_t buildRebInfo(SHashObj *rebSubHash, SArray *topicList, int8_t type } static void checkForVgroupSplit(SMnode *pMnode, SMqConsumerObj *pConsumer, SHashObj *rebSubHash) { + if (pMnode == NULL || pConsumer == NULL || rebSubHash == NULL) { + return; + } int32_t newTopicNum = taosArrayGetSize(pConsumer->currentTopics); for (int32_t i = 0; i < newTopicNum; i++) { char *topic = taosArrayGetP(pConsumer->currentTopics, i); @@ -754,6 +822,9 @@ static void checkForVgroupSplit(SMnode *pMnode, SMqConsumerObj *pConsumer, SHash } static int32_t mndCheckConsumer(SRpcMsg *pMsg, SHashObj *rebSubHash) { + if (pMsg == NULL || rebSubHash == NULL) { + return TSDB_CODE_INVALID_PARA; + } SMnode *pMnode = pMsg->info.node; SSdb *pSdb = pMnode->pSdb; SMqConsumerObj *pConsumer = NULL; @@ -818,6 +889,9 @@ void mndRebCntDec() { } static void clearRebOutput(SMqRebOutputObj *rebOutput) { + if (rebOutput == NULL) { + return; + } taosArrayDestroy(rebOutput->newConsumers); taosArrayDestroy(rebOutput->modifyConsumers); taosArrayDestroy(rebOutput->removedConsumers); @@ -827,6 +901,9 @@ static void clearRebOutput(SMqRebOutputObj *rebOutput) { } static int32_t initRebOutput(SMqRebOutputObj *rebOutput) { + if (rebOutput == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; rebOutput->newConsumers = taosArrayInit(0, sizeof(int64_t)); MND_TMQ_NULL_CHECK(rebOutput->newConsumers); @@ -845,6 +922,9 @@ static int32_t initRebOutput(SMqRebOutputObj *rebOutput) { // This function only works when there are dirty consumers static int32_t checkConsumer(SMnode *pMnode, SMqSubscribeObj *pSub) { + if (pMnode == NULL || pSub == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; void *pIter = NULL; while (1) { @@ -871,6 +951,9 @@ static int32_t checkConsumer(SMnode *pMnode, SMqSubscribeObj *pSub) { } static int32_t buildRebOutput(SMnode *pMnode, SMqRebInputObj *rebInput, SMqRebOutputObj *rebOutput) { + if (pMnode == NULL || rebInput == NULL || rebOutput == NULL) { + return TSDB_CODE_INVALID_PARA; + } const char *key = rebInput->pRebInfo->key; SMqSubscribeObj *pSub = NULL; int32_t code = mndAcquireSubscribeByKey(pMnode, key, &pSub); @@ -922,6 +1005,9 @@ static int32_t buildRebOutput(SMnode *pMnode, SMqRebInputObj *rebInput, SMqRebOu } static int32_t mndProcessRebalanceReq(SRpcMsg *pMsg) { + if (pMsg == NULL) { + return TSDB_CODE_INVALID_PARA; + } int code = 0; void *pIter = NULL; SMnode *pMnode = pMsg->info.node; @@ -986,6 +1072,9 @@ static int32_t mndProcessRebalanceReq(SRpcMsg *pMsg) { } static int32_t sendDeleteSubToVnode(SMnode *pMnode, SMqSubscribeObj *pSub, STrans *pTrans) { + if (pMnode == NULL || pSub == NULL || pTrans == NULL) { + return TSDB_CODE_INVALID_PARA; + } void *pIter = NULL; SVgObj *pVgObj = NULL; int32_t code = 0; @@ -1024,6 +1113,9 @@ static int32_t sendDeleteSubToVnode(SMnode *pMnode, SMqSubscribeObj *pSub, STran } static int32_t mndCheckConsumerByGroup(SMnode *pMnode, STrans *pTrans, char *cgroup, char *topic) { + if (pMnode == NULL || pTrans == NULL || cgroup == NULL || topic == NULL) { + return TSDB_CODE_INVALID_PARA; + } void *pIter = NULL; SMqConsumerObj *pConsumer = NULL; int code = 0; @@ -1056,6 +1148,9 @@ static int32_t mndCheckConsumerByGroup(SMnode *pMnode, STrans *pTrans, char *cgr } static int32_t mndProcessDropCgroupReq(SRpcMsg *pMsg) { + if (pMsg == NULL) { + return TSDB_CODE_INVALID_PARA; + } SMnode *pMnode = pMsg->info.node; SMDropCgroupReq dropReq = {0}; STrans *pTrans = NULL; @@ -1109,6 +1204,9 @@ static int32_t mndProcessDropCgroupReq(SRpcMsg *pMsg) { void mndCleanupSubscribe(SMnode *pMnode) {} static SSdbRaw *mndSubActionEncode(SMqSubscribeObj *pSub) { + if (pSub == NULL) { + return NULL; + } int32_t code = 0; int32_t lino = 0; terrno = TSDB_CODE_OUT_OF_MEMORY; @@ -1149,6 +1247,9 @@ static SSdbRaw *mndSubActionEncode(SMqSubscribeObj *pSub) { } static SSdbRow *mndSubActionDecode(SSdbRaw *pRaw) { + if (pRaw == NULL) { + return NULL; + } int32_t code = 0; int32_t lino = 0; terrno = TSDB_CODE_OUT_OF_MEMORY; @@ -1218,17 +1319,18 @@ static SSdbRow *mndSubActionDecode(SSdbRaw *pRaw) { } static int32_t mndSubActionInsert(SSdb *pSdb, SMqSubscribeObj *pSub) { - mTrace("subscribe:%s, perform insert action", pSub->key); + mTrace("subscribe:%s, perform insert action", pSub != NULL ? pSub->key : "null"); return 0; } static int32_t mndSubActionDelete(SSdb *pSdb, SMqSubscribeObj *pSub) { - mTrace("subscribe:%s, perform delete action", pSub->key); + mTrace("subscribe:%s, perform delete action", pSub != NULL ? pSub->key : "null"); tDeleteSubscribeObj(pSub); return 0; } static int32_t mndSubActionUpdate(SSdb *pSdb, SMqSubscribeObj *pOldSub, SMqSubscribeObj *pNewSub) { + if (pOldSub == NULL || pNewSub == NULL) return -1; mTrace("subscribe:%s, perform update action", pOldSub->key); taosWLockLatch(&pOldSub->lock); @@ -1249,6 +1351,9 @@ static int32_t mndSubActionUpdate(SSdb *pSdb, SMqSubscribeObj *pOldSub, SMqSubsc } int32_t mndAcquireSubscribeByKey(SMnode *pMnode, const char *key, SMqSubscribeObj** pSub) { + if (pMnode == NULL || key == NULL || pSub == NULL){ + return TSDB_CODE_INVALID_PARA; + } SSdb *pSdb = pMnode->pSdb; *pSub = sdbAcquire(pSdb, SDB_SUBSCRIBE, key); if (*pSub == NULL) { @@ -1258,6 +1363,7 @@ int32_t mndAcquireSubscribeByKey(SMnode *pMnode, const char *key, SMqSubscribeOb } int32_t mndGetGroupNumByTopic(SMnode *pMnode, const char *topicName) { + if (pMnode == NULL || topicName == NULL) return 0; int32_t num = 0; SSdb *pSdb = pMnode->pSdb; @@ -1283,11 +1389,13 @@ int32_t mndGetGroupNumByTopic(SMnode *pMnode, const char *topicName) { } void mndReleaseSubscribe(SMnode *pMnode, SMqSubscribeObj *pSub) { + if (pMnode == NULL || pSub == NULL) return; SSdb *pSdb = pMnode->pSdb; sdbRelease(pSdb, pSub); } int32_t mndSetDropSubCommitLogs(SMnode *pMnode, STrans *pTrans, SMqSubscribeObj *pSub) { + if (pMnode == NULL || pTrans == NULL || pSub == NULL) return TSDB_CODE_INVALID_PARA; int32_t code = 0; SSdbRaw *pCommitRaw = mndSubActionEncode(pSub); MND_TMQ_NULL_CHECK(pCommitRaw); @@ -1302,6 +1410,7 @@ int32_t mndSetDropSubCommitLogs(SMnode *pMnode, STrans *pTrans, SMqSubscribeObj } int32_t mndDropSubByTopic(SMnode *pMnode, STrans *pTrans, const char *topicName) { + if (pMnode == NULL || pTrans == NULL || topicName == NULL) return TSDB_CODE_INVALID_PARA; SSdb *pSdb = pMnode->pSdb; int32_t code = 0; void *pIter = NULL; @@ -1337,6 +1446,10 @@ int32_t mndDropSubByTopic(SMnode *pMnode, STrans *pTrans, const char *topicName) static int32_t buildResult(SSDataBlock *pBlock, int32_t *numOfRows, int64_t consumerId, const char* user, const char* fqdn, const char *topic, const char *cgroup, SArray *vgs, SArray *offsetRows) { + if (pBlock == NULL || numOfRows == NULL || topic == NULL || + cgroup == NULL || vgs == NULL || offsetRows == NULL){ + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; int32_t sz = taosArrayGetSize(vgs); for (int32_t j = 0; j < sz; j++) { @@ -1424,6 +1537,9 @@ static int32_t buildResult(SSDataBlock *pBlock, int32_t *numOfRows, int64_t cons } int32_t mndRetrieveSubscribe(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, int32_t rowsCapacity) { + if (pReq == NULL || pShow == NULL || pBlock == NULL){ + return TSDB_CODE_INVALID_PARA; + } SMnode *pMnode = pReq->info.node; SSdb *pSdb = pMnode->pSdb; int32_t numOfRows = 0; @@ -1489,6 +1605,9 @@ int32_t mndRetrieveSubscribe(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock } void mndCancelGetNextSubscribe(SMnode *pMnode, void *pIter) { + if (pMnode == NULL) { + return; + } SSdb *pSdb = pMnode->pSdb; sdbCancelFetchByType(pSdb, pIter, SDB_SUBSCRIBE); } diff --git a/source/dnode/mnode/impl/src/mndTopic.c b/source/dnode/mnode/impl/src/mndTopic.c index 643bab568f9f..5c199eddbd1c 100644 --- a/source/dnode/mnode/impl/src/mndTopic.c +++ b/source/dnode/mnode/impl/src/mndTopic.c @@ -55,6 +55,9 @@ int32_t mndInitTopic(SMnode *pMnode) { .deleteFp = (SdbDeleteFp)mndTopicActionDelete, }; + if (pMnode == NULL) { + return TSDB_CODE_INVALID_PARA; + } mndSetMsgHandle(pMnode, TDMT_MND_TMQ_CREATE_TOPIC, mndProcessCreateTopicReq); mndSetMsgHandle(pMnode, TDMT_MND_TMQ_DROP_TOPIC, mndProcessDropTopicReq); mndSetMsgHandle(pMnode, TDMT_VND_TMQ_ADD_CHECKINFO_RSP, mndTransProcessRsp); @@ -81,6 +84,9 @@ void mndTopicGetShowName(const char* fullTopic, char* topic) { } SSdbRaw *mndTopicActionEncode(SMqTopicObj *pTopic) { + if (pTopic == NULL) { + return NULL; + } int32_t code = 0; int32_t lino = 0; terrno = TSDB_CODE_OUT_OF_MEMORY; @@ -172,6 +178,7 @@ SSdbRaw *mndTopicActionEncode(SMqTopicObj *pTopic) { } SSdbRow *mndTopicActionDecode(SSdbRaw *pRaw) { + if (pRaw == NULL) return NULL; int32_t code = 0; int32_t lino = 0; terrno = TSDB_CODE_OUT_OF_MEMORY; @@ -193,7 +200,7 @@ SSdbRow *mndTopicActionDecode(SSdbRaw *pRaw) { pTopic = sdbGetRowObj(pRow); if (pTopic == NULL) goto TOPIC_DECODE_OVER; - int32_t len; + int32_t len = 0; int32_t dataPos = 0; SDB_GET_BINARY(pRaw, dataPos, pTopic->name, TSDB_TOPIC_FNAME_LEN, TOPIC_DECODE_OVER); SDB_GET_BINARY(pRaw, dataPos, pTopic->db, TSDB_DB_FNAME_LEN, TOPIC_DECODE_OVER); @@ -292,11 +299,12 @@ SSdbRow *mndTopicActionDecode(SSdbRaw *pRaw) { } static int32_t mndTopicActionInsert(SSdb *pSdb, SMqTopicObj *pTopic) { - mTrace("topic:%s perform insert action", pTopic->name); + mTrace("topic:%s perform insert action", pTopic != NULL ? pTopic->name : "null"); return 0; } static int32_t mndTopicActionDelete(SSdb *pSdb, SMqTopicObj *pTopic) { + if (pTopic == NULL) return 0; mTrace("topic:%s perform delete action", pTopic->name); taosMemoryFreeClear(pTopic->sql); taosMemoryFreeClear(pTopic->ast); @@ -307,6 +315,7 @@ static int32_t mndTopicActionDelete(SSdb *pSdb, SMqTopicObj *pTopic) { } static int32_t mndTopicActionUpdate(SSdb *pSdb, SMqTopicObj *pOldTopic, SMqTopicObj *pNewTopic) { + if (pOldTopic == NULL || pNewTopic == NULL) return 0; mTrace("topic:%s perform update action", pOldTopic->name); (void)atomic_exchange_64(&pOldTopic->updateTime, pNewTopic->updateTime); (void)atomic_exchange_32(&pOldTopic->version, pNewTopic->version); @@ -315,6 +324,9 @@ static int32_t mndTopicActionUpdate(SSdb *pSdb, SMqTopicObj *pOldTopic, SMqTopic } int32_t mndAcquireTopic(SMnode *pMnode, const char *topicName, SMqTopicObj **pTopic) { + if (pMnode == NULL || topicName == NULL || pTopic == NULL){ + return TSDB_CODE_INVALID_PARA; + } SSdb *pSdb = pMnode->pSdb; *pTopic = sdbAcquire(pSdb, SDB_TOPIC, topicName); if (*pTopic == NULL) { @@ -324,11 +336,13 @@ int32_t mndAcquireTopic(SMnode *pMnode, const char *topicName, SMqTopicObj **pTo } void mndReleaseTopic(SMnode *pMnode, SMqTopicObj *pTopic) { + if (pMnode == NULL) return; SSdb *pSdb = pMnode->pSdb; sdbRelease(pSdb, pTopic); } static int32_t mndCheckCreateTopicReq(SCMCreateTopicReq *pCreate) { + if (pCreate == NULL) return TSDB_CODE_INVALID_PARA; if (pCreate->sql == NULL) return TSDB_CODE_MND_INVALID_TOPIC; if (pCreate->subType == TOPIC_SUB_TYPE__COLUMN) { @@ -343,6 +357,7 @@ static int32_t mndCheckCreateTopicReq(SCMCreateTopicReq *pCreate) { } static int32_t extractTopicTbInfo(SNode *pAst, SMqTopicObj *pTopic) { + if (pAst == NULL || pTopic == NULL) return TSDB_CODE_INVALID_PARA; SNodeList *pNodeList = NULL; int32_t code = 0; MND_TMQ_RETURN_CHECK(nodesCollectColumns((SSelectStmt *)pAst, SQL_CLAUSE_FROM, NULL, COLLECT_COL_TYPE_ALL, &pNodeList)); @@ -367,6 +382,7 @@ static int32_t extractTopicTbInfo(SNode *pAst, SMqTopicObj *pTopic) { } static int32_t sendCheckInfoToVnode(STrans *pTrans, SMnode *pMnode, SMqTopicObj *topicObj){ + if (pTrans == NULL || pMnode == NULL || topicObj == NULL) return TSDB_CODE_INVALID_PARA; STqCheckInfo info = {0}; (void)memcpy(info.topic, topicObj->name, TSDB_TOPIC_FNAME_LEN); info.ntbUid = topicObj->ntbUid; @@ -388,7 +404,7 @@ static int32_t sendCheckInfoToVnode(STrans *pTrans, SMnode *pMnode, SMqTopicObj } // encoder check alter info - int32_t len; + int32_t len = 0; tEncodeSize(tEncodeSTqCheckInfo, &info, len, code); if (code != 0) { code = TSDB_CODE_OUT_OF_MEMORY; @@ -426,6 +442,7 @@ static int32_t sendCheckInfoToVnode(STrans *pTrans, SMnode *pMnode, SMqTopicObj static int32_t mndCreateTopic(SMnode *pMnode, SRpcMsg *pReq, SCMCreateTopicReq *pCreate, SDbObj *pDb, const char *userName) { + if (pMnode == NULL || pReq == NULL || pCreate == NULL || pDb == NULL || userName == NULL) return TSDB_CODE_INVALID_PARA; mInfo("start to create topic:%s", pCreate->name); STrans *pTrans = NULL; int32_t code = 0; @@ -519,6 +536,9 @@ static int32_t mndCreateTopic(SMnode *pMnode, SRpcMsg *pReq, SCMCreateTopicReq * } static int32_t mndProcessCreateTopicReq(SRpcMsg *pReq) { + if (pReq == NULL || pReq->contLen <= 0) { + return TSDB_CODE_INVALID_MSG; + } SMnode *pMnode = pReq->info.node; int32_t code = TDB_CODE_SUCCESS; SMqTopicObj *pTopic = NULL; @@ -596,6 +616,9 @@ static int32_t mndProcessCreateTopicReq(SRpcMsg *pReq) { } static int32_t mndDropTopic(SMnode *pMnode, STrans *pTrans, SRpcMsg *pReq, SMqTopicObj *pTopic) { + if (pMnode == NULL || pTrans == NULL || pReq == NULL || pTopic == NULL) { + return TSDB_CODE_INVALID_MSG; + } int32_t code = 0; SSdbRaw *pCommitRaw = NULL; MND_TMQ_RETURN_CHECK(mndUserRemoveTopic(pMnode, pTrans, pTopic->name)); @@ -614,6 +637,9 @@ static int32_t mndDropTopic(SMnode *pMnode, STrans *pTrans, SRpcMsg *pReq, SMqTo } bool checkTopic(SArray *topics, char *topicName){ + if (topics == NULL || topicName == NULL) { + return false; + } int32_t sz = taosArrayGetSize(topics); for (int32_t i = 0; i < sz; i++) { char *name = taosArrayGetP(topics, i); @@ -625,6 +651,9 @@ bool checkTopic(SArray *topics, char *topicName){ } static int32_t mndCheckConsumerByTopic(SMnode *pMnode, STrans *pTrans, char *topicName){ + if (pMnode == NULL || pTrans == NULL || topicName == NULL) { + return TSDB_CODE_INVALID_MSG; + } int32_t code = 0; SSdb *pSdb = pMnode->pSdb; void *pIter = NULL; @@ -653,6 +682,9 @@ static int32_t mndCheckConsumerByTopic(SMnode *pMnode, STrans *pTrans, char *top } static int32_t mndDropCheckInfoByTopic(SMnode *pMnode, STrans *pTrans, SMqTopicObj *pTopic){ + if (pMnode == NULL || pTrans == NULL || pTopic == NULL) { + return TSDB_CODE_INVALID_MSG; + } // broadcast to all vnode void *pIter = NULL; SVgObj *pVgroup = NULL; @@ -693,6 +725,9 @@ static int32_t mndDropCheckInfoByTopic(SMnode *pMnode, STrans *pTrans, SMqTopicO } static int32_t mndProcessDropTopicReq(SRpcMsg *pReq) { + if (pReq == NULL) { + return TSDB_CODE_INVALID_MSG; + } SMnode *pMnode = pReq->info.node; SMDropTopicReq dropReq = {0}; int32_t code = 0; @@ -756,6 +791,9 @@ static int32_t mndProcessDropTopicReq(SRpcMsg *pReq) { } int32_t mndGetNumOfTopics(SMnode *pMnode, char *dbName, int32_t *pNumOfTopics) { + if (pMnode == NULL || dbName == NULL || pNumOfTopics == NULL) { + return TSDB_CODE_INVALID_MSG; + } *pNumOfTopics = 0; SSdb *pSdb = pMnode->pSdb; @@ -786,6 +824,9 @@ int32_t mndGetNumOfTopics(SMnode *pMnode, char *dbName, int32_t *pNumOfTopics) { } static void schemaToJson(SSchema *schema, int32_t nCols, char *schemaJson){ + if (schema == NULL || schemaJson == NULL) { + return; + } char* string = NULL; int32_t code = 0; cJSON* columns = cJSON_CreateArray(); @@ -838,6 +879,9 @@ static void schemaToJson(SSchema *schema, int32_t nCols, char *schemaJson){ } static int32_t mndRetrieveTopic(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock, int32_t rowsCapacity) { + if (pReq == NULL || pShow == NULL || pBlock == NULL) { + return TSDB_CODE_INVALID_MSG; + } SMnode *pMnode = pReq->info.node; SSdb *pSdb = pMnode->pSdb; int32_t numOfRows = 0; @@ -945,11 +989,15 @@ static int32_t mndRetrieveTopic(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBl } static void mndCancelGetNextTopic(SMnode *pMnode, void *pIter) { + if (pMnode == NULL) return; SSdb *pSdb = pMnode->pSdb; sdbCancelFetchByType(pSdb, pIter, SDB_TOPIC); } bool mndTopicExistsForDb(SMnode *pMnode, SDbObj *pDb) { + if (pMnode == NULL || pDb == NULL) { + return false; + } SSdb *pSdb = pMnode->pSdb; void *pIter = NULL; SMqTopicObj *pTopic = NULL; diff --git a/source/dnode/vnode/src/inc/tq.h b/source/dnode/vnode/src/inc/tq.h index 3c40100f9ddd..28a0d1175761 100644 --- a/source/dnode/vnode/src/inc/tq.h +++ b/source/dnode/vnode/src/inc/tq.h @@ -127,11 +127,11 @@ void tqPushEmptyDataRsp(STqHandle* pHandle, int32_t vgId); int32_t tqMetaOpen(STQ* pTq); void tqMetaClose(STQ* pTq); int32_t tqMetaSaveHandle(STQ* pTq, const char* key, const STqHandle* pHandle); -int32_t tqMetaSaveInfo(STQ* pTq, TTB* ttb, const void* key, int32_t kLen, const void* value, int32_t vLen); -int32_t tqMetaDeleteInfo(STQ* pTq, TTB* ttb, const void* key, int32_t kLen); +int32_t tqMetaSaveInfo(STQ* pTq, TTB* ttb, const void* key, uint32_t kLen, const void* value, uint32_t vLen); +int32_t tqMetaDeleteInfo(STQ* pTq, TTB* ttb, const void* key, uint32_t kLen); int32_t tqMetaCreateHandle(STQ* pTq, SMqRebVgReq* req, STqHandle* handle); -int32_t tqMetaDecodeCheckInfo(STqCheckInfo *info, void *pVal, int32_t vLen); -int32_t tqMetaDecodeOffsetInfo(STqOffset *info, void *pVal, int32_t vLen); +int32_t tqMetaDecodeCheckInfo(STqCheckInfo *info, void *pVal, uint32_t vLen); +int32_t tqMetaDecodeOffsetInfo(STqOffset *info, void *pVal, uint32_t vLen); int32_t tqMetaSaveOffset(STQ* pTq, STqOffset* pOffset); int32_t tqMetaGetHandle(STQ* pTq, const char* key, STqHandle** pHandle); int32_t tqMetaGetOffset(STQ* pTq, const char* subkey, STqOffset** pOffset); diff --git a/source/dnode/vnode/src/tq/tq.c b/source/dnode/vnode/src/tq/tq.c index a2347774412f..72cd0418dda9 100644 --- a/source/dnode/vnode/src/tq/tq.c +++ b/source/dnode/vnode/src/tq/tq.c @@ -25,11 +25,12 @@ // 2: wait to be inited or cleanup static int32_t tqInitialize(STQ* pTq); -static FORCE_INLINE bool tqIsHandleExec(STqHandle* pHandle) { return TMQ_HANDLE_STATUS_EXEC == pHandle->status; } -static FORCE_INLINE void tqSetHandleExec(STqHandle* pHandle) { pHandle->status = TMQ_HANDLE_STATUS_EXEC; } -static FORCE_INLINE void tqSetHandleIdle(STqHandle* pHandle) { pHandle->status = TMQ_HANDLE_STATUS_IDLE; } +static FORCE_INLINE bool tqIsHandleExec(STqHandle* pHandle) { return pHandle != NULL ? TMQ_HANDLE_STATUS_EXEC == pHandle->status : true; } +static FORCE_INLINE void tqSetHandleExec(STqHandle* pHandle) { if (pHandle != NULL) pHandle->status = TMQ_HANDLE_STATUS_EXEC; } +static FORCE_INLINE void tqSetHandleIdle(STqHandle* pHandle) { if (pHandle != NULL) pHandle->status = TMQ_HANDLE_STATUS_IDLE; } void tqDestroyTqHandle(void* data) { + if (data == NULL) return; STqHandle* pData = (STqHandle*)data; qDestroyTask(pData->execHandle.task); @@ -59,11 +60,17 @@ void tqDestroyTqHandle(void* data) { } static bool tqOffsetEqual(const STqOffset* pLeft, const STqOffset* pRight) { + if (pLeft == NULL || pRight == NULL) { + return false; + } return pLeft->val.type == TMQ_OFFSET__LOG && pRight->val.type == TMQ_OFFSET__LOG && pLeft->val.version == pRight->val.version; } int32_t tqOpen(const char* path, SVnode* pVnode) { + if (path == NULL || pVnode == NULL) { + return TSDB_CODE_INVALID_PARA; + } STQ* pTq = taosMemoryCalloc(1, sizeof(STQ)); if (pTq == NULL) { return terrno; @@ -104,6 +111,9 @@ int32_t tqOpen(const char* path, SVnode* pVnode) { } int32_t tqInitialize(STQ* pTq) { + if (pTq == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t vgId = TD_VID(pTq->pVnode); int32_t code = streamMetaOpen(pTq->path, pTq, tqBuildStreamTask, tqExpandStreamTask, vgId, -1, tqStartTaskCompleteCallback, &pTq->pStreamMeta); @@ -157,6 +167,9 @@ void tqNotifyClose(STQ* pTq) { } void tqPushEmptyDataRsp(STqHandle* pHandle, int32_t vgId) { + if (pHandle == NULL) { + return; + } int32_t code = 0; SMqPollReq req = {0}; code = tDeserializeSMqPollReq(pHandle->msg->pCont, pHandle->msg->contLen, &req); @@ -186,6 +199,9 @@ void tqPushEmptyDataRsp(STqHandle* pHandle, int32_t vgId) { int32_t tqSendDataRsp(STqHandle* pHandle, const SRpcMsg* pMsg, const SMqPollReq* pReq, const SMqDataRsp* pRsp, int32_t type, int32_t vgId) { + if (pHandle == NULL || pMsg == NULL || pReq == NULL || pRsp == NULL) { + return TSDB_CODE_INVALID_PARA; + } int64_t sver = 0, ever = 0; walReaderValidVersionRange(pHandle->execHandle.pTqReader->pWalReader, &sver, &ever); @@ -201,6 +217,9 @@ int32_t tqSendDataRsp(STqHandle* pHandle, const SRpcMsg* pMsg, const SMqPollReq* } int32_t tqProcessOffsetCommitReq(STQ* pTq, int64_t sversion, char* msg, int32_t msgLen) { + if (pTq == NULL) { + return TSDB_CODE_INVALID_PARA; + } SMqVgOffset vgOffset = {0}; int32_t vgId = TD_VID(pTq->pVnode); @@ -243,7 +262,7 @@ int32_t tqProcessOffsetCommitReq(STQ* pTq, int64_t sversion, char* msg, int32_t } if (tqMetaSaveInfo(pTq, pTq->pOffsetStore, pOffset->subKey, strlen(pOffset->subKey), msg, - msgLen - sizeof(vgOffset.consumerId)) < 0) { + msgLen >= sizeof(vgOffset.consumerId) ? msgLen - sizeof(vgOffset.consumerId) : 0) < 0) { terrno = TSDB_CODE_OUT_OF_MEMORY; return -1; } @@ -255,6 +274,9 @@ int32_t tqProcessOffsetCommitReq(STQ* pTq, int64_t sversion, char* msg, int32_t } int32_t tqProcessSeekReq(STQ* pTq, SRpcMsg* pMsg) { + if (pTq == NULL || pMsg == NULL) { + return TSDB_CODE_INVALID_PARA; + } SMqSeekReq req = {0}; int32_t vgId = TD_VID(pTq->pVnode); SRpcMsg rsp = {.info = pMsg->info}; @@ -297,6 +319,9 @@ int32_t tqProcessSeekReq(STQ* pTq, SRpcMsg* pMsg) { } int32_t tqCheckColModifiable(STQ* pTq, int64_t tbUid, int32_t colId) { + if (pTq == NULL) { + return TSDB_CODE_INVALID_PARA; + } void* pIter = NULL; while (1) { @@ -327,6 +352,9 @@ int32_t tqCheckColModifiable(STQ* pTq, int64_t tbUid, int32_t colId) { } int32_t tqProcessPollPush(STQ* pTq, SRpcMsg* pMsg) { + if (pTq == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t vgId = TD_VID(pTq->pVnode); taosWLockLatch(&pTq->lock); if (taosHashGetSize(pTq->pPushMgr) > 0) { @@ -362,6 +390,9 @@ int32_t tqProcessPollPush(STQ* pTq, SRpcMsg* pMsg) { } int32_t tqProcessPollReq(STQ* pTq, SRpcMsg* pMsg) { + if (pTq == NULL || pMsg == NULL) { + return TSDB_CODE_INVALID_PARA; + } SMqPollReq req = {0}; int code = tDeserializeSMqPollReq(pMsg->pCont, pMsg->contLen, &req); if (code < 0) { @@ -439,6 +470,9 @@ int32_t tqProcessPollReq(STQ* pTq, SRpcMsg* pMsg) { } int32_t tqProcessVgCommittedInfoReq(STQ* pTq, SRpcMsg* pMsg) { + if (pTq == NULL || pMsg == NULL) { + return TSDB_CODE_INVALID_PARA; + } void* data = POINTER_SHIFT(pMsg->pCont, sizeof(SMsgHead)); int32_t len = pMsg->contLen - sizeof(SMsgHead); @@ -485,6 +519,9 @@ int32_t tqProcessVgCommittedInfoReq(STQ* pTq, SRpcMsg* pMsg) { } int32_t tqProcessVgWalInfoReq(STQ* pTq, SRpcMsg* pMsg) { + if (pTq == NULL || pMsg == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; SMqPollReq req = {0}; if (tDeserializeSMqPollReq(pMsg->pCont, pMsg->contLen, &req) < 0) { @@ -570,6 +607,9 @@ int32_t tqProcessVgWalInfoReq(STQ* pTq, SRpcMsg* pMsg) { } int32_t tqProcessDeleteSubReq(STQ* pTq, int64_t sversion, char* msg, int32_t msgLen) { + if (pTq == NULL || msg == NULL) { + return TSDB_CODE_INVALID_PARA; + } SMqVDeleteReq* pReq = (SMqVDeleteReq*)msg; int32_t vgId = TD_VID(pTq->pVnode); @@ -616,8 +656,11 @@ int32_t tqProcessDeleteSubReq(STQ* pTq, int64_t sversion, char* msg, int32_t msg } int32_t tqProcessAddCheckInfoReq(STQ* pTq, int64_t sversion, char* msg, int32_t msgLen) { + if (pTq == NULL || msg == NULL) { + return TSDB_CODE_INVALID_PARA; + } STqCheckInfo info = {0}; - int32_t code = tqMetaDecodeCheckInfo(&info, msg, msgLen); + int32_t code = tqMetaDecodeCheckInfo(&info, msg, msgLen >= 0 ? msgLen : 0); if (code != 0) { return code; } @@ -628,10 +671,13 @@ int32_t tqProcessAddCheckInfoReq(STQ* pTq, int64_t sversion, char* msg, int32_t return code; } - return tqMetaSaveInfo(pTq, pTq->pCheckStore, info.topic, strlen(info.topic), msg, msgLen); + return tqMetaSaveInfo(pTq, pTq->pCheckStore, info.topic, strlen(info.topic), msg, msgLen >= 0 ? msgLen : 0); } int32_t tqProcessDelCheckInfoReq(STQ* pTq, int64_t sversion, char* msg, int32_t msgLen) { + if (pTq == NULL || msg == NULL) { + return TSDB_CODE_INVALID_PARA; + } if (taosHashRemove(pTq->pCheckInfo, msg, strlen(msg)) < 0) { return TSDB_CODE_TSC_INTERNAL_ERROR; } @@ -639,6 +685,9 @@ int32_t tqProcessDelCheckInfoReq(STQ* pTq, int64_t sversion, char* msg, int32_t } int32_t tqProcessSubscribeReq(STQ* pTq, int64_t sversion, char* msg, int32_t msgLen) { + if (pTq == NULL || msg == NULL) { + return TSDB_CODE_INVALID_PARA; + } int ret = 0; SMqRebVgReq req = {0}; SDecoder dc = {0}; diff --git a/source/dnode/vnode/src/tq/tqMeta.c b/source/dnode/vnode/src/tq/tqMeta.c index 89350e761faf..580828b08980 100644 --- a/source/dnode/vnode/src/tq/tqMeta.c +++ b/source/dnode/vnode/src/tq/tqMeta.c @@ -16,6 +16,9 @@ #include "tq.h" int32_t tEncodeSTqHandle(SEncoder* pEncoder, const STqHandle* pHandle) { + if (pEncoder == NULL || pHandle == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; int32_t lino; @@ -54,6 +57,9 @@ int32_t tEncodeSTqHandle(SEncoder* pEncoder, const STqHandle* pHandle) { } int32_t tDecodeSTqHandle(SDecoder* pDecoder, STqHandle* pHandle) { + if (pDecoder == NULL || pHandle == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; int32_t lino; @@ -91,7 +97,10 @@ int32_t tDecodeSTqHandle(SDecoder* pDecoder, STqHandle* pHandle) { return code; } -int32_t tqMetaDecodeCheckInfo(STqCheckInfo* info, void* pVal, int32_t vLen) { +int32_t tqMetaDecodeCheckInfo(STqCheckInfo* info, void* pVal, uint32_t vLen) { + if (info == NULL || pVal == NULL) { + return TSDB_CODE_INVALID_PARA; + } SDecoder decoder = {0}; tDecoderInit(&decoder, (uint8_t*)pVal, vLen); int32_t code = tDecodeSTqCheckInfo(&decoder, info); @@ -104,7 +113,10 @@ int32_t tqMetaDecodeCheckInfo(STqCheckInfo* info, void* pVal, int32_t vLen) { return code; } -int32_t tqMetaDecodeOffsetInfo(STqOffset* info, void* pVal, int32_t vLen) { +int32_t tqMetaDecodeOffsetInfo(STqOffset* info, void* pVal, uint32_t vLen) { + if (info == NULL || pVal == NULL) { + return TSDB_CODE_INVALID_PARA; + } SDecoder decoder = {0}; tDecoderInit(&decoder, (uint8_t*)pVal, vLen); int32_t code = tDecodeSTqOffset(&decoder, info); @@ -118,9 +130,12 @@ int32_t tqMetaDecodeOffsetInfo(STqOffset* info, void* pVal, int32_t vLen) { } int32_t tqMetaSaveOffset(STQ* pTq, STqOffset* pOffset) { + if (pTq == NULL || pOffset == NULL) { + return TSDB_CODE_INVALID_PARA; + } void* buf = NULL; int32_t code = TDB_CODE_SUCCESS; - int32_t vlen; + uint32_t vlen; SEncoder encoder = {0}; tEncodeSize(tEncodeSTqOffset, pOffset, vlen, code); if (code < 0) { @@ -147,7 +162,10 @@ int32_t tqMetaSaveOffset(STQ* pTq, STqOffset* pOffset) { return code; } -int32_t tqMetaSaveInfo(STQ* pTq, TTB* ttb, const void* key, int32_t kLen, const void* value, int32_t vLen) { +int32_t tqMetaSaveInfo(STQ* pTq, TTB* ttb, const void* key, uint32_t kLen, const void* value, uint32_t vLen) { + if (pTq == NULL || ttb == NULL || key == NULL || value == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = TDB_CODE_SUCCESS; TXN* txn = NULL; @@ -164,7 +182,10 @@ int32_t tqMetaSaveInfo(STQ* pTq, TTB* ttb, const void* key, int32_t kLen, const return code; } -int32_t tqMetaDeleteInfo(STQ* pTq, TTB* ttb, const void* key, int32_t kLen) { +int32_t tqMetaDeleteInfo(STQ* pTq, TTB* ttb, const void* key, uint32_t kLen) { + if (pTq == NULL || ttb == NULL || key == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = TDB_CODE_SUCCESS; TXN* txn = NULL; @@ -182,6 +203,9 @@ int32_t tqMetaDeleteInfo(STQ* pTq, TTB* ttb, const void* key, int32_t kLen) { } int32_t tqMetaGetOffset(STQ* pTq, const char* subkey, STqOffset** pOffset) { + if (pTq == NULL || subkey == NULL || pOffset == NULL) { + return TSDB_CODE_INVALID_PARA; + } void* data = taosHashGet(pTq->pOffset, subkey, strlen(subkey)); if (data == NULL) { int vLen = 0; @@ -191,7 +215,7 @@ int32_t tqMetaGetOffset(STQ* pTq, const char* subkey, STqOffset** pOffset) { } STqOffset offset = {0}; - if (tqMetaDecodeOffsetInfo(&offset, data, vLen) != TDB_CODE_SUCCESS) { + if (tqMetaDecodeOffsetInfo(&offset, data, vLen >= 0 ? vLen : 0) != TDB_CODE_SUCCESS) { tdbFree(data); return TSDB_CODE_OUT_OF_MEMORY; } @@ -214,8 +238,11 @@ int32_t tqMetaGetOffset(STQ* pTq, const char* subkey, STqOffset** pOffset) { } int32_t tqMetaSaveHandle(STQ* pTq, const char* key, const STqHandle* pHandle) { + if (pTq == NULL || key == NULL || pHandle == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = TDB_CODE_SUCCESS; - int32_t vlen; + uint32_t vlen; void* buf = NULL; SEncoder encoder = {0}; tEncodeSize(tEncodeSTqHandle, pHandle, vlen, code); @@ -238,7 +265,7 @@ int32_t tqMetaSaveHandle(STQ* pTq, const char* key, const STqHandle* pHandle) { goto END; } - TQ_ERR_GO_TO_END(tqMetaSaveInfo(pTq, pTq->pExecStore, key, (int)strlen(key), buf, vlen)); + TQ_ERR_GO_TO_END(tqMetaSaveInfo(pTq, pTq->pExecStore, key, strlen(key), buf, vlen)); END: tEncoderClear(&encoder); @@ -247,6 +274,9 @@ int32_t tqMetaSaveHandle(STQ* pTq, const char* key, const STqHandle* pHandle) { } static int tqMetaInitHandle(STQ* pTq, STqHandle* handle) { + if (pTq == NULL || handle == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = TDB_CODE_SUCCESS; SVnode* pVnode = pTq->pVnode; @@ -318,7 +348,10 @@ static int tqMetaInitHandle(STQ* pTq, STqHandle* handle) { return code; } -static int32_t tqMetaRestoreHandle(STQ* pTq, void* pVal, int vLen, STqHandle* handle) { +static int32_t tqMetaRestoreHandle(STQ* pTq, void* pVal, uint32_t vLen, STqHandle* handle) { + if (pTq == NULL || pVal == NULL || handle == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t vgId = TD_VID(pTq->pVnode); SDecoder decoder = {0}; int32_t code = TDB_CODE_SUCCESS; @@ -335,6 +368,9 @@ static int32_t tqMetaRestoreHandle(STQ* pTq, void* pVal, int vLen, STqHandle* ha } int32_t tqMetaCreateHandle(STQ* pTq, SMqRebVgReq* req, STqHandle* handle) { + if (pTq == NULL || req == NULL || handle == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t vgId = TD_VID(pTq->pVnode); (void)memcpy(handle->subKey, req->subKey, TSDB_SUBSCRIBE_KEY_LEN); @@ -375,6 +411,9 @@ int32_t tqMetaCreateHandle(STQ* pTq, SMqRebVgReq* req, STqHandle* handle) { } static int32_t tqMetaTransformInfo(TDB* pMetaDB, TTB* pOld, TTB* pNew) { + if (pMetaDB == NULL || pOld == NULL || pNew == NULL) { + return TSDB_CODE_INVALID_PARA; + } TBC* pCur = NULL; void* pKey = NULL; int kLen = 0; @@ -404,6 +443,9 @@ static int32_t tqMetaTransformInfo(TDB* pMetaDB, TTB* pOld, TTB* pNew) { } int32_t tqMetaGetHandle(STQ* pTq, const char* key, STqHandle** pHandle) { + if (pTq == NULL || key == NULL || pHandle == NULL) { + return TSDB_CODE_INVALID_PARA; + } void* data = taosHashGet(pTq->pHandle, key, strlen(key)); if (data == NULL) { int vLen = 0; @@ -412,7 +454,7 @@ int32_t tqMetaGetHandle(STQ* pTq, const char* key, STqHandle** pHandle) { return TSDB_CODE_MND_SUBSCRIBE_NOT_EXIST; } STqHandle handle = {0}; - if (tqMetaRestoreHandle(pTq, data, vLen, &handle) != 0) { + if (tqMetaRestoreHandle(pTq, data, vLen >= 0 ? vLen : 0, &handle) != 0) { tdbFree(data); tqDestroyTqHandle(&handle); return TSDB_CODE_OUT_OF_MEMORY; @@ -429,6 +471,9 @@ int32_t tqMetaGetHandle(STQ* pTq, const char* key, STqHandle** pHandle) { } int32_t tqMetaOpenTdb(STQ* pTq) { + if (pTq == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = TDB_CODE_SUCCESS; TQ_ERR_GO_TO_END(tdbOpen(pTq->path, 16 * 1024, 1, &pTq->pMetaDB, 0, 0, NULL)); TQ_ERR_GO_TO_END(tdbTbOpen("tq.db", -1, -1, NULL, pTq->pMetaDB, &pTq->pExecStore, 0)); @@ -440,6 +485,9 @@ int32_t tqMetaOpenTdb(STQ* pTq) { } static int32_t replaceTqPath(char** path) { + if (path == NULL || *path == NULL) { + return TSDB_CODE_INVALID_PARA; + } char* tpath = NULL; int32_t code = tqBuildFName(&tpath, *path, TQ_SUBSCRIBE_NAME); if (code != 0) { @@ -451,6 +499,9 @@ static int32_t replaceTqPath(char** path) { } static int32_t tqMetaRestoreCheckInfo(STQ* pTq) { + if (pTq == NULL) { + return TSDB_CODE_INVALID_PARA; + } TBC* pCur = NULL; void* pKey = NULL; int kLen = 0; @@ -463,7 +514,7 @@ static int32_t tqMetaRestoreCheckInfo(STQ* pTq) { TQ_ERR_GO_TO_END(tdbTbcMoveToFirst(pCur)); while (tdbTbcNext(pCur, &pKey, &kLen, &pVal, &vLen) == 0) { - TQ_ERR_GO_TO_END(tqMetaDecodeCheckInfo(&info, pVal, vLen)); + TQ_ERR_GO_TO_END(tqMetaDecodeCheckInfo(&info, pVal, vLen >= 0 ? vLen : 0)); TQ_ERR_GO_TO_END(taosHashPut(pTq->pCheckInfo, info.topic, strlen(info.topic), &info, sizeof(STqCheckInfo))); } info.colIdList = NULL; @@ -477,6 +528,9 @@ static int32_t tqMetaRestoreCheckInfo(STQ* pTq) { } int32_t tqMetaOpen(STQ* pTq) { + if (pTq == NULL) { + return TSDB_CODE_INVALID_PARA; + } char* maindb = NULL; char* offsetNew = NULL; int32_t code = TDB_CODE_SUCCESS; @@ -504,6 +558,9 @@ int32_t tqMetaOpen(STQ* pTq) { } int32_t tqMetaTransform(STQ* pTq) { + if (pTq == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = TDB_CODE_SUCCESS; TDB* pMetaDB = NULL; TTB* pExecStore = NULL; @@ -543,6 +600,9 @@ int32_t tqMetaTransform(STQ* pTq) { } void tqMetaClose(STQ* pTq) { + if (pTq == NULL) { + return; + } int32_t ret = 0; if (pTq->pExecStore) { tdbTbClose(pTq->pExecStore); diff --git a/source/dnode/vnode/src/tq/tqOffset.c b/source/dnode/vnode/src/tq/tqOffset.c index f392269b9f81..c42959971bb0 100644 --- a/source/dnode/vnode/src/tq/tqOffset.c +++ b/source/dnode/vnode/src/tq/tqOffset.c @@ -17,6 +17,9 @@ #include "tq.h" int32_t tqBuildFName(char** data, const char* path, char* name) { + if (data == NULL || path == NULL || name == NULL) { + return TSDB_CODE_INVALID_MSG; + } int32_t len = strlen(path) + strlen(name) + 2; char* fname = taosMemoryCalloc(1, len); if(fname == NULL) { @@ -33,6 +36,9 @@ int32_t tqBuildFName(char** data, const char* path, char* name) { } int32_t tqOffsetRestoreFromFile(STQ* pTq, char* name) { + if (pTq == NULL || name == NULL) { + return TSDB_CODE_INVALID_MSG; + } int32_t code = TDB_CODE_SUCCESS; void* pMemBuf = NULL; @@ -54,6 +60,10 @@ int32_t tqOffsetRestoreFromFile(STQ* pTq, char* name) { } total += INT_BYTES; size = htonl(size); + if (size <= 0) { + code = TSDB_CODE_INVALID_MSG; + goto END; + } pMemBuf = taosMemoryCalloc(1, size); if (pMemBuf == NULL) { code = terrno; diff --git a/source/dnode/vnode/src/tq/tqPush.c b/source/dnode/vnode/src/tq/tqPush.c index 386b61cce3bc..2b2667773a43 100644 --- a/source/dnode/vnode/src/tq/tqPush.c +++ b/source/dnode/vnode/src/tq/tqPush.c @@ -17,6 +17,9 @@ #include "vnd.h" int32_t tqProcessSubmitReqForSubscribe(STQ* pTq) { + if (pTq == NULL) { + return TSDB_CODE_INVALID_MSG; + } if (taosHashGetSize(pTq->pPushMgr) <= 0) { return 0; } @@ -64,6 +67,9 @@ int32_t tqPushMsg(STQ* pTq, tmsg_t msgType) { } int32_t tqRegisterPushHandle(STQ* pTq, void* handle, SRpcMsg* pMsg) { + if (pTq == NULL || handle == NULL || pMsg == NULL) { + return TSDB_CODE_INVALID_MSG; + } int32_t vgId = TD_VID(pTq->pVnode); STqHandle* pHandle = (STqHandle*)handle; @@ -101,6 +107,9 @@ int32_t tqRegisterPushHandle(STQ* pTq, void* handle, SRpcMsg* pMsg) { } void tqUnregisterPushHandle(STQ* pTq, void *handle) { + if (pTq == NULL || handle == NULL) { + return; + } STqHandle *pHandle = (STqHandle*)handle; int32_t vgId = TD_VID(pTq->pVnode); diff --git a/source/dnode/vnode/src/tq/tqRead.c b/source/dnode/vnode/src/tq/tqRead.c index d924e97ae396..c0c4c4a5a3d9 100644 --- a/source/dnode/vnode/src/tq/tqRead.c +++ b/source/dnode/vnode/src/tq/tqRead.c @@ -17,6 +17,9 @@ #include "tq.h" bool isValValidForTable(STqHandle* pHandle, SWalCont* pHead) { + if (pHandle == NULL || pHead == NULL) { + return false; + } if (pHandle->execHandle.subType != TOPIC_SUB_TYPE__TABLE) { return true; } @@ -198,6 +201,9 @@ bool isValValidForTable(STqHandle* pHandle, SWalCont* pHead) { } int32_t tqFetchLog(STQ* pTq, STqHandle* pHandle, int64_t* fetchOffset, uint64_t reqId) { + if (pTq == NULL || pHandle == NULL || fetchOffset == NULL) { + return -1; + } int32_t code = -1; int32_t vgId = TD_VID(pTq->pVnode); int64_t id = pHandle->pWalReader->readerId; @@ -259,9 +265,17 @@ int32_t tqFetchLog(STQ* pTq, STqHandle* pHandle, int64_t* fetchOffset, uint64_t return code; } -bool tqGetTablePrimaryKey(STqReader* pReader) { return pReader->hasPrimaryKey; } +bool tqGetTablePrimaryKey(STqReader* pReader) { + if (pReader == NULL) { + return false; + } + return pReader->hasPrimaryKey; +} void tqSetTablePrimaryKey(STqReader* pReader, int64_t uid) { + if (pReader == NULL) { + return; + } bool ret = false; SSchemaWrapper* schema = metaGetTableSchema(pReader->pVnodeMeta, uid, -1, 1, NULL); if (schema && schema->nCols >= 2 && schema->pSchema[1].flags & COL_IS_KEY) { @@ -272,6 +286,9 @@ void tqSetTablePrimaryKey(STqReader* pReader, int64_t uid) { } STqReader* tqReaderOpen(SVnode* pVnode) { + if (pVnode == NULL) { + return NULL; + } STqReader* pReader = taosMemoryCalloc(1, sizeof(STqReader)); if (pReader == NULL) { return NULL; @@ -323,6 +340,9 @@ void tqReaderClose(STqReader* pReader) { } int32_t tqReaderSeek(STqReader* pReader, int64_t ver, const char* id) { + if (pReader == NULL) { + return TSDB_CODE_INVALID_PARA; + } if (walReaderSeekVer(pReader->pWalReader, ver) < 0) { return -1; } @@ -406,6 +426,9 @@ int32_t extractMsgFromWal(SWalReader* pReader, void** pItem, int64_t maxVer, con } bool tqNextBlockInWal(STqReader* pReader, const char* id, int sourceExcluded) { + if (pReader == NULL) { + return false; + } SWalReader* pWalReader = pReader->pWalReader; int64_t st = taosGetTimestampMs(); @@ -462,6 +485,9 @@ bool tqNextBlockInWal(STqReader* pReader, const char* id, int sourceExcluded) { } int32_t tqReaderSetSubmitMsg(STqReader* pReader, void* msgStr, int32_t msgLen, int64_t ver) { +if (pReader == NULL) { + return TSDB_CODE_INVALID_PARA; + } pReader->msg.msgStr = msgStr; pReader->msg.msgLen = msgLen; pReader->msg.ver = ver; @@ -481,14 +507,29 @@ int32_t tqReaderSetSubmitMsg(STqReader* pReader, void* msgStr, int32_t msgLen, i return 0; } -SWalReader* tqGetWalReader(STqReader* pReader) { return pReader->pWalReader; } +SWalReader* tqGetWalReader(STqReader* pReader) { + if (pReader == NULL) { + return NULL; + } + return pReader->pWalReader; +} -SSDataBlock* tqGetResultBlock(STqReader* pReader) { return pReader->pResBlock; } +SSDataBlock* tqGetResultBlock(STqReader* pReader) { + if (pReader == NULL) { + return NULL; + } + return pReader->pResBlock; +} -int64_t tqGetResultBlockTime(STqReader* pReader) { return pReader->lastTs; } +int64_t tqGetResultBlockTime(STqReader* pReader) { + if (pReader == NULL) { + return 0; + } + return pReader->lastTs; +} bool tqNextBlockImpl(STqReader* pReader, const char* idstr) { - if (pReader->msg.msgStr == NULL) { + if (pReader == NULL || pReader->msg.msgStr == NULL) { return false; } @@ -525,7 +566,7 @@ bool tqNextBlockImpl(STqReader* pReader, const char* idstr) { } bool tqNextDataBlockFilterOut(STqReader* pReader, SHashObj* filterOutUids) { - if (pReader->msg.msgStr == NULL) return false; + if (pReader == NULL || pReader->msg.msgStr == NULL) return false; int32_t blockSz = taosArrayGetSize(pReader->submit.aSubmitTbData); while (pReader->nextBlk < blockSz) { @@ -548,6 +589,9 @@ bool tqNextDataBlockFilterOut(STqReader* pReader, SHashObj* filterOutUids) { } int32_t tqMaskBlock(SSchemaWrapper* pDst, SSDataBlock* pBlock, const SSchemaWrapper* pSrc, char* mask) { + if (pDst == NULL || pBlock == NULL || pSrc == NULL || mask == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; int32_t cnt = 0; @@ -577,6 +621,9 @@ int32_t tqMaskBlock(SSchemaWrapper* pDst, SSDataBlock* pBlock, const SSchemaWrap } static int32_t buildResSDataBlock(STqReader* pReader, SSchemaWrapper* pSchema, const SArray* pColIdList) { + if (pReader == NULL || pSchema == NULL || pColIdList == NULL) { + return TSDB_CODE_INVALID_PARA; + } SSDataBlock* pBlock = pReader->pResBlock; if (blockDataGetNumOfCols(pBlock) > 0) { blockDataDestroy(pBlock); @@ -659,6 +706,9 @@ static int32_t doSetVal(SColumnInfoData* pColumnInfoData, int32_t rowIndex, SCol } int32_t tqRetrieveDataBlock(STqReader* pReader, SSDataBlock** pRes, const char* id) { + if (pReader == NULL || pRes == NULL) { + return TSDB_CODE_INVALID_PARA; + } tqTrace("tq reader retrieve data block %p, index:%d", pReader->msg.msgStr, pReader->nextBlk); int32_t code = 0; int32_t line = 0; @@ -825,6 +875,10 @@ int32_t tqRetrieveDataBlock(STqReader* pReader, SSDataBlock** pRes, const char* static int32_t processBuildNew(STqReader* pReader, SSubmitTbData* pSubmitTbData, SArray* blocks, SArray* schemas, SSchemaWrapper* pSchemaWrapper, char* assigned, int32_t numOfRows, int32_t curRow, int32_t* lastRow) { + if (pReader == NULL || pSubmitTbData == NULL || blocks == NULL || schemas == NULL || pSchemaWrapper == NULL || + assigned == NULL || lastRow == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; SSchemaWrapper* pSW = NULL; SSDataBlock* block = NULL; @@ -860,6 +914,9 @@ static int32_t processBuildNew(STqReader* pReader, SSubmitTbData* pSubmitTbData, return code; } static int32_t tqProcessColData(STqReader* pReader, SSubmitTbData* pSubmitTbData, SArray* blocks, SArray* schemas) { + if (pReader == NULL || pSubmitTbData == NULL || blocks == NULL || schemas == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; int32_t curRow = 0; int32_t lastRow = 0; @@ -919,6 +976,9 @@ static int32_t tqProcessColData(STqReader* pReader, SSubmitTbData* pSubmitTbData } int32_t tqProcessRowData(STqReader* pReader, SSubmitTbData* pSubmitTbData, SArray* blocks, SArray* schemas) { + if (pReader == NULL || pSubmitTbData == NULL || blocks == NULL || schemas == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; STSchema* pTSchema = NULL; @@ -976,6 +1036,9 @@ int32_t tqProcessRowData(STqReader* pReader, SSubmitTbData* pSubmitTbData, SArra } int32_t tqRetrieveTaosxBlock(STqReader* pReader, SArray* blocks, SArray* schemas, SSubmitTbData** pSubmitTbDataRet, int64_t *createTime) { + if (pReader == NULL || blocks == NULL || schemas == NULL) { + return TSDB_CODE_INVALID_PARA; + } tqTrace("tq reader retrieve data block %p, %d", pReader->msg.msgStr, pReader->nextBlk); SSubmitTbData* pSubmitTbData = taosArrayGet(pReader->submit.aSubmitTbData, pReader->nextBlk); if (pSubmitTbData == NULL) { @@ -1007,9 +1070,17 @@ int32_t tqRetrieveTaosxBlock(STqReader* pReader, SArray* blocks, SArray* schemas } } -void tqReaderSetColIdList(STqReader* pReader, SArray* pColIdList) { pReader->pColIdList = pColIdList; } +void tqReaderSetColIdList(STqReader* pReader, SArray* pColIdList) { + if (pReader == NULL){ + return; + } + pReader->pColIdList = pColIdList; +} void tqReaderSetTbUidList(STqReader* pReader, const SArray* tbUidList, const char* id) { + if (pReader == NULL || tbUidList == NULL) { + return; + } if (pReader->tbIdHash) { taosHashClear(pReader->tbIdHash); } else { @@ -1032,6 +1103,9 @@ void tqReaderSetTbUidList(STqReader* pReader, const SArray* tbUidList, const cha } void tqReaderAddTbUidList(STqReader* pReader, const SArray* pTableUidList) { + if (pReader == NULL || pTableUidList == NULL) { + return; + } if (pReader->tbIdHash == NULL) { pReader->tbIdHash = taosHashInit(64, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BIGINT), true, HASH_ENTRY_LOCK); if (pReader->tbIdHash == NULL) { @@ -1051,12 +1125,23 @@ void tqReaderAddTbUidList(STqReader* pReader, const SArray* pTableUidList) { } bool tqReaderIsQueriedTable(STqReader* pReader, uint64_t uid) { - return taosHashGet(pReader->tbIdHash, &uid, sizeof(uint64_t)); + if (pReader == NULL) { + return false; + } + return taosHashGet(pReader->tbIdHash, &uid, sizeof(uint64_t)) != NULL; } -bool tqCurrentBlockConsumed(const STqReader* pReader) { return pReader->msg.msgStr == NULL; } +bool tqCurrentBlockConsumed(const STqReader* pReader) { + if (pReader == NULL) { + return false; + } + return pReader->msg.msgStr == NULL; +} void tqReaderRemoveTbUidList(STqReader* pReader, const SArray* tbUidList) { + if (pReader == NULL || tbUidList == NULL) { + return; + } for (int32_t i = 0; i < taosArrayGetSize(tbUidList); i++) { int64_t* pKey = (int64_t*)taosArrayGet(tbUidList, i); if (pKey && taosHashRemove(pReader->tbIdHash, pKey, sizeof(int64_t)) != 0) { @@ -1066,6 +1151,9 @@ void tqReaderRemoveTbUidList(STqReader* pReader, const SArray* tbUidList) { } int32_t tqUpdateTbUidList(STQ* pTq, const SArray* tbUidList, bool isAdd) { + if (pTq == NULL || tbUidList == NULL) { + return TSDB_CODE_INVALID_PARA; + } void* pIter = NULL; int32_t vgId = TD_VID(pTq->pVnode); diff --git a/source/dnode/vnode/src/tq/tqScan.c b/source/dnode/vnode/src/tq/tqScan.c index 39eaac39b317..3419cd002078 100644 --- a/source/dnode/vnode/src/tq/tqScan.c +++ b/source/dnode/vnode/src/tq/tqScan.c @@ -16,6 +16,9 @@ #include "tq.h" int32_t tqAddBlockDataToRsp(const SSDataBlock* pBlock, SMqDataRsp* pRsp, int32_t numOfCols, int8_t precision) { + if (pBlock == NULL || pRsp == NULL) { + return TSDB_CODE_INVALID_PARA; + } size_t dataEncodeBufSize = blockGetEncodeSize(pBlock); int32_t dataStrLen = sizeof(SRetrieveTableRspForTmq) + dataEncodeBufSize; void* buf = taosMemoryCalloc(1, dataStrLen); @@ -47,18 +50,10 @@ int32_t tqAddBlockDataToRsp(const SSDataBlock* pBlock, SMqDataRsp* pRsp, int32_t return TSDB_CODE_SUCCESS; } -static int32_t tqAddBlockSchemaToRsp(const STqExecHandle* pExec, SMqDataRsp* pRsp) { - SSchemaWrapper* pSW = tCloneSSchemaWrapper(pExec->pTqReader->pSchemaWrapper); - if (pSW == NULL) { - return terrno; - } - if (taosArrayPush(pRsp->blockSchema, &pSW) == NULL) { - return terrno; - } - return 0; -} - static int32_t tqAddTbNameToRsp(const STQ* pTq, int64_t uid, SMqDataRsp* pRsp, int32_t n) { + if (pRsp == NULL || pTq == NULL) { + return TSDB_CODE_INVALID_PARA; + } SMetaReader mr = {0}; metaReaderDoInit(&mr, pTq->pVnode->pMeta, META_READER_LOCK); @@ -84,6 +79,9 @@ static int32_t tqAddTbNameToRsp(const STQ* pTq, int64_t uid, SMqDataRsp* pRsp, i } int32_t getDataBlock(qTaskInfo_t task, const STqHandle* pHandle, int32_t vgId, SSDataBlock** res) { + if (task == NULL || pHandle == NULL || res == NULL) { + return TSDB_CODE_INVALID_PARA; + } uint64_t ts = 0; qStreamSetOpen(task); @@ -99,6 +97,9 @@ int32_t getDataBlock(qTaskInfo_t task, const STqHandle* pHandle, int32_t vgId, S } int32_t tqScanData(STQ* pTq, STqHandle* pHandle, SMqDataRsp* pRsp, STqOffsetVal* pOffset, const SMqPollReq* pRequest) { + if (pTq == NULL || pHandle == NULL || pRsp == NULL || pOffset == NULL || pRequest == NULL){ + return TSDB_CODE_INVALID_PARA; + } int32_t vgId = TD_VID(pTq->pVnode); int32_t code = 0; int32_t line = 0; @@ -189,6 +190,9 @@ int32_t tqScanData(STQ* pTq, STqHandle* pHandle, SMqDataRsp* pRsp, STqOffsetVal* } int32_t tqScanTaosx(STQ* pTq, const STqHandle* pHandle, SMqDataRsp* pRsp, SMqBatchMetaRsp* pBatchMetaRsp, STqOffsetVal* pOffset) { + if (pTq == NULL || pHandle == NULL || pRsp == NULL || pBatchMetaRsp == NULL || pOffset == NULL) { + return TSDB_CODE_INVALID_PARA; + } const STqExecHandle* pExec = &pHandle->execHandle; qTaskInfo_t task = pExec->task; int code = qStreamPrepareScan(task, pOffset, pHandle->execHandle.subType); @@ -280,6 +284,9 @@ int32_t tqScanTaosx(STQ* pTq, const STqHandle* pHandle, SMqDataRsp* pRsp, SMqBat } static int32_t buildCreateTbInfo(SMqDataRsp* pRsp, SVCreateTbReq* pCreateTbReq){ + if (pRsp == NULL || pCreateTbReq == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t code = 0; void* createReq = NULL; if (pRsp->createTableNum == 0) { @@ -329,6 +336,9 @@ static int32_t buildCreateTbInfo(SMqDataRsp* pRsp, SVCreateTbReq* pCreateTbReq){ } static void tqProcessSubData(STQ* pTq, STqHandle* pHandle, SMqDataRsp* pRsp, int32_t* totalRows, int8_t sourceExcluded){ + if (pTq == NULL || pHandle == NULL || pRsp == NULL || totalRows == NULL) { + return; + } int32_t code = 0; STqExecHandle* pExec = &pHandle->execHandle; STqReader* pReader = pExec->pTqReader; @@ -407,6 +417,9 @@ static void tqProcessSubData(STQ* pTq, STqHandle* pHandle, SMqDataRsp* pRsp, int int32_t tqTaosxScanLog(STQ* pTq, STqHandle* pHandle, SPackedData submit, SMqDataRsp* pRsp, int32_t* totalRows, int8_t sourceExcluded) { + if (pTq == NULL || pHandle == NULL || pRsp == NULL || totalRows == NULL) { + return TSDB_CODE_INVALID_PARA; + } STqExecHandle* pExec = &pHandle->execHandle; int32_t code = 0; STqReader* pReader = pExec->pTqReader; diff --git a/source/dnode/vnode/src/tq/tqSnapshot.c b/source/dnode/vnode/src/tq/tqSnapshot.c index cfa97def74b9..219ea4b6b403 100644 --- a/source/dnode/vnode/src/tq/tqSnapshot.c +++ b/source/dnode/vnode/src/tq/tqSnapshot.c @@ -27,6 +27,9 @@ struct STqSnapReader { }; int32_t tqSnapReaderOpen(STQ* pTq, int64_t sver, int64_t ever, int8_t type, STqSnapReader** ppReader) { + if (pTq == NULL || ppReader == NULL) { + return TSDB_CODE_INVALID_MSG; + } int32_t code = 0; STqSnapReader* pReader = NULL; @@ -77,12 +80,18 @@ int32_t tqSnapReaderOpen(STQ* pTq, int64_t sver, int64_t ever, int8_t type, STqS } void tqSnapReaderClose(STqSnapReader** ppReader) { + if (ppReader == NULL || *ppReader == NULL) { + return; + } tdbTbcClose((*ppReader)->pCur); taosMemoryFree(*ppReader); *ppReader = NULL; } int32_t tqSnapRead(STqSnapReader* pReader, uint8_t** ppData) { + if (pReader == NULL || ppData == NULL) { + return TSDB_CODE_INVALID_MSG; + } int32_t code = 0; void* pKey = NULL; void* pVal = NULL; @@ -126,6 +135,9 @@ struct STqSnapWriter { }; int32_t tqSnapWriterOpen(STQ* pTq, int64_t sver, int64_t ever, STqSnapWriter** ppWriter) { + if (pTq == NULL || ppWriter == NULL) { + return TSDB_CODE_INVALID_MSG; + } int32_t code = 0; STqSnapWriter* pWriter = NULL; @@ -156,6 +168,9 @@ int32_t tqSnapWriterOpen(STQ* pTq, int64_t sver, int64_t ever, STqSnapWriter** p } int32_t tqSnapWriterClose(STqSnapWriter** ppWriter, int8_t rollback) { + if (ppWriter == NULL || *ppWriter == NULL) { + return TSDB_CODE_INVALID_MSG; + } int32_t code = 0; STqSnapWriter* pWriter = *ppWriter; STQ* pTq = pWriter->pTq; @@ -180,6 +195,9 @@ int32_t tqSnapWriterClose(STqSnapWriter** ppWriter, int8_t rollback) { } int32_t tqSnapHandleWrite(STqSnapWriter* pWriter, uint8_t* pData, uint32_t nData) { + if (pWriter == NULL || pData == NULL || nData < sizeof(SSnapDataHdr)) { + return TSDB_CODE_INVALID_MSG; + } int32_t code = 0; STQ* pTq = pWriter->pTq; SDecoder decoder = {0}; @@ -190,7 +208,7 @@ int32_t tqSnapHandleWrite(STqSnapWriter* pWriter, uint8_t* pData, uint32_t nData code = tDecodeSTqHandle(pDecoder, &handle); if (code) goto end; taosWLockLatch(&pTq->lock); - code = tqMetaSaveInfo(pTq, pTq->pExecStore, handle.subKey, (int)strlen(handle.subKey), pData + sizeof(SSnapDataHdr), + code = tqMetaSaveInfo(pTq, pTq->pExecStore, handle.subKey, strlen(handle.subKey), pData + sizeof(SSnapDataHdr), nData - sizeof(SSnapDataHdr)); taosWUnLockLatch(&pTq->lock); @@ -202,6 +220,9 @@ int32_t tqSnapHandleWrite(STqSnapWriter* pWriter, uint8_t* pData, uint32_t nData } int32_t tqSnapCheckInfoWrite(STqSnapWriter* pWriter, uint8_t* pData, uint32_t nData) { + if (pWriter == NULL || pData == NULL || nData < sizeof(SSnapDataHdr)) { + return TSDB_CODE_INVALID_MSG; + } int32_t code = 0; STQ* pTq = pWriter->pTq; STqCheckInfo info = {0}; @@ -223,6 +244,9 @@ int32_t tqSnapCheckInfoWrite(STqSnapWriter* pWriter, uint8_t* pData, uint32_t nD } int32_t tqSnapOffsetWrite(STqSnapWriter* pWriter, uint8_t* pData, uint32_t nData) { + if (pWriter == NULL || pData == NULL || nData < sizeof(SSnapDataHdr)) { + return TSDB_CODE_INVALID_MSG; + } int32_t code = 0; STQ* pTq = pWriter->pTq; diff --git a/source/dnode/vnode/src/tq/tqUtil.c b/source/dnode/vnode/src/tq/tqUtil.c index a92049e5f3ee..f6a8563c7037 100644 --- a/source/dnode/vnode/src/tq/tqUtil.c +++ b/source/dnode/vnode/src/tq/tqUtil.c @@ -21,6 +21,9 @@ static int32_t tqSendBatchMetaPollRsp(STqHandle* pHandle, const SRpcMsg* pMsg, c const SMqBatchMetaRsp* pRsp, int32_t vgId); int32_t tqInitDataRsp(SMqDataRsp* pRsp, STqOffsetVal pOffset) { + if (pRsp == NULL) { + return TSDB_CODE_INVALID_PARA; + } pRsp->blockData = taosArrayInit(0, sizeof(void*)); pRsp->blockDataLen = taosArrayInit(0, sizeof(int32_t)); @@ -41,6 +44,9 @@ void tqUpdateNodeStage(STQ* pTq, bool isLeader) { } static int32_t tqInitTaosxRsp(SMqDataRsp* pRsp, STqOffsetVal pOffset) { + if (pRsp == NULL) { + return TSDB_CODE_INVALID_PARA; + } tOffsetCopy(&pRsp->reqOffset, &pOffset); tOffsetCopy(&pRsp->rspOffset, &pOffset); @@ -81,6 +87,9 @@ static int32_t tqInitTaosxRsp(SMqDataRsp* pRsp, STqOffsetVal pOffset) { static int32_t extractResetOffsetVal(STqOffsetVal* pOffsetVal, STQ* pTq, STqHandle* pHandle, const SMqPollReq* pRequest, SRpcMsg* pMsg, bool* pBlockReturned) { + if (pOffsetVal == NULL || pTq == NULL || pHandle == NULL || pRequest == NULL || pMsg == NULL || pBlockReturned == NULL) { + return TSDB_CODE_INVALID_PARA; + } uint64_t consumerId = pRequest->consumerId; STqOffset* pOffset = NULL; int32_t code = tqMetaGetOffset(pTq, pRequest->subKey, &pOffset); @@ -142,6 +151,9 @@ static int32_t extractResetOffsetVal(STqOffsetVal* pOffsetVal, STQ* pTq, STqHand static int32_t extractDataAndRspForNormalSubscribe(STQ* pTq, STqHandle* pHandle, const SMqPollReq* pRequest, SRpcMsg* pMsg, STqOffsetVal* pOffset) { + if (pTq == NULL || pHandle == NULL || pRequest == NULL || pMsg == NULL || pOffset == NULL) { + return TSDB_CODE_INVALID_PARA; + } uint64_t consumerId = pRequest->consumerId; int32_t vgId = TD_VID(pTq->pVnode); terrno = 0; @@ -212,6 +224,9 @@ static void tDeleteCommon(void* parm) {} static int32_t extractDataAndRspForDbStbSubscribe(STQ* pTq, STqHandle* pHandle, const SMqPollReq* pRequest, SRpcMsg* pMsg, STqOffsetVal* offset) { + if (pTq == NULL || pHandle == NULL || pRequest == NULL || pMsg == NULL || offset == NULL) { + return TSDB_CODE_INVALID_PARA; + } int32_t vgId = TD_VID(pTq->pVnode); SMqDataRsp taosxRsp = {0}; SMqBatchMetaRsp btMetaRsp = {0}; @@ -410,6 +425,9 @@ static int32_t extractDataAndRspForDbStbSubscribe(STQ* pTq, STqHandle* pHandle, } int32_t tqExtractDataForMq(STQ* pTq, STqHandle* pHandle, const SMqPollReq* pRequest, SRpcMsg* pMsg) { + if (pTq == NULL || pHandle == NULL || pRequest == NULL || pMsg == NULL) { + return TSDB_CODE_TMQ_INVALID_MSG; + } int32_t code = 0; STqOffsetVal reqOffset = {0}; tOffsetCopy(&reqOffset, &pRequest->reqOffset); @@ -445,6 +463,9 @@ int32_t tqExtractDataForMq(STQ* pTq, STqHandle* pHandle, const SMqPollReq* pRequ static void initMqRspHead(SMqRspHead* pMsgHead, int32_t type, int32_t epoch, int64_t consumerId, int64_t sver, int64_t ever) { + if (pMsgHead == NULL) { + return; + } pMsgHead->consumerId = consumerId; pMsgHead->epoch = epoch; pMsgHead->mqMsgType = type; @@ -454,6 +475,9 @@ static void initMqRspHead(SMqRspHead* pMsgHead, int32_t type, int32_t epoch, int int32_t tqSendBatchMetaPollRsp(STqHandle* pHandle, const SRpcMsg* pMsg, const SMqPollReq* pReq, const SMqBatchMetaRsp* pRsp, int32_t vgId) { + if (pHandle == NULL || pMsg == NULL || pReq == NULL || pRsp == NULL) { + return TSDB_CODE_TMQ_INVALID_MSG; + } int32_t len = 0; int32_t code = 0; tEncodeSize(tEncodeMqBatchMetaRsp, pRsp, len, code); @@ -491,6 +515,9 @@ int32_t tqSendBatchMetaPollRsp(STqHandle* pHandle, const SRpcMsg* pMsg, const SM int32_t tqSendMetaPollRsp(STqHandle* pHandle, const SRpcMsg* pMsg, const SMqPollReq* pReq, const SMqMetaRsp* pRsp, int32_t vgId) { + if (pHandle == NULL || pMsg == NULL || pReq == NULL || pRsp == NULL) { + return TSDB_CODE_TMQ_INVALID_MSG; + } int32_t len = 0; int32_t code = 0; tEncodeSize(tEncodeMqMetaRsp, pRsp, len, code); @@ -529,6 +556,9 @@ int32_t tqSendMetaPollRsp(STqHandle* pHandle, const SRpcMsg* pMsg, const SMqPoll int32_t tqDoSendDataRsp(const SRpcHandleInfo* pRpcHandleInfo, const SMqDataRsp* pRsp, int32_t epoch, int64_t consumerId, int32_t type, int64_t sver, int64_t ever) { + if (pRpcHandleInfo == NULL || pRsp == NULL) { + return TSDB_CODE_TMQ_INVALID_MSG; + } int32_t len = 0; int32_t code = 0; From e598486b103001973d7b537d3bd0a969fa2bb6f6 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Thu, 12 Dec 2024 16:44:14 +0800 Subject: [PATCH 03/30] feat:[TD-32166] check input params for tmq --- source/dnode/mnode/impl/src/mndSubscribe.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/dnode/mnode/impl/src/mndSubscribe.c b/source/dnode/mnode/impl/src/mndSubscribe.c index ad36d48a1fa3..da36dc30e437 100644 --- a/source/dnode/mnode/impl/src/mndSubscribe.c +++ b/source/dnode/mnode/impl/src/mndSubscribe.c @@ -657,7 +657,7 @@ static int32_t mndDoRebalance(SMnode *pMnode, const SMqRebInputObj *pInput, SMqR } static int32_t presistConsumerByType(STrans *pTrans, SArray *consumers, int8_t type, char *cgroup, char *topic) { - if (pTrans == NULL || consumers == NULL || cgroup == NULL || topic == NULL) { + if (pTrans == NULL || consumers == NULL || cgroup == NULL) { return TSDB_CODE_INVALID_PARA; } int32_t code = 0; From d00944c716caaed5cb1ca635385f42258dd8cca2 Mon Sep 17 00:00:00 2001 From: Minglei Jin Date: Wed, 18 Dec 2024 15:26:57 +0800 Subject: [PATCH 04/30] fix(tdb/ofp): use ofp's max local instead of current page's --- source/libs/tdb/src/db/tdbBtree.c | 2 +- tests/script/tsim/tagindex/indexOverflow.sim | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/source/libs/tdb/src/db/tdbBtree.c b/source/libs/tdb/src/db/tdbBtree.c index 2333a4a6a2e4..19a3f211b1aa 100644 --- a/source/libs/tdb/src/db/tdbBtree.c +++ b/source/libs/tdb/src/db/tdbBtree.c @@ -1491,7 +1491,7 @@ static int tdbBtreeDecodePayload(SPage *pPage, const SCell *pCell, int nHeader, ofpCell = tdbPageGetCell(ofp, 0); int lastKeyPage = 0; - if (nLeftKey <= maxLocal - sizeof(SPgno)) { + if (nLeftKey <= ofp->maxLocal - sizeof(SPgno)) { bytes = nLeftKey; lastKeyPage = 1; lastKeyPageSpace = ofp->maxLocal - sizeof(SPgno) - nLeftKey; diff --git a/tests/script/tsim/tagindex/indexOverflow.sim b/tests/script/tsim/tagindex/indexOverflow.sim index 9e297099d1d0..99b9023f11fa 100644 --- a/tests/script/tsim/tagindex/indexOverflow.sim +++ b/tests/script/tsim/tagindex/indexOverflow.sim @@ -76,7 +76,23 @@ while $i < $maxTinyLimit $i = $i + 1 endw +print =============== create database with big tags +$bigTagDb = db +$bigTagStb = stb +$bigTagTb = tb +sql create database $bigTagDb +sql use $bigTagDb +sql create table $bigTagStb (ts timestamp, f1 int) tags(t1 nchar(100), t2 nchar(800), t3 nchar(800), t4 nchar(800)); +sql insert into $bigTagTb using $bigTagStb tags("abc", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") values(now, 1); -system sh/exec.sh -n dnode1 -s stop -x SIGINT \ No newline at end of file +$tb = $bigTagTb . 2 +sql insert into $tb using $bigTagStb tags("abc", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") values(now, 1); + +$tb = $bigTagTb . 3 +sql insert into $tb using $bigTagStb tags("abc", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") values(now, 1); + + + +system sh/exec.sh -n dnode1 -s stop -x SIGINT From c2baa7e177c378572c248663e4c55fdcc28a381f Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Wed, 18 Dec 2024 17:36:06 +0800 Subject: [PATCH 05/30] fix:ci error --- source/client/src/clientRawBlockWrite.c | 7 +++---- source/dnode/mnode/impl/src/mndSubscribe.c | 6 ++++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/source/client/src/clientRawBlockWrite.c b/source/client/src/clientRawBlockWrite.c index 212623d6b50a..8570b675447e 100644 --- a/source/client/src/clientRawBlockWrite.c +++ b/source/client/src/clientRawBlockWrite.c @@ -77,9 +77,8 @@ static tb_uid_t processSuid(tb_uid_t suid, char* db) { } static void buildCreateTableJson(SSchemaWrapper* schemaRow, SSchemaWrapper* schemaTag, char* name, int64_t id, int8_t t, SColCmprWrapper* pColCmprRow, cJSON** pJson) { - if (schemaRow == NULL || schemaTag == NULL || name == NULL || pColCmprRow == NULL || pJson == NULL) { - uError("invalid parameter, schemaRow:%p, schemaTag:%p, name:%p, pColCmprRow:%p, pJson:%p", schemaRow, schemaTag, - name, pColCmprRow, pJson); + if (schemaRow == NULL || name == NULL || pColCmprRow == NULL || pJson == NULL) { + uError("invalid parameter, schemaRow:%p, name:%p, pColCmprRow:%p, pJson:%p", schemaRow, name, pColCmprRow, pJson); return; } int32_t code = TSDB_CODE_SUCCESS; @@ -2570,7 +2569,7 @@ static int32_t writeRawImpl(TAOS* taos, void* buf, uint32_t len, uint16_t type) int32_t tmq_write_raw(TAOS* taos, tmq_raw_data raw) { if (taos == NULL || raw.raw == NULL || raw.raw_len <= 0) { - uError("taos:%p or data:%p is NULL or raw_len <= 0", taos, raw.raw); + SET_ERROR_MSG("taos:%p or data:%p is NULL or raw_len <= 0", taos, raw.raw); return TSDB_CODE_INVALID_PARA; } diff --git a/source/dnode/mnode/impl/src/mndSubscribe.c b/source/dnode/mnode/impl/src/mndSubscribe.c index da36dc30e437..e5ab02996a3b 100644 --- a/source/dnode/mnode/impl/src/mndSubscribe.c +++ b/source/dnode/mnode/impl/src/mndSubscribe.c @@ -1446,8 +1446,7 @@ int32_t mndDropSubByTopic(SMnode *pMnode, STrans *pTrans, const char *topicName) static int32_t buildResult(SSDataBlock *pBlock, int32_t *numOfRows, int64_t consumerId, const char* user, const char* fqdn, const char *topic, const char *cgroup, SArray *vgs, SArray *offsetRows) { - if (pBlock == NULL || numOfRows == NULL || topic == NULL || - cgroup == NULL || vgs == NULL || offsetRows == NULL){ + if (pBlock == NULL || numOfRows == NULL || topic == NULL || cgroup == NULL){ return TSDB_CODE_INVALID_PARA; } int32_t code = 0; @@ -1601,6 +1600,9 @@ int32_t mndRetrieveSubscribe(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock return numOfRows; END: + taosRUnLockLatch(&pSub->lock); + sdbRelease(pSdb, pSub); + return code; } From 7baf97d70bde0d0bf1263f1ce879dfee6869695c Mon Sep 17 00:00:00 2001 From: dapan1121 Date: Wed, 18 Dec 2024 18:55:14 +0800 Subject: [PATCH 06/30] fix: add test scripts --- source/libs/catalog/CMakeLists.txt | 6 +++--- source/libs/catalog/test/catalogTests.cpp | 2 +- tests/script/api/test.sh | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+), 4 deletions(-) create mode 100755 tests/script/api/test.sh diff --git a/source/libs/catalog/CMakeLists.txt b/source/libs/catalog/CMakeLists.txt index 179781c2c920..70528c1c88d9 100644 --- a/source/libs/catalog/CMakeLists.txt +++ b/source/libs/catalog/CMakeLists.txt @@ -11,6 +11,6 @@ target_link_libraries( PRIVATE os util transport qcom nodes ) -# if(${BUILD_TEST}) -# ADD_SUBDIRECTORY(test) -# endif(${BUILD_TEST}) +if(${BUILD_TEST}) + ADD_SUBDIRECTORY(test) +endif(${BUILD_TEST}) diff --git a/source/libs/catalog/test/catalogTests.cpp b/source/libs/catalog/test/catalogTests.cpp index 25c82b84526c..7b0504504d68 100644 --- a/source/libs/catalog/test/catalogTests.cpp +++ b/source/libs/catalog/test/catalogTests.cpp @@ -162,7 +162,7 @@ void ctgTestInitLogFile() { (void)ctgdEnableDebug("cache", true); (void)ctgdEnableDebug("lock", true); - if (taosInitLog(defaultLogFileNamePrefix, maxLogFileNum) < 0) { + if (taosInitLog(defaultLogFileNamePrefix, 1, false) < 0) { (void)printf("failed to open log file in directory:%s\n", tsLogDir); ASSERT(0); } diff --git a/tests/script/api/test.sh b/tests/script/api/test.sh new file mode 100755 index 000000000000..8b93484fe13f --- /dev/null +++ b/tests/script/api/test.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +make clean + +make + +pgrep taosd || taosd >> /dev/null 2>&1 & + +sleep 10 + +./dbTableRoute localhost +./batchprepare localhost +./stmt-crash localhost +./insertSameTs localhost +./passwdTest localhost +./whiteListTest localhost +./tmqViewTest + From 23f5374975a464bbe3dda53fd4d10fbed951c8ef Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Wed, 18 Dec 2024 21:02:19 +0800 Subject: [PATCH 07/30] merge: set git tags --- cmake/taosadapter_CMakeLists.txt.in | 2 +- cmake/taostools_CMakeLists.txt.in | 2 +- cmake/taosws_CMakeLists.txt.in | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/taosadapter_CMakeLists.txt.in b/cmake/taosadapter_CMakeLists.txt.in index 13826a1a7487..ef6ed4af1d11 100644 --- a/cmake/taosadapter_CMakeLists.txt.in +++ b/cmake/taosadapter_CMakeLists.txt.in @@ -2,7 +2,7 @@ # taosadapter ExternalProject_Add(taosadapter GIT_REPOSITORY https://github.com/taosdata/taosadapter.git - GIT_TAG main + GIT_TAG 3.0 SOURCE_DIR "${TD_SOURCE_DIR}/tools/taosadapter" BINARY_DIR "" #BUILD_IN_SOURCE TRUE diff --git a/cmake/taostools_CMakeLists.txt.in b/cmake/taostools_CMakeLists.txt.in index 9bbda8309fcb..9a6a5329ae3a 100644 --- a/cmake/taostools_CMakeLists.txt.in +++ b/cmake/taostools_CMakeLists.txt.in @@ -2,7 +2,7 @@ # taos-tools ExternalProject_Add(taos-tools GIT_REPOSITORY https://github.com/taosdata/taos-tools.git - GIT_TAG main + GIT_TAG 3.0 SOURCE_DIR "${TD_SOURCE_DIR}/tools/taos-tools" BINARY_DIR "" #BUILD_IN_SOURCE TRUE diff --git a/cmake/taosws_CMakeLists.txt.in b/cmake/taosws_CMakeLists.txt.in index b013d4591198..17446d184db5 100644 --- a/cmake/taosws_CMakeLists.txt.in +++ b/cmake/taosws_CMakeLists.txt.in @@ -2,7 +2,7 @@ # taosws-rs ExternalProject_Add(taosws-rs GIT_REPOSITORY https://github.com/taosdata/taos-connector-rust.git - GIT_TAG main + GIT_TAG 3.0 SOURCE_DIR "${TD_SOURCE_DIR}/tools/taosws-rs" BINARY_DIR "" #BUILD_IN_SOURCE TRUE From ce69387a43af1c57a8c1da602c4ab363cd1872f3 Mon Sep 17 00:00:00 2001 From: 54liuyao <54liuyao@163.com> Date: Thu, 19 Dec 2024 10:32:32 +0800 Subject: [PATCH 08/30] ci(stream):adjust stream ci test --- include/common/tglobal.h | 1 + source/common/src/tglobal.c | 10 ++++- source/libs/parser/src/parTranslater.c | 2 +- tests/parallel_test/cases.task | 44 ++++++++++--------- .../tsim/stream/streamInterpDelete0.sim | 2 + .../tsim/stream/streamInterpDelete1.sim | 2 + .../tsim/stream/streamInterpDelete2.sim | 2 + .../script/tsim/stream/streamInterpError.sim | 2 + .../tsim/stream/streamInterpHistory.sim | 2 + .../script/tsim/stream/streamInterpLarge.sim | 2 + .../tsim/stream/streamInterpLinear0.sim | 2 + .../script/tsim/stream/streamInterpNext0.sim | 2 + .../script/tsim/stream/streamInterpOther.sim | 2 + .../tsim/stream/streamInterpPartitionBy0.sim | 2 + .../tsim/stream/streamInterpPartitionBy1.sim | 2 + .../tsim/stream/streamInterpPrimaryKey0.sim | 2 + .../tsim/stream/streamInterpPrimaryKey1.sim | 2 + .../tsim/stream/streamInterpPrimaryKey3.sim | 2 + .../script/tsim/stream/streamInterpUpdate.sim | 2 + .../tsim/stream/streamInterpUpdate1.sim | 2 + .../tsim/stream/streamInterpUpdate2.sim | 2 + .../script/tsim/stream/streamInterpValue0.sim | 2 + 22 files changed, 70 insertions(+), 23 deletions(-) diff --git a/include/common/tglobal.h b/include/common/tglobal.h index e6333d2ddca1..8180243ff08d 100644 --- a/include/common/tglobal.h +++ b/include/common/tglobal.h @@ -291,6 +291,7 @@ extern bool tsFilterScalarMode; extern int32_t tsMaxStreamBackendCache; extern int32_t tsPQSortMemThreshold; extern int32_t tsResolveFQDNRetryTime; +extern bool tsStreamCoverage; extern bool tsExperimental; // #define NEEDTO_COMPRESSS_MSG(size) (tsCompressMsgSize != -1 && (size) > tsCompressMsgSize) diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index 905dcb4fda1a..83747b11e68c 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -328,6 +328,7 @@ int64_t tsStreamBufferSize = 128 * 1024 * 1024; bool tsFilterScalarMode = false; int tsResolveFQDNRetryTime = 100; // seconds int tsStreamAggCnt = 100000; +bool tsStreamCoverage = false; bool tsUpdateCacheBatch = true; @@ -733,6 +734,9 @@ static int32_t taosAddClientCfg(SConfig *pCfg) { CFG_DYN_CLIENT, CFG_CATEGORY_LOCAL)); TAOS_CHECK_RETURN(cfgAddInt32(pCfg, "tsmaDataDeleteMark", tsmaDataDeleteMark, 60 * 60 * 1000, INT64_MAX, CFG_SCOPE_CLIENT, CFG_DYN_CLIENT, CFG_CATEGORY_LOCAL)); + + TAOS_CHECK_RETURN(cfgAddBool(pCfg, "streamCoverage", tsStreamCoverage, CFG_SCOPE_SERVER, CFG_DYN_ENT_SERVER_LAZY,CFG_CATEGORY_GLOBAL)); + TAOS_RETURN(TSDB_CODE_SUCCESS); } @@ -1463,6 +1467,9 @@ static int32_t taosSetClientCfg(SConfig *pCfg) { TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "bypassFlag"); tsBypassFlag = pItem->i32; + TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "streamCoverage"); + tsStreamCoverage = pItem->bval; + TAOS_RETURN(TSDB_CODE_SUCCESS); } @@ -2735,7 +2742,8 @@ static int32_t taosCfgDynamicOptionsForClient(SConfig *pCfg, const char *name) { {"maxTsmaCalcDelay", &tsMaxTsmaCalcDelay}, {"tsmaDataDeleteMark", &tsmaDataDeleteMark}, {"numOfRpcSessions", &tsNumOfRpcSessions}, - {"bypassFlag", &tsBypassFlag}}; + {"bypassFlag", &tsBypassFlag}, + {"streamCoverage", &tsStreamCoverage}}; if ((code = taosCfgSetOption(debugOptions, tListLen(debugOptions), pItem, true)) != TSDB_CODE_SUCCESS) { code = taosCfgSetOption(options, tListLen(options), pItem, false); diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index feaa6910f2a4..342bd6d66ebe 100755 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -11411,7 +11411,7 @@ static int32_t checkStreamQuery(STranslateContext* pCxt, SCreateStreamStmt* pStm if (pSelect->hasInterpFunc) { // Temporary code - if (pStmt->pOptions->triggerType != STREAM_TRIGGER_FORCE_WINDOW_CLOSE) { + if (tsStreamCoverage == false && pStmt->pOptions->triggerType != STREAM_TRIGGER_FORCE_WINDOW_CLOSE) { return generateSyntaxErrMsgExt(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_STREAM_QUERY, "Stream interp function only support force window close"); } diff --git a/tests/parallel_test/cases.task b/tests/parallel_test/cases.task index 74274ab1ba5d..6c5ad9b23d24 100644 --- a/tests/parallel_test/cases.task +++ b/tests/parallel_test/cases.task @@ -1419,34 +1419,36 @@ ,,y,script,./test.sh -f tsim/stream/sliding.sim ,,y,script,./test.sh -f tsim/stream/state0.sim ,,y,script,./test.sh -f tsim/stream/state1.sim -#,,y,script,./test.sh -f tsim/stream/streamInterpDelete0.sim -#,,y,script,./test.sh -f tsim/stream/streamInterpDelete1.sim -#,,y,script,./test.sh -f tsim/stream/streamInterpDelete2.sim -#,,y,script,./test.sh -f tsim/stream/streamInterpError.sim +,,y,script,./test.sh -f tsim/stream/streamInterpDelete0.sim +,,y,script,./test.sh -f tsim/stream/streamInterpDelete1.sim +,,y,script,./test.sh -f tsim/stream/streamInterpDelete2.sim +,,y,script,./test.sh -f tsim/stream/streamInterpError.sim ,,y,script,./test.sh -f tsim/stream/streamInterpForceWindowClose.sim ,,y,script,./test.sh -f tsim/stream/streamInterpForceWindowClose1.sim ,,y,script,./test.sh -f tsim/stream/streamInterpFwcError.sim -#,,y,script,./test.sh -f tsim/stream/streamInterpHistory.sim +,,y,script,./test.sh -f tsim/stream/streamInterpHistory.sim #,,y,script,./test.sh -f tsim/stream/streamInterpHistory1.sim -#,,y,script,./test.sh -f tsim/stream/streamInterpLarge.sim -#,,y,script,./test.sh -f tsim/stream/streamInterpLinear0.sim -#,,y,script,./test.sh -f tsim/stream/streamInterpNext0.sim -#,,y,script,./test.sh -f tsim/stream/streamInterpOther.sim +,,y,script,./test.sh -f tsim/stream/streamInterpLarge.sim +,,y,script,./test.sh -f tsim/stream/streamInterpLinear0.sim +,,y,script,./test.sh -f tsim/stream/streamInterpNext0.sim +,,y,script,./test.sh -f tsim/stream/streamInterpOther.sim #,,y,script,./test.sh -f tsim/stream/streamInterpOther1.sim -#,,y,script,./test.sh -f tsim/stream/streamInterpPartitionBy0.sim +,,y,script,./test.sh -f tsim/stream/streamInterpPartitionBy0.sim +,,y,script,./test.sh -f tsim/stream/streamInterpPartitionBy1.sim #,,y,script,./test.sh -f tsim/stream/streamInterpPrev0.sim #,,y,script,./test.sh -f tsim/stream/streamInterpPrev1.sim -#,,y,script,./test.sh -f tsim/stream/streamInterpPrimaryKey0.sim -#,,y,script,./test.sh -f tsim/stream/streamInterpPrimaryKey1.sim -#,,y,script,./test.sh -f tsim/stream/streamInterpPrimaryKey2.sim -#,,y,script,./test.sh -f tsim/stream/streamInterpPrimaryKey3.sim -#,,y,script,./test.sh -f tsim/stream/streamInterpUpdate.sim -#,,y,script,./test.sh -f tsim/stream/streamInterpUpdate1.sim -#,,y,script,./test.sh -f tsim/stream/streamInterpValue0.sim -#,,y,script,./test.sh -f tsim/stream/streamPrimaryKey0.sim -#,,y,script,./test.sh -f tsim/stream/streamPrimaryKey1.sim -#,,y,script,./test.sh -f tsim/stream/streamPrimaryKey2.sim -#,,y,script,./test.sh -f tsim/stream/streamPrimaryKey3.sim +,,y,script,./test.sh -f tsim/stream/streamInterpPrimaryKey0.sim +,,y,script,./test.sh -f tsim/stream/streamInterpPrimaryKey1.sim +,,y,script,./test.sh -f tsim/stream/streamInterpPrimaryKey2.sim +,,y,script,./test.sh -f tsim/stream/streamInterpPrimaryKey3.sim +,,y,script,./test.sh -f tsim/stream/streamInterpUpdate.sim +,,y,script,./test.sh -f tsim/stream/streamInterpUpdate1.sim +,,y,script,./test.sh -f tsim/stream/streamInterpUpdate2.sim +,,y,script,./test.sh -f tsim/stream/streamInterpValue0.sim +,,y,script,./test.sh -f tsim/stream/streamPrimaryKey0.sim +,,y,script,./test.sh -f tsim/stream/streamPrimaryKey1.sim +,,y,script,./test.sh -f tsim/stream/streamPrimaryKey2.sim +,,y,script,./test.sh -f tsim/stream/streamPrimaryKey3.sim ,,y,script,./test.sh -f tsim/stream/streamTwaError.sim ,,y,script,./test.sh -f tsim/stream/streamTwaFwcFill.sim ,,y,script,./test.sh -f tsim/stream/streamTwaFwcFillPrimaryKey.sim diff --git a/tests/script/tsim/stream/streamInterpDelete0.sim b/tests/script/tsim/stream/streamInterpDelete0.sim index 21bac13e4a7c..440d7ce413ff 100644 --- a/tests/script/tsim/stream/streamInterpDelete0.sim +++ b/tests/script/tsim/stream/streamInterpDelete0.sim @@ -4,6 +4,8 @@ system sh/exec.sh -n dnode1 -s start sleep 50 sql connect +sql alter local 'streamCoverage' '1'; + print step1 print =============== create database sql create database test vgroups 1; diff --git a/tests/script/tsim/stream/streamInterpDelete1.sim b/tests/script/tsim/stream/streamInterpDelete1.sim index 162da175e8be..9413cf891891 100644 --- a/tests/script/tsim/stream/streamInterpDelete1.sim +++ b/tests/script/tsim/stream/streamInterpDelete1.sim @@ -4,6 +4,8 @@ system sh/exec.sh -n dnode1 -s start sleep 50 sql connect +sql alter local 'streamCoverage' '1'; + print step1 print =============== create database sql create database test vgroups 1; diff --git a/tests/script/tsim/stream/streamInterpDelete2.sim b/tests/script/tsim/stream/streamInterpDelete2.sim index be27dcda492b..fb53678effd5 100644 --- a/tests/script/tsim/stream/streamInterpDelete2.sim +++ b/tests/script/tsim/stream/streamInterpDelete2.sim @@ -4,6 +4,8 @@ system sh/exec.sh -n dnode1 -s start sleep 50 sql connect +sql alter local 'streamCoverage' '1'; + print step1 print =============== create database sql create database test vgroups 1; diff --git a/tests/script/tsim/stream/streamInterpError.sim b/tests/script/tsim/stream/streamInterpError.sim index 53a92df772e1..f0f4e80ade80 100644 --- a/tests/script/tsim/stream/streamInterpError.sim +++ b/tests/script/tsim/stream/streamInterpError.sim @@ -4,6 +4,8 @@ system sh/exec.sh -n dnode1 -s start sleep 50 sql connect +sql alter local 'streamCoverage' '1'; + print step2 sql create database test2 vgroups 1; diff --git a/tests/script/tsim/stream/streamInterpHistory.sim b/tests/script/tsim/stream/streamInterpHistory.sim index b9685ebf05bf..9737e7d15539 100644 --- a/tests/script/tsim/stream/streamInterpHistory.sim +++ b/tests/script/tsim/stream/streamInterpHistory.sim @@ -4,6 +4,8 @@ system sh/exec.sh -n dnode1 -s start sleep 50 sql connect +sql alter local 'streamCoverage' '1'; + print step1 print =============== create database sql create database test vgroups 1; diff --git a/tests/script/tsim/stream/streamInterpLarge.sim b/tests/script/tsim/stream/streamInterpLarge.sim index 85203d2d9e33..2626f49b6a59 100644 --- a/tests/script/tsim/stream/streamInterpLarge.sim +++ b/tests/script/tsim/stream/streamInterpLarge.sim @@ -4,6 +4,8 @@ system sh/exec.sh -n dnode1 -s start sleep 50 sql connect +sql alter local 'streamCoverage' '1'; + print step1 print =============== create database sql create database test vgroups 1; diff --git a/tests/script/tsim/stream/streamInterpLinear0.sim b/tests/script/tsim/stream/streamInterpLinear0.sim index 7d4b28d545a1..c52540895be8 100644 --- a/tests/script/tsim/stream/streamInterpLinear0.sim +++ b/tests/script/tsim/stream/streamInterpLinear0.sim @@ -4,6 +4,8 @@ system sh/exec.sh -n dnode1 -s start sleep 50 sql connect +sql alter local 'streamCoverage' '1'; + print step1 print =============== create database sql create database test vgroups 1; diff --git a/tests/script/tsim/stream/streamInterpNext0.sim b/tests/script/tsim/stream/streamInterpNext0.sim index abdbeda63495..4395031aec3f 100644 --- a/tests/script/tsim/stream/streamInterpNext0.sim +++ b/tests/script/tsim/stream/streamInterpNext0.sim @@ -4,6 +4,8 @@ system sh/exec.sh -n dnode1 -s start sleep 50 sql connect +sql alter local 'streamCoverage' '1'; + print step1 print =============== create database sql create database test vgroups 1; diff --git a/tests/script/tsim/stream/streamInterpOther.sim b/tests/script/tsim/stream/streamInterpOther.sim index 8553e67ec877..4572bfca563e 100644 --- a/tests/script/tsim/stream/streamInterpOther.sim +++ b/tests/script/tsim/stream/streamInterpOther.sim @@ -4,6 +4,8 @@ system sh/exec.sh -n dnode1 -s start sleep 50 sql connect +sql alter local 'streamCoverage' '1'; + print step1 print =============== create database sql create database test vgroups 4; diff --git a/tests/script/tsim/stream/streamInterpPartitionBy0.sim b/tests/script/tsim/stream/streamInterpPartitionBy0.sim index 6b222de228ef..543bb48a1cfd 100644 --- a/tests/script/tsim/stream/streamInterpPartitionBy0.sim +++ b/tests/script/tsim/stream/streamInterpPartitionBy0.sim @@ -4,6 +4,8 @@ system sh/exec.sh -n dnode1 -s start sleep 50 sql connect +sql alter local 'streamCoverage' '1'; + print step prev print =============== create database sql create database test vgroups 1; diff --git a/tests/script/tsim/stream/streamInterpPartitionBy1.sim b/tests/script/tsim/stream/streamInterpPartitionBy1.sim index ecb5e0ee6290..c8138ac05fef 100644 --- a/tests/script/tsim/stream/streamInterpPartitionBy1.sim +++ b/tests/script/tsim/stream/streamInterpPartitionBy1.sim @@ -4,6 +4,8 @@ system sh/exec.sh -n dnode1 -s start sleep 50 sql connect +sql alter local 'streamCoverage' '1'; + print step NULL print =============== create database sql create database test vgroups 1; diff --git a/tests/script/tsim/stream/streamInterpPrimaryKey0.sim b/tests/script/tsim/stream/streamInterpPrimaryKey0.sim index 9edddff6dbf8..1bbc2a9b5dd8 100644 --- a/tests/script/tsim/stream/streamInterpPrimaryKey0.sim +++ b/tests/script/tsim/stream/streamInterpPrimaryKey0.sim @@ -4,6 +4,8 @@ system sh/exec.sh -n dnode1 -s start sleep 50 sql connect +sql alter local 'streamCoverage' '1'; + print step1 print =============== create database sql create database test vgroups 1; diff --git a/tests/script/tsim/stream/streamInterpPrimaryKey1.sim b/tests/script/tsim/stream/streamInterpPrimaryKey1.sim index 04a1f299be30..0db33c976753 100644 --- a/tests/script/tsim/stream/streamInterpPrimaryKey1.sim +++ b/tests/script/tsim/stream/streamInterpPrimaryKey1.sim @@ -4,6 +4,8 @@ system sh/exec.sh -n dnode1 -s start sleep 50 sql connect +sql alter local 'streamCoverage' '1'; + print step1 print =============== create database sql create database test vgroups 1; diff --git a/tests/script/tsim/stream/streamInterpPrimaryKey3.sim b/tests/script/tsim/stream/streamInterpPrimaryKey3.sim index 725cf8d8503b..23cb0a58e66e 100644 --- a/tests/script/tsim/stream/streamInterpPrimaryKey3.sim +++ b/tests/script/tsim/stream/streamInterpPrimaryKey3.sim @@ -4,6 +4,8 @@ system sh/exec.sh -n dnode1 -s start sleep 50 sql connect +sql alter local 'streamCoverage' '1'; + print step1 print =============== create database sql create database test vgroups 1; diff --git a/tests/script/tsim/stream/streamInterpUpdate.sim b/tests/script/tsim/stream/streamInterpUpdate.sim index 59a188c2a6c4..394ac1a341e7 100644 --- a/tests/script/tsim/stream/streamInterpUpdate.sim +++ b/tests/script/tsim/stream/streamInterpUpdate.sim @@ -4,6 +4,8 @@ system sh/exec.sh -n dnode1 -s start sleep 50 sql connect +sql alter local 'streamCoverage' '1'; + print step1 print =============== create database sql create database test vgroups 1; diff --git a/tests/script/tsim/stream/streamInterpUpdate1.sim b/tests/script/tsim/stream/streamInterpUpdate1.sim index 45f16af35de7..3987afa21e02 100644 --- a/tests/script/tsim/stream/streamInterpUpdate1.sim +++ b/tests/script/tsim/stream/streamInterpUpdate1.sim @@ -4,6 +4,8 @@ system sh/exec.sh -n dnode1 -s start sleep 50 sql connect +sql alter local 'streamCoverage' '1'; + print step1 print =============== create database sql create database test vgroups 1; diff --git a/tests/script/tsim/stream/streamInterpUpdate2.sim b/tests/script/tsim/stream/streamInterpUpdate2.sim index 2a71474dd78b..cde5b589e8da 100644 --- a/tests/script/tsim/stream/streamInterpUpdate2.sim +++ b/tests/script/tsim/stream/streamInterpUpdate2.sim @@ -4,6 +4,8 @@ system sh/exec.sh -n dnode1 -s start sleep 50 sql connect +sql alter local 'streamCoverage' '1'; + print step1 print =============== create database sql create database test vgroups 1; diff --git a/tests/script/tsim/stream/streamInterpValue0.sim b/tests/script/tsim/stream/streamInterpValue0.sim index bce7f0ece664..2cbf61f4bd3c 100644 --- a/tests/script/tsim/stream/streamInterpValue0.sim +++ b/tests/script/tsim/stream/streamInterpValue0.sim @@ -4,6 +4,8 @@ system sh/exec.sh -n dnode1 -s start sleep 50 sql connect +sql alter local 'streamCoverage' '1'; + print step1 print =============== create database sql create database test vgroups 1; From 82c4ec147ad23691b1cc5b18f26b3bb36ecf0fc8 Mon Sep 17 00:00:00 2001 From: dapan1121 Date: Thu, 19 Dec 2024 10:59:58 +0800 Subject: [PATCH 09/30] fix: job preprocess and dropped issue --- source/libs/qworker/src/qwUtil.c | 2 ++ source/libs/qworker/src/qworker.c | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/source/libs/qworker/src/qwUtil.c b/source/libs/qworker/src/qwUtil.c index 2809f055908a..3a0a5d3b26ec 100644 --- a/source/libs/qworker/src/qwUtil.c +++ b/source/libs/qworker/src/qwUtil.c @@ -409,6 +409,8 @@ int32_t qwDropTaskCtx(QW_FPARAMS_DEF) { if (ctx->pJobInfo && TSDB_CODE_SUCCESS != ctx->pJobInfo->errCode) { QW_UPDATE_RSP_CODE(ctx, ctx->pJobInfo->errCode); + } else { + QW_UPDATE_RSP_CODE(ctx, TSDB_CODE_TSC_QUERY_CANCELLED); } atomic_store_ptr(&ctx->taskHandle, NULL); diff --git a/source/libs/qworker/src/qworker.c b/source/libs/qworker/src/qworker.c index fdbe93965a1b..aae07c75127a 100644 --- a/source/libs/qworker/src/qworker.c +++ b/source/libs/qworker/src/qworker.c @@ -763,6 +763,11 @@ int32_t qwPreprocessQuery(QW_FPARAMS_DEF, SQWMsg *qwMsg) { QW_LOCK(QW_WRITE, &ctx->lock); + if (QW_EVENT_PROCESSED(ctx, QW_EVENT_DROP) || QW_EVENT_RECEIVED(ctx, QW_EVENT_DROP)) { + QW_TASK_WLOG("task dropping or already dropped, drop event:%d", QW_GET_EVENT(ctx, QW_EVENT_DROP)); + QW_ERR_JRET(ctx->rspCode); + } + ctx->ctrlConnInfo = qwMsg->connInfo; ctx->sId = sId; ctx->phase = -1; From 8f5d5e7b5934dfbfcb2edcb2eb40150d15b5f138 Mon Sep 17 00:00:00 2001 From: Minglei Jin Date: Thu, 19 Dec 2024 13:47:21 +0800 Subject: [PATCH 10/30] fix(tsdb/cache del): remove commit w.r.t del --- source/dnode/vnode/src/tsdb/tsdbCache.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/source/dnode/vnode/src/tsdb/tsdbCache.c b/source/dnode/vnode/src/tsdb/tsdbCache.c index 8fd0d479697a..87cde3cf0f3b 100644 --- a/source/dnode/vnode/src/tsdb/tsdbCache.c +++ b/source/dnode/vnode/src/tsdb/tsdbCache.c @@ -2635,24 +2635,15 @@ int32_t tsdbCacheGetBatch(STsdb *pTsdb, tb_uid_t uid, SArray *pLastArray, SCache } int32_t tsdbCacheDel(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSKEY sKey, TSKEY eKey) { - int32_t code = 0, lino = 0; - // fetch schema + int32_t code = 0, lino = 0; STSchema *pTSchema = NULL; int sver = -1; + int numCols = pTSchema->numOfCols; + int numKeys = 0; + SArray *remainCols = NULL; TAOS_CHECK_RETURN(metaGetTbTSchemaEx(pTsdb->pVnode->pMeta, suid, uid, sver, &pTSchema)); - // build keys & multi get from rocks - int numCols = pTSchema->numOfCols; - int numKeys = 0; - SArray *remainCols = NULL; - - code = tsdbCacheCommit(pTsdb); - if (code != TSDB_CODE_SUCCESS) { - tsdbTrace("vgId:%d, %s commit failed at line %d since %s", TD_VID(pTsdb->pVnode), __func__, __LINE__, - tstrerror(code)); - } - (void)taosThreadMutexLock(&pTsdb->lruMutex); for (int i = 0; i < numCols; ++i) { From ea4b9ac5a9ecf8fc6b1e01968a0f495895c5a827 Mon Sep 17 00:00:00 2001 From: dapan1121 Date: Thu, 19 Dec 2024 13:51:33 +0800 Subject: [PATCH 11/30] fix: return code validation issue --- source/libs/qworker/src/qwUtil.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/libs/qworker/src/qwUtil.c b/source/libs/qworker/src/qwUtil.c index 3a0a5d3b26ec..3d41b6ef5ef0 100644 --- a/source/libs/qworker/src/qwUtil.c +++ b/source/libs/qworker/src/qwUtil.c @@ -258,7 +258,7 @@ int32_t qwAddTaskCtxImpl(QW_FPARAMS_DEF, bool acquire, SQWTaskCtx **ctx) { } } - atomic_add_fetch_64(&gQueryMgmt.stat.taskInitNum, 1); + (void)atomic_add_fetch_64(&gQueryMgmt.stat.taskInitNum, 1); if (acquire && ctx) { QW_RET(qwAcquireTaskCtx(QW_FPARAMS(), ctx)); @@ -283,7 +283,7 @@ void qwFreeTaskHandle(SQWTaskCtx *ctx) { qDestroyTask(otaskHandle); taosDisableMemPoolUsage(); - atomic_add_fetch_64(&gQueryMgmt.stat.taskExecDestroyNum, 1); + (void)atomic_add_fetch_64(&gQueryMgmt.stat.taskExecDestroyNum, 1); qDebug("task handle destroyed"); } @@ -297,7 +297,7 @@ void qwFreeSinkHandle(SQWTaskCtx *ctx) { dsDestroyDataSinker(osinkHandle); QW_SINK_DISABLE_MEMPOOL(); - atomic_add_fetch_64(&gQueryMgmt.stat.taskSinkDestroyNum, 1); + (void)atomic_add_fetch_64(&gQueryMgmt.stat.taskSinkDestroyNum, 1); qDebug("sink handle destroyed"); } @@ -430,7 +430,7 @@ int32_t qwDropTaskCtx(QW_FPARAMS_DEF) { QW_TASK_DLOG_E("task ctx dropped"); - atomic_add_fetch_64(&gQueryMgmt.stat.taskDestroyNum, 1); + (void)atomic_add_fetch_64(&gQueryMgmt.stat.taskDestroyNum, 1); return code; } From bdef8850ca63e32c7271920a481ab3c73f3f07c2 Mon Sep 17 00:00:00 2001 From: 54liuyao <54liuyao@163.com> Date: Thu, 19 Dec 2024 14:16:00 +0800 Subject: [PATCH 12/30] fix issue --- source/common/src/tglobal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index 83747b11e68c..b732b7140a97 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -735,7 +735,7 @@ static int32_t taosAddClientCfg(SConfig *pCfg) { TAOS_CHECK_RETURN(cfgAddInt32(pCfg, "tsmaDataDeleteMark", tsmaDataDeleteMark, 60 * 60 * 1000, INT64_MAX, CFG_SCOPE_CLIENT, CFG_DYN_CLIENT, CFG_CATEGORY_LOCAL)); - TAOS_CHECK_RETURN(cfgAddBool(pCfg, "streamCoverage", tsStreamCoverage, CFG_SCOPE_SERVER, CFG_DYN_ENT_SERVER_LAZY,CFG_CATEGORY_GLOBAL)); + TAOS_CHECK_RETURN(cfgAddBool(pCfg, "streamCoverage", tsStreamCoverage, CFG_DYN_CLIENT, CFG_DYN_CLIENT, CFG_CATEGORY_LOCAL)); TAOS_RETURN(TSDB_CODE_SUCCESS); } From 18fb01264dd8449fa7c9e97b566adf258353f28a Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Thu, 19 Dec 2024 14:51:21 +0800 Subject: [PATCH 13/30] change some apis --- include/common/tglobal.h | 1 + source/common/src/tglobal.c | 3 +- source/dnode/mgmt/mgmt_vnode/src/vmInt.c | 2 +- source/dnode/vnode/inc/vnode.h | 2 +- source/dnode/vnode/src/inc/vnd.h | 8 ++- source/dnode/vnode/src/tsdb/tsdbFS2.c | 2 +- source/dnode/vnode/src/tsdb/tsdbRetention.c | 2 +- source/dnode/vnode/src/vnd/vnodeAsync.c | 71 +++++++++++++-------- source/dnode/vnode/src/vnd/vnodeCommit.c | 4 +- source/dnode/vnode/src/vnd/vnodeModule.c | 4 +- 10 files changed, 62 insertions(+), 37 deletions(-) diff --git a/include/common/tglobal.h b/include/common/tglobal.h index e6333d2ddca1..90df67e04671 100644 --- a/include/common/tglobal.h +++ b/include/common/tglobal.h @@ -114,6 +114,7 @@ extern int32_t tsRetentionSpeedLimitMB; extern const char *tsAlterCompactTaskKeywords; extern int32_t tsNumOfCompactThreads; +extern int32_t tsNumOfRetentionThreads; // sync raft extern int32_t tsElectInterval; diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index 905dcb4fda1a..b74f8c9b1c64 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -14,12 +14,12 @@ */ #define _DEFAULT_SOURCE +#include "tglobal.h" #include "cJSON.h" #include "defines.h" #include "os.h" #include "osString.h" #include "tconfig.h" -#include "tglobal.h" #include "tgrant.h" #include "tjson.h" #include "tlog.h" @@ -104,6 +104,7 @@ int32_t tsRetentionSpeedLimitMB = 0; // unlimited const char *tsAlterCompactTaskKeywords = "max_compact_tasks"; int32_t tsNumOfCompactThreads = 2; +int32_t tsNumOfRetentionThreads = 1; // sync raft int32_t tsElectInterval = 25 * 1000; diff --git a/source/dnode/mgmt/mgmt_vnode/src/vmInt.c b/source/dnode/mgmt/mgmt_vnode/src/vmInt.c index 537c1f6297d5..6d5e1171812f 100644 --- a/source/dnode/mgmt/mgmt_vnode/src/vmInt.c +++ b/source/dnode/mgmt/mgmt_vnode/src/vmInt.c @@ -896,7 +896,7 @@ static int32_t vmInit(SMgmtInputOpt *pInput, SMgmtOutputOpt *pOutput) { } tmsgReportStartup("vnode-sync", "initialized"); - if ((code = vnodeInit(tsNumOfCommitThreads, pInput->stopDnodeFp)) != 0) { + if ((code = vnodeInit(pInput->stopDnodeFp)) != 0) { dError("failed to init vnode since %s", tstrerror(code)); goto _OVER; } diff --git a/source/dnode/vnode/inc/vnode.h b/source/dnode/vnode/inc/vnode.h index f4a678e62976..b33bdb09764a 100644 --- a/source/dnode/vnode/inc/vnode.h +++ b/source/dnode/vnode/inc/vnode.h @@ -51,7 +51,7 @@ extern const SVnodeCfg vnodeCfgDefault; typedef void (*StopDnodeFp)(); -int32_t vnodeInit(int32_t nthreads, StopDnodeFp stopDnodeFp); +int32_t vnodeInit(StopDnodeFp stopDnodeFp); void vnodeCleanup(); int32_t vnodeCreate(const char *path, SVnodeCfg *pCfg, int32_t diskPrimary, STfs *pTfs); bool vnodeShouldRemoveWal(SVnode *pVnode); diff --git a/source/dnode/vnode/src/inc/vnd.h b/source/dnode/vnode/src/inc/vnd.h index ff622d2daba8..882ea155e47e 100644 --- a/source/dnode/vnode/src/inc/vnd.h +++ b/source/dnode/vnode/src/inc/vnd.h @@ -55,12 +55,14 @@ typedef enum { EVA_PRIORITY_LOW, } EVAPriority; -int32_t vnodeAsyncOpen(int32_t numOfThreads); +int32_t vnodeAsyncOpen(); void vnodeAsyncClose(); int32_t vnodeAChannelInit(int64_t async, SVAChannelID* channelID); int32_t vnodeAChannelDestroy(SVAChannelID* channelID, bool waitRunning); -int32_t vnodeAsync(SVAChannelID* channelID, EVAPriority priority, int32_t (*execute)(void*), void (*complete)(void*), - void* arg, SVATaskID* taskID); +int32_t vnodeAsync(int64_t async, EVAPriority priority, int32_t (*execute)(void*), void (*complete)(void*), void* arg, + SVATaskID* taskID); +int32_t vnodeAsync2(SVAChannelID* channelID, EVAPriority priority, int32_t (*execute)(void*), void (*complete)(void*), + void* arg, SVATaskID* taskID); void vnodeAWait(SVATaskID* taskID); int32_t vnodeACancel(SVATaskID* taskID); int32_t vnodeAsyncSetWorkers(int64_t async, int32_t numWorkers); diff --git a/source/dnode/vnode/src/tsdb/tsdbFS2.c b/source/dnode/vnode/src/tsdb/tsdbFS2.c index 9a7cdca8f7a5..f024dd721079 100644 --- a/source/dnode/vnode/src/tsdb/tsdbFS2.c +++ b/source/dnode/vnode/src/tsdb/tsdbFS2.c @@ -946,7 +946,7 @@ int32_t tsdbFSEditCommit(STFileSystem *fs) { arg->tsdb = fs->tsdb; arg->fid = fset->fid; - code = vnodeAsync(&fset->channel, EVA_PRIORITY_HIGH, tsdbMerge, taosAutoMemoryFree, arg, NULL); + code = vnodeAsync2(&fset->channel, EVA_PRIORITY_HIGH, tsdbMerge, taosAutoMemoryFree, arg, NULL); TSDB_CHECK_CODE(code, lino, _exit); fset->mergeScheduled = true; } diff --git a/source/dnode/vnode/src/tsdb/tsdbRetention.c b/source/dnode/vnode/src/tsdb/tsdbRetention.c index 7859ee4c66c7..0cd83e3f8c35 100644 --- a/source/dnode/vnode/src/tsdb/tsdbRetention.c +++ b/source/dnode/vnode/src/tsdb/tsdbRetention.c @@ -380,7 +380,7 @@ static int32_t tsdbAsyncRetentionImpl(STsdb *tsdb, int64_t now, bool s3Migrate) arg->fid = fset->fid; arg->s3Migrate = s3Migrate; - if ((code = vnodeAsync(&fset->channel, EVA_PRIORITY_LOW, tsdbRetention, tsdbRetentionCancel, arg, NULL))) { + if ((code = vnodeAsync2(&fset->channel, EVA_PRIORITY_LOW, tsdbRetention, tsdbRetentionCancel, arg, NULL))) { taosMemoryFree(arg); TSDB_CHECK_CODE(code, lino, _exit); } diff --git a/source/dnode/vnode/src/vnd/vnodeAsync.c b/source/dnode/vnode/src/vnd/vnodeAsync.c index 3f40ace6c4be..7b2412e7ae19 100644 --- a/source/dnode/vnode/src/vnd/vnodeAsync.c +++ b/source/dnode/vnode/src/vnd/vnodeAsync.c @@ -118,9 +118,19 @@ struct SVAsync { SVHashTable *taskTable; }; -SVAsync *vnodeAsyncs[3]; +struct { + const char *label; + SVAsync *async; +} GVnodeAsyncs[] = { + [0] = {}, + [1] = {"vnode-commit", NULL}, + [2] = {"vnode-merge", NULL}, + [3] = {"vnode-compact", NULL}, + [4] = {"vnode-retention", NULL}, +}; + #define MIN_ASYNC_ID 1 -#define MAX_ASYNC_ID (sizeof(vnodeAsyncs) / sizeof(vnodeAsyncs[0]) - 1) +#define MAX_ASYNC_ID (sizeof(GVnodeAsyncs) / sizeof(GVnodeAsyncs[0]) - 1) static void vnodeAsyncTaskDone(SVAsync *async, SVATask *task) { int32_t ret; @@ -447,36 +457,47 @@ static void vnodeAsyncLaunchWorker(SVAsync *async) { } } -int32_t vnodeAsyncOpen(int32_t numOfThreads) { +int32_t vnodeAsyncOpen() { int32_t code = 0; int32_t lino = 0; - // vnode-commit - code = vnodeAsyncInit(&vnodeAsyncs[1], "vnode-commit"); - TSDB_CHECK_CODE(code, lino, _exit); - - code = vnodeAsyncSetWorkers(1, numOfThreads); - TSDB_CHECK_CODE(code, lino, _exit); + int32_t numOfThreads[] = { + 0, // + tsNumOfCommitThreads, // vnode-commit + tsNumOfCommitThreads, // vnode-merge + tsNumOfCompactThreads, // vnode-compact + tsNumOfRetentionThreads, // vnode-retention + }; - // vnode-merge - code = vnodeAsyncInit(&vnodeAsyncs[2], "vnode-merge"); - TSDB_CHECK_CODE(code, lino, _exit); + for (int32_t i = 1; i < sizeof(GVnodeAsyncs) / sizeof(GVnodeAsyncs[0]); i++) { + code = vnodeAsyncInit(&GVnodeAsyncs[i].async, GVnodeAsyncs[i].label); + TSDB_CHECK_CODE(code, lino, _exit); - code = vnodeAsyncSetWorkers(2, numOfThreads); - TSDB_CHECK_CODE(code, lino, _exit); + code = vnodeAsyncSetWorkers(i, numOfThreads[i]); + TSDB_CHECK_CODE(code, lino, _exit); + } _exit: return code; } void vnodeAsyncClose() { - int32_t ret; - ret = vnodeAsyncDestroy(&vnodeAsyncs[1]); - ret = vnodeAsyncDestroy(&vnodeAsyncs[2]); + for (int32_t i = 1; i < sizeof(GVnodeAsyncs) / sizeof(GVnodeAsyncs[0]); i++) { + int32_t ret = vnodeAsyncDestroy(&GVnodeAsyncs[i].async); + } +} + +int32_t vnodeAsync(int64_t async, EVAPriority priority, int32_t (*execute)(void *), void (*complete)(void *), void *arg, + SVATaskID *taskID) { + SVAChannelID channelID = { + .async = async, + .id = 0, + }; + return vnodeAsync2(&channelID, priority, execute, complete, arg, taskID); } -int32_t vnodeAsync(SVAChannelID *channelID, EVAPriority priority, int32_t (*execute)(void *), void (*cancel)(void *), - void *arg, SVATaskID *taskID) { +int32_t vnodeAsync2(SVAChannelID *channelID, EVAPriority priority, int32_t (*execute)(void *), void (*cancel)(void *), + void *arg, SVATaskID *taskID) { if (channelID == NULL || channelID->async < MIN_ASYNC_ID || channelID->async > MAX_ASYNC_ID || execute == NULL || channelID->id < 0) { return TSDB_CODE_INVALID_PARA; @@ -484,7 +505,7 @@ int32_t vnodeAsync(SVAChannelID *channelID, EVAPriority priority, int32_t (*exec int32_t ret; int64_t id; - SVAsync *async = vnodeAsyncs[channelID->async]; + SVAsync *async = GVnodeAsyncs[channelID->async].async; // create task object SVATask *task = (SVATask *)taosMemoryCalloc(1, sizeof(SVATask)); @@ -594,7 +615,7 @@ void vnodeAWait(SVATaskID *taskID) { return; } - SVAsync *async = vnodeAsyncs[taskID->async]; + SVAsync *async = GVnodeAsyncs[taskID->async].async; SVATask *task = NULL; SVATask task2 = { .taskId = taskID->id, @@ -623,7 +644,7 @@ int32_t vnodeACancel(SVATaskID *taskID) { } int32_t ret = 0; - SVAsync *async = vnodeAsyncs[taskID->async]; + SVAsync *async = GVnodeAsyncs[taskID->async].async; SVATask *task = NULL; SVATask task2 = { .taskId = taskID->id, @@ -660,7 +681,7 @@ int32_t vnodeAsyncSetWorkers(int64_t asyncID, int32_t numWorkers) { return TSDB_CODE_INVALID_PARA; } int32_t ret; - SVAsync *async = vnodeAsyncs[asyncID]; + SVAsync *async = GVnodeAsyncs[asyncID].async; (void)taosThreadMutexLock(&async->mutex); async->numWorkers = numWorkers; if (async->numIdleWorkers > 0) { @@ -676,7 +697,7 @@ int32_t vnodeAChannelInit(int64_t asyncID, SVAChannelID *channelID) { return TSDB_CODE_INVALID_PARA; } - SVAsync *async = vnodeAsyncs[asyncID]; + SVAsync *async = GVnodeAsyncs[asyncID].async; // create channel object SVAChannel *channel = (SVAChannel *)taosMemoryMalloc(sizeof(SVAChannel)); @@ -722,7 +743,7 @@ int32_t vnodeAChannelDestroy(SVAChannelID *channelID, bool waitRunning) { return TSDB_CODE_INVALID_PARA; } - SVAsync *async = vnodeAsyncs[channelID->async]; + SVAsync *async = GVnodeAsyncs[channelID->async].async; SVAChannel *channel = NULL; SVAChannel channel2 = { .channelId = channelID->id, diff --git a/source/dnode/vnode/src/vnd/vnodeCommit.c b/source/dnode/vnode/src/vnd/vnodeCommit.c index 28d27b88930f..0c44048fbf56 100644 --- a/source/dnode/vnode/src/vnd/vnodeCommit.c +++ b/source/dnode/vnode/src/vnd/vnodeCommit.c @@ -389,8 +389,8 @@ int vnodeAsyncCommit(SVnode *pVnode) { TSDB_CHECK_CODE(code, lino, _exit); // schedule the task - code = - vnodeAsync(&pVnode->commitChannel, EVA_PRIORITY_HIGH, vnodeCommit, vnodeCommitCancel, pInfo, &pVnode->commitTask); + code = vnodeAsync2(&pVnode->commitChannel, EVA_PRIORITY_HIGH, vnodeCommit, vnodeCommitCancel, pInfo, + &pVnode->commitTask); TSDB_CHECK_CODE(code, lino, _exit); _exit: diff --git a/source/dnode/vnode/src/vnd/vnodeModule.c b/source/dnode/vnode/src/vnd/vnodeModule.c index 9d326defdd0b..a91c46db70e8 100644 --- a/source/dnode/vnode/src/vnd/vnodeModule.c +++ b/source/dnode/vnode/src/vnd/vnodeModule.c @@ -20,12 +20,12 @@ static volatile int32_t VINIT = 0; -int vnodeInit(int nthreads, StopDnodeFp stopDnodeFp) { +int vnodeInit(StopDnodeFp stopDnodeFp) { if (atomic_val_compare_exchange_32(&VINIT, 0, 1)) { return 0; } - TAOS_CHECK_RETURN(vnodeAsyncOpen(nthreads)); + TAOS_CHECK_RETURN(vnodeAsyncOpen()); TAOS_CHECK_RETURN(walInit(stopDnodeFp)); TAOS_CHECK_RETURN(tsdbInit()); From 50dbfdd4a3155d7f6bf8788b7dae30e0cb0d0d6d Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Thu, 19 Dec 2024 15:05:32 +0800 Subject: [PATCH 14/30] udfd: coverage --- source/libs/function/src/udfd.c | 17 ++++++++++------- tests/system-test/0-others/udfTest.py | 16 ++++++++++++++-- tests/system-test/0-others/udf_restart_taosd.py | 2 +- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/source/libs/function/src/udfd.c b/source/libs/function/src/udfd.c index bbfd43d5f7f9..e3e4040b3c1d 100644 --- a/source/libs/function/src/udfd.c +++ b/source/libs/function/src/udfd.c @@ -1667,7 +1667,6 @@ static int32_t udfdGlobalDataInit() { } static void udfdGlobalDataDeinit() { - taosHashCleanup(global.udfsHash); uv_mutex_destroy(&global.udfsMutex); uv_mutex_destroy(&global.scriptPluginsMutex); taosMemoryFreeClear(global.loop); @@ -1720,8 +1719,11 @@ void udfdDeinitResidentFuncs() { SUdf **udfInHash = taosHashGet(global.udfsHash, funcName, strlen(funcName)); if (udfInHash) { SUdf *udf = *udfInHash; - int32_t code = udf->scriptPlugin->udfDestroyFunc(udf->scriptUdfCtx); - fnDebug("udfd destroy function returns %d", code); + int32_t code = 0; + if (udf->scriptPlugin->udfDestroyFunc) { + code = udf->scriptPlugin->udfDestroyFunc(udf->scriptUdfCtx); + fnDebug("udfd %s destroy function returns %d", funcName, code); + } if(taosHashRemove(global.udfsHash, funcName, strlen(funcName)) != 0) { fnError("udfd remove resident function %s failed", funcName); @@ -1729,6 +1731,7 @@ void udfdDeinitResidentFuncs() { taosMemoryFree(udf); } } + taosHashCleanup(global.udfsHash); taosArrayDestroy(global.residentFuncs); fnInfo("udfd resident functions are deinit"); } @@ -1838,15 +1841,15 @@ int main(int argc, char *argv[]) { fnInfo("udfd exit normally"); removeListeningPipe(); - udfdDeinitScriptPlugins(); _exit: - if (globalDataInited) { - udfdGlobalDataDeinit(); - } if (residentFuncsInited) { udfdDeinitResidentFuncs(); } + udfdDeinitScriptPlugins(); + if (globalDataInited) { + udfdGlobalDataDeinit(); + } if (udfSourceDirInited) { udfdDestroyUdfSourceDir(); } diff --git a/tests/system-test/0-others/udfTest.py b/tests/system-test/0-others/udfTest.py index 829a8aec273a..d3efa61e0425 100644 --- a/tests/system-test/0-others/udfTest.py +++ b/tests/system-test/0-others/udfTest.py @@ -4,6 +4,8 @@ import time import os import platform +import random +import string from util.log import * from util.sql import * @@ -12,7 +14,7 @@ import subprocess class TDTestCase: - + updatecfgDict = {'udfdResFuncs': "udf1,udf2"} def init(self, conn, logSql, replicaVar=1): self.replicaVar = int(replicaVar) tdLog.debug(f"start to excute {__file__}") @@ -652,10 +654,20 @@ def restart_taosd_query_udf(self): tdDnodes.start(1) time.sleep(2) + def test_udfd_cmd(self): + tdLog.info(" test udfd -V ") + os.system("udfd -V") + tdLog.info(" test udfd -c ") + os.system("udfd -c") + + letters = string.ascii_letters + string.digits + '\\' + path = ''.join(random.choice(letters) for i in range(5000)) - def run(self): # sourcery skip: extract-duplicate-method, remove-redundant-fstring + os.system(f"udfd -c {path}") + def run(self): # sourcery skip: extract-duplicate-method, remove-redundant-fstring print(" env is ok for all ") + self.test_udfd_cmd() self.prepare_udf_so() self.prepare_data() self.create_udf_function() diff --git a/tests/system-test/0-others/udf_restart_taosd.py b/tests/system-test/0-others/udf_restart_taosd.py index c99e864e7134..f9a3f08bf5f7 100644 --- a/tests/system-test/0-others/udf_restart_taosd.py +++ b/tests/system-test/0-others/udf_restart_taosd.py @@ -11,7 +11,7 @@ import subprocess class TDTestCase: - + updatecfgDict = {'udfdResFuncs': "udf1,udf2"} def init(self, conn, logSql, replicaVar=1): self.replicaVar = int(replicaVar) tdLog.debug(f"start to excute {__file__}") From e389583334a47c65b58b74c056dc514ba973a56f Mon Sep 17 00:00:00 2001 From: Minglei Jin Date: Thu, 19 Dec 2024 15:20:25 +0800 Subject: [PATCH 15/30] fix num ptr crash --- source/dnode/vnode/src/tsdb/tsdbCache.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/dnode/vnode/src/tsdb/tsdbCache.c b/source/dnode/vnode/src/tsdb/tsdbCache.c index 87cde3cf0f3b..2047b6810182 100644 --- a/source/dnode/vnode/src/tsdb/tsdbCache.c +++ b/source/dnode/vnode/src/tsdb/tsdbCache.c @@ -2638,12 +2638,13 @@ int32_t tsdbCacheDel(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSKEY sKey, TSKE int32_t code = 0, lino = 0; STSchema *pTSchema = NULL; int sver = -1; - int numCols = pTSchema->numOfCols; int numKeys = 0; SArray *remainCols = NULL; TAOS_CHECK_RETURN(metaGetTbTSchemaEx(pTsdb->pVnode->pMeta, suid, uid, sver, &pTSchema)); + int numCols = pTSchema->numOfCols; + (void)taosThreadMutexLock(&pTsdb->lruMutex); for (int i = 0; i < numCols; ++i) { From 1cb0e2fec239a186d22882e4e6c0489adc94b2cd Mon Sep 17 00:00:00 2001 From: factosea <285808407@qq.com> Date: Thu, 19 Dec 2024 15:43:24 +0800 Subject: [PATCH 16/30] udf merge: temporarily block code --- include/libs/function/tudf.h | 5 +-- source/libs/function/src/tudf.c | 60 +++++++++++++++++---------------- source/libs/function/src/udfd.c | 58 +++++++++++++++---------------- 3 files changed, 63 insertions(+), 60 deletions(-) diff --git a/include/libs/function/tudf.h b/include/libs/function/tudf.h index 52cb847b6ff0..2c7e6216f528 100644 --- a/include/libs/function/tudf.h +++ b/include/libs/function/tudf.h @@ -109,8 +109,9 @@ int32_t doCallUdfAggProcess(UdfcFuncHandle handle, SSDataBlock *block, SUdfInter int32_t doCallUdfAggFinalize(UdfcFuncHandle handle, SUdfInterBuf *interBuf, SUdfInterBuf *resultData); // input: interbuf1, interbuf2 // output: resultBuf -int32_t doCallUdfAggMerge(UdfcFuncHandle handle, SUdfInterBuf *interBuf1, SUdfInterBuf *interBuf2, - SUdfInterBuf *resultBuf); +// udf todo: aggmerge +// int32_t doCallUdfAggMerge(UdfcFuncHandle handle, SUdfInterBuf *interBuf1, SUdfInterBuf *interBuf2, +// SUdfInterBuf *resultBuf); // input: block // output: resultData int32_t doCallUdfScalarFunc(UdfcFuncHandle handle, SScalarParam *input, int32_t numOfCols, SScalarParam *output); diff --git a/source/libs/function/src/tudf.c b/source/libs/function/src/tudf.c index 4efa8764e56a..b057194cdb11 100644 --- a/source/libs/function/src/tudf.c +++ b/source/libs/function/src/tudf.c @@ -668,8 +668,8 @@ int32_t encodeUdfCallRequest(void **buf, const SUdfCallRequest *call) { len += tEncodeDataBlock(buf, &call->block); len += encodeUdfInterBuf(buf, &call->interBuf); } else if (call->callType == TSDB_UDF_CALL_AGG_MERGE) { - len += encodeUdfInterBuf(buf, &call->interBuf); - len += encodeUdfInterBuf(buf, &call->interBuf2); + // len += encodeUdfInterBuf(buf, &call->interBuf); + // len += encodeUdfInterBuf(buf, &call->interBuf2); } else if (call->callType == TSDB_UDF_CALL_AGG_FIN) { len += encodeUdfInterBuf(buf, &call->interBuf); } @@ -690,10 +690,10 @@ void *decodeUdfCallRequest(const void *buf, SUdfCallRequest *call) { buf = tDecodeDataBlock(buf, &call->block); buf = decodeUdfInterBuf(buf, &call->interBuf); break; - case TSDB_UDF_CALL_AGG_MERGE: - buf = decodeUdfInterBuf(buf, &call->interBuf); - buf = decodeUdfInterBuf(buf, &call->interBuf2); - break; + // case TSDB_UDF_CALL_AGG_MERGE: + // buf = decodeUdfInterBuf(buf, &call->interBuf); + // buf = decodeUdfInterBuf(buf, &call->interBuf2); + // break; case TSDB_UDF_CALL_AGG_FIN: buf = decodeUdfInterBuf(buf, &call->interBuf); break; @@ -779,9 +779,9 @@ int32_t encodeUdfCallResponse(void **buf, const SUdfCallResponse *callRsp) { case TSDB_UDF_CALL_AGG_PROC: len += encodeUdfInterBuf(buf, &callRsp->resultBuf); break; - case TSDB_UDF_CALL_AGG_MERGE: - len += encodeUdfInterBuf(buf, &callRsp->resultBuf); - break; + // case TSDB_UDF_CALL_AGG_MERGE: + // len += encodeUdfInterBuf(buf, &callRsp->resultBuf); + // break; case TSDB_UDF_CALL_AGG_FIN: len += encodeUdfInterBuf(buf, &callRsp->resultBuf); break; @@ -801,9 +801,9 @@ void *decodeUdfCallResponse(const void *buf, SUdfCallResponse *callRsp) { case TSDB_UDF_CALL_AGG_PROC: buf = decodeUdfInterBuf(buf, &callRsp->resultBuf); break; - case TSDB_UDF_CALL_AGG_MERGE: - buf = decodeUdfInterBuf(buf, &callRsp->resultBuf); - break; + // case TSDB_UDF_CALL_AGG_MERGE: + // buf = decodeUdfInterBuf(buf, &callRsp->resultBuf); + // break; case TSDB_UDF_CALL_AGG_FIN: buf = decodeUdfInterBuf(buf, &callRsp->resultBuf); break; @@ -1129,8 +1129,9 @@ int32_t callUdf(UdfcFuncHandle handle, int8_t callType, SSDataBlock *input, SUdf SSDataBlock *output, SUdfInterBuf *newState); int32_t doCallUdfAggInit(UdfcFuncHandle handle, SUdfInterBuf *interBuf); int32_t doCallUdfAggProcess(UdfcFuncHandle handle, SSDataBlock *block, SUdfInterBuf *state, SUdfInterBuf *newState); -int32_t doCallUdfAggMerge(UdfcFuncHandle handle, SUdfInterBuf *interBuf1, SUdfInterBuf *interBuf2, - SUdfInterBuf *resultBuf); +// udf todo: aggmerge +// int32_t doCallUdfAggMerge(UdfcFuncHandle handle, SUdfInterBuf *interBuf1, SUdfInterBuf *interBuf2, +// SUdfInterBuf *resultBuf); int32_t doCallUdfAggFinalize(UdfcFuncHandle handle, SUdfInterBuf *interBuf, SUdfInterBuf *resultData); int32_t doCallUdfScalarFunc(UdfcFuncHandle handle, SScalarParam *input, int32_t numOfCols, SScalarParam *output); int32_t callUdfScalarFunc(char *udfName, SScalarParam *input, int32_t numOfCols, SScalarParam *output); @@ -2176,11 +2177,11 @@ int32_t callUdf(UdfcFuncHandle handle, int8_t callType, SSDataBlock *input, SUdf req->interBuf = *state; break; } - case TSDB_UDF_CALL_AGG_MERGE: { - req->interBuf = *state; - req->interBuf2 = *state2; - break; - } + // case TSDB_UDF_CALL_AGG_MERGE: { + // req->interBuf = *state; + // req->interBuf2 = *state2; + // break; + // } case TSDB_UDF_CALL_AGG_FIN: { req->interBuf = *state; break; @@ -2205,10 +2206,10 @@ int32_t callUdf(UdfcFuncHandle handle, int8_t callType, SSDataBlock *input, SUdf *newState = rsp->resultBuf; break; } - case TSDB_UDF_CALL_AGG_MERGE: { - *newState = rsp->resultBuf; - break; - } + // case TSDB_UDF_CALL_AGG_MERGE: { + // *newState = rsp->resultBuf; + // break; + // } case TSDB_UDF_CALL_AGG_FIN: { *newState = rsp->resultBuf; break; @@ -2241,12 +2242,13 @@ int32_t doCallUdfAggProcess(UdfcFuncHandle handle, SSDataBlock *block, SUdfInter // input: interbuf1, interbuf2 // output: resultBuf -int32_t doCallUdfAggMerge(UdfcFuncHandle handle, SUdfInterBuf *interBuf1, SUdfInterBuf *interBuf2, - SUdfInterBuf *resultBuf) { - int8_t callType = TSDB_UDF_CALL_AGG_MERGE; - int32_t err = callUdf(handle, callType, NULL, interBuf1, interBuf2, NULL, resultBuf); - return err; -} +// udf todo: aggmerge +// int32_t doCallUdfAggMerge(UdfcFuncHandle handle, SUdfInterBuf *interBuf1, SUdfInterBuf *interBuf2, +// SUdfInterBuf *resultBuf) { +// int8_t callType = TSDB_UDF_CALL_AGG_MERGE; +// int32_t err = callUdf(handle, callType, NULL, interBuf1, interBuf2, NULL, resultBuf); +// return err; +// } // input: interBuf // output: resultData diff --git a/source/libs/function/src/udfd.c b/source/libs/function/src/udfd.c index e3e4040b3c1d..ecb24fc77ab5 100644 --- a/source/libs/function/src/udfd.c +++ b/source/libs/function/src/udfd.c @@ -194,17 +194,17 @@ int32_t udfdCPluginUdfAggProc(SUdfDataBlock *block, SUdfInterBuf *interBuf, SUdf } } -int32_t udfdCPluginUdfAggMerge(SUdfInterBuf *inputBuf1, SUdfInterBuf *inputBuf2, SUdfInterBuf *outputBuf, - void *udfCtx) { - TAOS_UDF_CHECK_PTR_RCODE(inputBuf1, inputBuf2, outputBuf, udfCtx); - SUdfCPluginCtx *ctx = udfCtx; - if (ctx->aggMergeFunc) { - return ctx->aggMergeFunc(inputBuf1, inputBuf2, outputBuf); - } else { - fnError("udfd c plugin aggregation merge not implemented"); - return TSDB_CODE_UDF_FUNC_EXEC_FAILURE; - } -} +// int32_t udfdCPluginUdfAggMerge(SUdfInterBuf *inputBuf1, SUdfInterBuf *inputBuf2, SUdfInterBuf *outputBuf, +// void *udfCtx) { +// TAOS_UDF_CHECK_PTR_RCODE(inputBuf1, inputBuf2, outputBuf, udfCtx); +// SUdfCPluginCtx *ctx = udfCtx; +// if (ctx->aggMergeFunc) { +// return ctx->aggMergeFunc(inputBuf1, inputBuf2, outputBuf); +// } else { +// fnError("udfd c plugin aggregation merge not implemented"); +// return TSDB_CODE_UDF_FUNC_EXEC_FAILURE; +// } +// } int32_t udfdCPluginUdfAggFinish(SUdfInterBuf *buf, SUdfInterBuf *resultData, void *udfCtx) { TAOS_UDF_CHECK_PTR_RCODE(buf, resultData, udfCtx); @@ -378,7 +378,7 @@ int32_t udfdInitializeCPlugin(SUdfScriptPlugin *plugin) { plugin->udfScalarProcFunc = udfdCPluginUdfScalarProc; plugin->udfAggStartFunc = udfdCPluginUdfAggStart; plugin->udfAggProcFunc = udfdCPluginUdfAggProc; - plugin->udfAggMergeFunc = udfdCPluginUdfAggMerge; + // plugin->udfAggMergeFunc = udfdCPluginUdfAggMerge; plugin->udfAggFinishFunc = udfdCPluginUdfAggFinish; SScriptUdfEnvItem items[1] = {{"LD_LIBRARY_PATH", tsUdfdLdLibPath}}; @@ -889,19 +889,19 @@ void udfdProcessCallRequest(SUvUdfWork *uvUdf, SUdfRequest *request) { break; } - case TSDB_UDF_CALL_AGG_MERGE: { - SUdfInterBuf outBuf = {.buf = taosMemoryMalloc(udf->bufSize), .bufLen = udf->bufSize, .numOfResult = 0}; - if (outBuf.buf != NULL) { - code = udf->scriptPlugin->udfAggMergeFunc(&call->interBuf, &call->interBuf2, &outBuf, udf->scriptUdfCtx); - freeUdfInterBuf(&call->interBuf); - freeUdfInterBuf(&call->interBuf2); - subRsp->resultBuf = outBuf; - } else { - code = terrno; - } - - break; - } + // case TSDB_UDF_CALL_AGG_MERGE: { + // SUdfInterBuf outBuf = {.buf = taosMemoryMalloc(udf->bufSize), .bufLen = udf->bufSize, .numOfResult = 0}; + // if (outBuf.buf != NULL) { + // code = udf->scriptPlugin->udfAggMergeFunc(&call->interBuf, &call->interBuf2, &outBuf, udf->scriptUdfCtx); + // freeUdfInterBuf(&call->interBuf); + // freeUdfInterBuf(&call->interBuf2); + // subRsp->resultBuf = outBuf; + // } else { + // code = terrno; + // } + // + // break; + // } case TSDB_UDF_CALL_AGG_FIN: { SUdfInterBuf outBuf = {.buf = taosMemoryMalloc(udf->bufSize), .bufLen = udf->bufSize, .numOfResult = 0}; if (outBuf.buf != NULL) { @@ -959,10 +959,10 @@ void udfdProcessCallRequest(SUvUdfWork *uvUdf, SUdfRequest *request) { freeUdfInterBuf(&subRsp->resultBuf); break; } - case TSDB_UDF_CALL_AGG_MERGE: { - freeUdfInterBuf(&subRsp->resultBuf); - break; - } + // case TSDB_UDF_CALL_AGG_MERGE: { + // freeUdfInterBuf(&subRsp->resultBuf); + // break; + // } case TSDB_UDF_CALL_AGG_FIN: { freeUdfInterBuf(&subRsp->resultBuf); break; From 956f9a5d4a5ac874764ba6663bfd6fa6b8a497c8 Mon Sep 17 00:00:00 2001 From: Pan Wei <72057773+dapan1121@users.noreply.github.com> Date: Thu, 19 Dec 2024 16:51:34 +0800 Subject: [PATCH 17/30] Update CMakeLists.txt --- source/libs/catalog/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/libs/catalog/CMakeLists.txt b/source/libs/catalog/CMakeLists.txt index 70528c1c88d9..3bdb0a9b1dca 100644 --- a/source/libs/catalog/CMakeLists.txt +++ b/source/libs/catalog/CMakeLists.txt @@ -11,6 +11,6 @@ target_link_libraries( PRIVATE os util transport qcom nodes ) -if(${BUILD_TEST}) - ADD_SUBDIRECTORY(test) -endif(${BUILD_TEST}) +#if(${BUILD_TEST}) +# ADD_SUBDIRECTORY(test) +#endif(${BUILD_TEST}) From 288dc33f97f248425a2a8f4b9e3a9d28fcc3451c Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Thu, 19 Dec 2024 17:48:11 +0800 Subject: [PATCH 18/30] enh: seperate tsdb async tasks to different thread pools --- source/dnode/mgmt/mgmt_dnode/src/dmHandle.c | 4 +- source/dnode/vnode/src/inc/tsdb.h | 3 - source/dnode/vnode/src/inc/vnd.h | 16 ++- source/dnode/vnode/src/inc/vnodeInt.h | 3 +- source/dnode/vnode/src/tsdb/tsdbCommit2.c | 6 +- source/dnode/vnode/src/tsdb/tsdbFS2.c | 111 +++++++++++--------- source/dnode/vnode/src/tsdb/tsdbFS2.h | 5 +- source/dnode/vnode/src/tsdb/tsdbFSet2.c | 27 ++--- source/dnode/vnode/src/tsdb/tsdbFSet2.h | 24 +++-- source/dnode/vnode/src/tsdb/tsdbMerge.c | 30 ++++-- source/dnode/vnode/src/tsdb/tsdbOpen.c | 16 --- source/dnode/vnode/src/tsdb/tsdbRetention.c | 51 +++++---- source/dnode/vnode/src/vnd/vnodeAsync.c | 19 +++- source/dnode/vnode/src/vnd/vnodeCommit.c | 3 +- source/dnode/vnode/src/vnd/vnodeModule.c | 2 - source/dnode/vnode/src/vnd/vnodeOpen.c | 9 -- source/dnode/vnode/src/vnd/vnodeSnapshot.c | 2 - 17 files changed, 185 insertions(+), 146 deletions(-) diff --git a/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c b/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c index ccc6439b5dde..625cca70872a 100644 --- a/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c +++ b/source/dnode/mgmt/mgmt_dnode/src/dmHandle.c @@ -475,7 +475,7 @@ int32_t dmProcessGrantRsp(SDnodeMgmt *pMgmt, SRpcMsg *pMsg) { return 0; } -extern void tsdbAlterMaxCompactTasks(); +extern void tsdbAlterNumCompactThreads(); static int32_t dmAlterMaxCompactTask(const char *value) { int32_t max_compact_tasks; char *endptr = NULL; @@ -489,7 +489,7 @@ static int32_t dmAlterMaxCompactTask(const char *value) { dInfo("alter max compact tasks from %d to %d", tsNumOfCompactThreads, max_compact_tasks); tsNumOfCompactThreads = max_compact_tasks; #ifdef TD_ENTERPRISE - tsdbAlterMaxCompactTasks(); + (void)tsdbAlterNumCompactThreads(); #endif } diff --git a/source/dnode/vnode/src/inc/tsdb.h b/source/dnode/vnode/src/inc/tsdb.h index 29248e360a76..47890e9b4baa 100644 --- a/source/dnode/vnode/src/inc/tsdb.h +++ b/source/dnode/vnode/src/inc/tsdb.h @@ -1083,9 +1083,6 @@ void tsdbRemoveFile(const char *path); } \ } while (0) -int32_t tsdbInit(); -void tsdbCleanUp(); - #ifdef __cplusplus } #endif diff --git a/source/dnode/vnode/src/inc/vnd.h b/source/dnode/vnode/src/inc/vnd.h index 882ea155e47e..b1a5ca47095c 100644 --- a/source/dnode/vnode/src/inc/vnd.h +++ b/source/dnode/vnode/src/inc/vnd.h @@ -55,18 +55,32 @@ typedef enum { EVA_PRIORITY_LOW, } EVAPriority; +typedef enum { + EVA_TASK_COMMIT = 1, + EVA_TASK_MERGE, + EVA_TASK_COMPACT, + EVA_TASK_RETENTION, +} EVATaskT; + +#define COMMIT_TASK_ASYNC 1 +#define MERGE_TASK_ASYNC 2 +#define COMPACT_TASK_ASYNC 3 +#define RETENTION_TASK_ASYNC 4 + int32_t vnodeAsyncOpen(); void vnodeAsyncClose(); int32_t vnodeAChannelInit(int64_t async, SVAChannelID* channelID); int32_t vnodeAChannelDestroy(SVAChannelID* channelID, bool waitRunning); int32_t vnodeAsync(int64_t async, EVAPriority priority, int32_t (*execute)(void*), void (*complete)(void*), void* arg, SVATaskID* taskID); -int32_t vnodeAsync2(SVAChannelID* channelID, EVAPriority priority, int32_t (*execute)(void*), void (*complete)(void*), +int32_t vnodeAsyncC(SVAChannelID* channelID, EVAPriority priority, int32_t (*execute)(void*), void (*complete)(void*), void* arg, SVATaskID* taskID); void vnodeAWait(SVATaskID* taskID); int32_t vnodeACancel(SVATaskID* taskID); int32_t vnodeAsyncSetWorkers(int64_t async, int32_t numWorkers); +const char* vnodeGetATaskName(EVATaskT task); + // vnodeBufPool.c typedef struct SVBufPoolNode SVBufPoolNode; struct SVBufPoolNode { diff --git a/source/dnode/vnode/src/inc/vnodeInt.h b/source/dnode/vnode/src/inc/vnodeInt.h index ef4b233f9438..4f1ecf81ddc9 100644 --- a/source/dnode/vnode/src/inc/vnodeInt.h +++ b/source/dnode/vnode/src/inc/vnodeInt.h @@ -479,8 +479,7 @@ struct SVnode { SVBufPool* onRecycle; // commit variables - SVAChannelID commitChannel; - SVATaskID commitTask; + SVATaskID commitTask; SMeta* pMeta; SSma* pSma; diff --git a/source/dnode/vnode/src/tsdb/tsdbCommit2.c b/source/dnode/vnode/src/tsdb/tsdbCommit2.c index e3c75760c8ab..5822463f9eab 100644 --- a/source/dnode/vnode/src/tsdb/tsdbCommit2.c +++ b/source/dnode/vnode/src/tsdb/tsdbCommit2.c @@ -574,7 +574,7 @@ static int32_t tsdbCommitInfoBuild(STsdb *tsdb) { // begin tasks on file set for (int i = 0; i < taosArrayGetSize(tsdb->commitInfo->arr); i++) { SFileSetCommitInfo *info = *(SFileSetCommitInfo **)taosArrayGet(tsdb->commitInfo->arr, i); - tsdbBeginTaskOnFileSet(tsdb, info->fid, &fset); + tsdbBeginTaskOnFileSet(tsdb, info->fid, EVA_TASK_COMMIT, &fset); if (fset) { code = tsdbTFileSetInitCopy(tsdb, fset, &info->fset); if (code) { @@ -712,7 +712,7 @@ int32_t tsdbCommitCommit(STsdb *tsdb) { for (int32_t i = 0; i < taosArrayGetSize(tsdb->commitInfo->arr); i++) { SFileSetCommitInfo *info = *(SFileSetCommitInfo **)taosArrayGet(tsdb->commitInfo->arr, i); if (info->fset) { - tsdbFinishTaskOnFileSet(tsdb, info->fid); + tsdbFinishTaskOnFileSet(tsdb, info->fid, EVA_TASK_COMMIT); } } @@ -743,7 +743,7 @@ int32_t tsdbCommitAbort(STsdb *pTsdb) { for (int32_t i = 0; i < taosArrayGetSize(pTsdb->commitInfo->arr); i++) { SFileSetCommitInfo *info = *(SFileSetCommitInfo **)taosArrayGet(pTsdb->commitInfo->arr, i); if (info->fset) { - tsdbFinishTaskOnFileSet(pTsdb, info->fid); + tsdbFinishTaskOnFileSet(pTsdb, info->fid, EVA_TASK_COMMIT); } } (void)taosThreadMutexUnlock(&pTsdb->mutex); diff --git a/source/dnode/vnode/src/tsdb/tsdbFS2.c b/source/dnode/vnode/src/tsdb/tsdbFS2.c index f024dd721079..fdc2ac48005c 100644 --- a/source/dnode/vnode/src/tsdb/tsdbFS2.c +++ b/source/dnode/vnode/src/tsdb/tsdbFS2.c @@ -770,8 +770,8 @@ extern void tsdbStopAllCompTask(STsdb *tsdb); int32_t tsdbDisableAndCancelAllBgTask(STsdb *pTsdb) { STFileSystem *fs = pTsdb->pFS; - SArray *channelArray = taosArrayInit(0, sizeof(SVAChannelID)); - if (channelArray == NULL) { + SArray *asyncTasks = taosArrayInit(0, sizeof(SVATaskID)); + if (asyncTasks == NULL) { return terrno; } @@ -783,30 +783,31 @@ int32_t tsdbDisableAndCancelAllBgTask(STsdb *pTsdb) { // collect channel STFileSet *fset; TARRAY2_FOREACH(fs->fSetArr, fset) { - if (fset->channelOpened) { - if (taosArrayPush(channelArray, &fset->channel) == NULL) { - taosArrayDestroy(channelArray); - (void)taosThreadMutexUnlock(&pTsdb->mutex); - return terrno; - } - fset->channel = (SVAChannelID){0}; - fset->mergeScheduled = false; - tsdbFSSetBlockCommit(fset, false); - fset->channelOpened = false; + if (taosArrayPush(asyncTasks, &fset->mergeTask) == NULL // + || taosArrayPush(asyncTasks, &fset->compactTask) == NULL // + || taosArrayPush(asyncTasks, &fset->retentionTask) == NULL) { + taosArrayDestroy(asyncTasks); + (void)taosThreadMutexUnlock(&pTsdb->mutex); + return terrno; } + fset->mergeScheduled = false; + tsdbFSSetBlockCommit(fset, false); } (void)taosThreadMutexUnlock(&pTsdb->mutex); // destroy all channels - for (int32_t i = 0; i < taosArrayGetSize(channelArray); i++) { - SVAChannelID *channel = taosArrayGet(channelArray, i); - int32_t code = vnodeAChannelDestroy(channel, true); - if (code) { - tsdbError("vgId:%d %s failed at line %d since %s", TD_VID(pTsdb->pVnode), __func__, __LINE__, tstrerror(code)); + for (int32_t k = 0; k < 2; k++) { + for (int32_t i = 0; i < taosArrayGetSize(asyncTasks); i++) { + SVATaskID *task = taosArrayGet(asyncTasks, i); + if (k == 0) { + (void)vnodeACancel(task); + } else { + (void)vnodeAWait(task); + } } } - taosArrayDestroy(channelArray); + taosArrayDestroy(asyncTasks); #ifdef TD_ENTERPRISE tsdbStopAllCompTask(pTsdb); @@ -934,9 +935,6 @@ int32_t tsdbFSEditCommit(STFileSystem *fs) { // bool skipMerge = false; int32_t numFile = TARRAY2_SIZE(lvl->fobjArr); if (numFile >= sttTrigger && (!fset->mergeScheduled)) { - code = tsdbTFileSetOpenChannel(fset); - TSDB_CHECK_CODE(code, lino, _exit); - SMergeArg *arg = taosMemoryMalloc(sizeof(*arg)); if (arg == NULL) { code = terrno; @@ -946,7 +944,7 @@ int32_t tsdbFSEditCommit(STFileSystem *fs) { arg->tsdb = fs->tsdb; arg->fid = fset->fid; - code = vnodeAsync2(&fset->channel, EVA_PRIORITY_HIGH, tsdbMerge, taosAutoMemoryFree, arg, NULL); + code = vnodeAsync(MERGE_TASK_ASYNC, EVA_PRIORITY_HIGH, tsdbMerge, taosAutoMemoryFree, arg, &fset->mergeTask); TSDB_CHECK_CODE(code, lino, _exit); fset->mergeScheduled = true; } @@ -1202,42 +1200,61 @@ int32_t tsdbFSCreateRefRangedSnapshot(STFileSystem *fs, int64_t sver, int64_t ev void tsdbFSDestroyRefRangedSnapshot(TFileSetRangeArray **fsrArr) { tsdbTFileSetRangeArrayDestroy(fsrArr); } -void tsdbBeginTaskOnFileSet(STsdb *tsdb, int32_t fid, STFileSet **fset) { +void tsdbBeginTaskOnFileSet(STsdb *tsdb, int32_t fid, EVATaskT task, STFileSet **fset) { + // Here, sttTrigger is protected by tsdb->mutex, so it is safe to read it without lock int16_t sttTrigger = tsdb->pVnode->config.sttTrigger; tsdbFSGetFSet(tsdb->pFS, fid, fset); - if (sttTrigger == 1 && (*fset)) { - for (;;) { - if ((*fset)->taskRunning) { - (*fset)->numWaitTask++; - - (void)taosThreadCondWait(&(*fset)->beginTask, &tsdb->mutex); + if (*fset == NULL) { + return; + } - tsdbFSGetFSet(tsdb->pFS, fid, fset); + struct STFileSetCond *cond = NULL; + if (sttTrigger == 1 || task == EVA_TASK_COMMIT) { + cond = &(*fset)->conds[0]; + } else { + cond = &(*fset)->conds[1]; + } - (*fset)->numWaitTask--; - } else { - (*fset)->taskRunning = true; - break; - } + while (1) { + if (cond->running) { + cond->numWait++; + (void)taosThreadCondWait(&cond->cond, &tsdb->mutex); + cond->numWait--; + } else { + cond->running = true; + break; } - tsdbInfo("vgId:%d begin task on file set:%d", TD_VID(tsdb->pVnode), fid); } + + tsdbInfo("vgId:%d begin %s task on file set:%d", TD_VID(tsdb->pVnode), vnodeGetATaskName(task), fid); + return; } -void tsdbFinishTaskOnFileSet(STsdb *tsdb, int32_t fid) { +void tsdbFinishTaskOnFileSet(STsdb *tsdb, int32_t fid, EVATaskT task) { + // Here, sttTrigger is protected by tsdb->mutex, so it is safe to read it without lock int16_t sttTrigger = tsdb->pVnode->config.sttTrigger; - if (sttTrigger == 1) { - STFileSet *fset = NULL; - tsdbFSGetFSet(tsdb->pFS, fid, &fset); - if (fset != NULL && fset->taskRunning) { - fset->taskRunning = false; - if (fset->numWaitTask > 0) { - (void)taosThreadCondSignal(&fset->beginTask); - } - tsdbInfo("vgId:%d finish task on file set:%d", TD_VID(tsdb->pVnode), fid); - } + + STFileSet *fset = NULL; + tsdbFSGetFSet(tsdb->pFS, fid, &fset); + if (fset == NULL) { + return; } + + struct STFileSetCond *cond = NULL; + if (sttTrigger == 1 || task == EVA_TASK_COMMIT) { + cond = &fset->conds[0]; + } else { + cond = &fset->conds[1]; + } + + cond->running = false; + if (cond->numWait > 0) { + (void)taosThreadCondSignal(&cond->cond); + } + + tsdbInfo("vgId:%d finish %s task on file set:%d", TD_VID(tsdb->pVnode), vnodeGetATaskName(task), fid); + return; } struct SFileSetReader { diff --git a/source/dnode/vnode/src/tsdb/tsdbFS2.h b/source/dnode/vnode/src/tsdb/tsdbFS2.h index 119015636b5e..9694edcdd918 100644 --- a/source/dnode/vnode/src/tsdb/tsdbFS2.h +++ b/source/dnode/vnode/src/tsdb/tsdbFS2.h @@ -14,6 +14,7 @@ */ #include "tsdbFSet2.h" +#include "vnd.h" #ifndef _TSDB_FILE_SYSTEM_H #define _TSDB_FILE_SYSTEM_H @@ -61,8 +62,8 @@ int32_t tsdbFSEditAbort(STFileSystem *fs); // other void tsdbFSGetFSet(STFileSystem *fs, int32_t fid, STFileSet **fset); void tsdbFSCheckCommit(STsdb *tsdb, int32_t fid); -void tsdbBeginTaskOnFileSet(STsdb *tsdb, int32_t fid, STFileSet **fset); -void tsdbFinishTaskOnFileSet(STsdb *tsdb, int32_t fid); +void tsdbBeginTaskOnFileSet(STsdb *tsdb, int32_t fid, EVATaskT task, STFileSet **fset); +void tsdbFinishTaskOnFileSet(STsdb *tsdb, int32_t fid, EVATaskT task); // utils int32_t save_fs(const TFileSetArray *arr, const char *fname); void current_fname(STsdb *pTsdb, char *fname, EFCurrentT ftype); diff --git a/source/dnode/vnode/src/tsdb/tsdbFSet2.c b/source/dnode/vnode/src/tsdb/tsdbFSet2.c index a0ae58ac9690..68914300e495 100644 --- a/source/dnode/vnode/src/tsdb/tsdbFSet2.c +++ b/source/dnode/vnode/src/tsdb/tsdbFSet2.c @@ -480,16 +480,18 @@ int32_t tsdbTFileSetInit(int32_t fid, STFileSet **fset) { fset[0]->maxVerValid = VERSION_MAX; TARRAY2_INIT(fset[0]->lvlArr); - // background task queue - (void)taosThreadCondInit(&(*fset)->beginTask, NULL); - (*fset)->taskRunning = false; - (*fset)->numWaitTask = 0; - // block commit variables (void)taosThreadCondInit(&fset[0]->canCommit, NULL); (*fset)->numWaitCommit = 0; (*fset)->blockCommit = false; + for (int32_t i = 0; i < sizeof((*fset)->conds) / sizeof((*fset)->conds[0]); ++i) { + struct STFileSetCond *cond = &(*fset)->conds[i]; + cond->running = false; + cond->numWait = 0; + (void)taosThreadCondInit(&cond->cond, NULL); + } + return 0; } @@ -648,8 +650,10 @@ void tsdbTFileSetClear(STFileSet **fset) { TARRAY2_DESTROY((*fset)->lvlArr, tsdbSttLvlClear); - (void)taosThreadCondDestroy(&(*fset)->beginTask); (void)taosThreadCondDestroy(&(*fset)->canCommit); + for (int32_t i = 0; i < sizeof((*fset)->conds) / sizeof((*fset)->conds[0]); ++i) { + (void)taosThreadCondDestroy(&(*fset)->conds[i].cond); + } taosMemoryFreeClear(*fset); } } @@ -703,14 +707,3 @@ bool tsdbTFileSetIsEmpty(const STFileSet *fset) { } return TARRAY2_SIZE(fset->lvlArr) == 0; } - -int32_t tsdbTFileSetOpenChannel(STFileSet *fset) { - int32_t code; - if (!fset->channelOpened) { - if ((code = vnodeAChannelInit(2, &fset->channel))) { - return code; - } - fset->channelOpened = true; - } - return 0; -} diff --git a/source/dnode/vnode/src/tsdb/tsdbFSet2.h b/source/dnode/vnode/src/tsdb/tsdbFSet2.h index 24ae59e30025..83ef32e5e5a3 100644 --- a/source/dnode/vnode/src/tsdb/tsdbFSet2.h +++ b/source/dnode/vnode/src/tsdb/tsdbFSet2.h @@ -68,8 +68,6 @@ bool tsdbTFileSetIsEmpty(const STFileSet *fset); // stt int32_t tsdbSttLvlInit(int32_t level, SSttLvl **lvl); void tsdbSttLvlClear(SSttLvl **lvl); -// open channel -int32_t tsdbTFileSetOpenChannel(STFileSet *fset); struct STFileOp { tsdb_fop_t optype; @@ -83,26 +81,30 @@ struct SSttLvl { TFileObjArray fobjArr[1]; }; +struct STFileSetCond { + bool running; + int32_t numWait; + TdThreadCond cond; +}; + struct STFileSet { int32_t fid; int64_t maxVerValid; STFileObj *farr[TSDB_FTYPE_MAX]; // file array TSttLvlArray lvlArr[1]; // level array - // background task - bool channelOpened; - SVAChannelID channel; - bool mergeScheduled; - - // sttTrigger = 1 - TdThreadCond beginTask; - bool taskRunning; - int32_t numWaitTask; + bool mergeScheduled; + SVATaskID mergeTask; + SVATaskID compactTask; + SVATaskID retentionTask; // block commit variables TdThreadCond canCommit; int32_t numWaitCommit; bool blockCommit; + + // conditions + struct STFileSetCond conds[2]; }; struct STFileSetRange { diff --git a/source/dnode/vnode/src/tsdb/tsdbMerge.c b/source/dnode/vnode/src/tsdb/tsdbMerge.c index 61a82d828e39..39d8a57692e7 100644 --- a/source/dnode/vnode/src/tsdb/tsdbMerge.c +++ b/source/dnode/vnode/src/tsdb/tsdbMerge.c @@ -462,21 +462,29 @@ static int32_t tsdbDoMerge(SMerger *merger) { static int32_t tsdbMergeGetFSet(SMerger *merger) { STFileSet *fset; + int32_t code; + STsdb *tsdb = merger->tsdb; (void)taosThreadMutexLock(&merger->tsdb->mutex); - tsdbFSGetFSet(merger->tsdb->pFS, merger->fid, &fset); - if (fset == NULL) { + + if (tsdb->bgTaskDisabled) { (void)taosThreadMutexUnlock(&merger->tsdb->mutex); return 0; } - fset->mergeScheduled = false; + tsdbBeginTaskOnFileSet(tsdb, merger->fid, EVA_TASK_MERGE, &fset); + if (NULL == fset) { + (void)taosThreadMutexUnlock(&merger->tsdb->mutex); + return 0; + } - int32_t code = tsdbTFileSetInitCopy(merger->tsdb, fset, &merger->fset); + code = tsdbTFileSetInitCopy(merger->tsdb, fset, &merger->fset); if (code) { (void)taosThreadMutexUnlock(&merger->tsdb->mutex); return code; } + + fset->mergeScheduled = false; (void)taosThreadMutexUnlock(&merger->tsdb->mutex); return 0; } @@ -493,10 +501,13 @@ int32_t tsdbMerge(void *arg) { .sttTrigger = tsdb->pVnode->config.sttTrigger, }}; - if (merger->sttTrigger <= 1) return 0; + if (merger->sttTrigger <= 1) { + return 0; + } // copy snapshot - TAOS_CHECK_GOTO(tsdbMergeGetFSet(merger), &lino, _exit); + code = tsdbMergeGetFSet(merger); + TSDB_CHECK_CODE(code, lino, _exit); if (merger->fset == NULL) { return 0; @@ -509,12 +520,19 @@ int32_t tsdbMerge(void *arg) { TSDB_CHECK_CODE(code, lino, _exit); _exit: + if (merger->fset) { + (void)taosThreadMutexLock(&tsdb->mutex); + tsdbFinishTaskOnFileSet(tsdb, mergeArg->fid, EVA_TASK_MERGE); + (void)taosThreadMutexUnlock(&tsdb->mutex); + } + if (code) { tsdbError("vgId:%d %s failed at %s:%d since %s", TD_VID(tsdb->pVnode), __func__, __FILE__, lino, tstrerror(code)); tsdbFatal("vgId:%d, failed to merge stt files since %s. code:%d", TD_VID(tsdb->pVnode), terrstr(), code); taosMsleep(100); exit(EXIT_FAILURE); } + tsdbTFileSetClear(&merger->fset); taosMemoryFree(arg); return code; diff --git a/source/dnode/vnode/src/tsdb/tsdbOpen.c b/source/dnode/vnode/src/tsdb/tsdbOpen.c index b2e462187816..c1f8f45d7e14 100644 --- a/source/dnode/vnode/src/tsdb/tsdbOpen.c +++ b/source/dnode/vnode/src/tsdb/tsdbOpen.c @@ -18,22 +18,6 @@ extern int32_t tsdbOpenCompMonitor(STsdb *tsdb); extern void tsdbCloseCompMonitor(STsdb *tsdb); -extern int32_t tsdbInitCompact(); -extern void tsdbCleanupCompact(); - -int32_t tsdbInit() { -#ifdef TD_ENTERPRISE - return tsdbInitCompact(); -#endif - return 0; -} - -void tsdbCleanUp() { -#ifdef TD_ENTERPRISE - tsdbCleanupCompact(); -#endif - return; -} void tsdbSetKeepCfg(STsdb *pTsdb, STsdbCfg *pCfg) { STsdbKeepCfg *pKeepCfg = &pTsdb->keepCfg; diff --git a/source/dnode/vnode/src/tsdb/tsdbRetention.c b/source/dnode/vnode/src/tsdb/tsdbRetention.c index 0cd83e3f8c35..fcce36b1217f 100644 --- a/source/dnode/vnode/src/tsdb/tsdbRetention.c +++ b/source/dnode/vnode/src/tsdb/tsdbRetention.c @@ -325,11 +325,21 @@ static int32_t tsdbRetention(void *arg) { // begin task (void)taosThreadMutexLock(&pTsdb->mutex); - tsdbBeginTaskOnFileSet(pTsdb, rtnArg->fid, &fset); + + // check if background task is disabled + if (pTsdb->bgTaskDisabled) { + tsdbInfo("vgId:%d, background task is disabled, skip retention", TD_VID(pTsdb->pVnode)); + (void)taosThreadMutexUnlock(&pTsdb->mutex); + return 0; + } + + // set flag and copy + tsdbBeginTaskOnFileSet(pTsdb, rtnArg->fid, EVA_TASK_RETENTION, &fset); if (fset && (code = tsdbTFileSetInitCopy(pTsdb, fset, &rtner.fset))) { (void)taosThreadMutexUnlock(&pTsdb->mutex); TSDB_CHECK_CODE(code, lino, _exit); } + (void)taosThreadMutexUnlock(&pTsdb->mutex); // do retention @@ -346,7 +356,7 @@ static int32_t tsdbRetention(void *arg) { _exit: if (rtner.fset) { (void)taosThreadMutexLock(&pTsdb->mutex); - tsdbFinishTaskOnFileSet(pTsdb, rtnArg->fid); + tsdbFinishTaskOnFileSet(pTsdb, rtnArg->fid, EVA_TASK_RETENTION); (void)taosThreadMutexUnlock(&pTsdb->mutex); } @@ -364,26 +374,29 @@ static int32_t tsdbAsyncRetentionImpl(STsdb *tsdb, int64_t now, bool s3Migrate) int32_t code = 0; int32_t lino = 0; - STFileSet *fset; - - if (!tsdb->bgTaskDisabled) { - TARRAY2_FOREACH(tsdb->pFS->fSetArr, fset) { - TAOS_CHECK_GOTO(tsdbTFileSetOpenChannel(fset), &lino, _exit); + // check if background task is disabled + if (tsdb->bgTaskDisabled) { + tsdbInfo("vgId:%d, background task is disabled, skip retention", TD_VID(tsdb->pVnode)); + return 0; + } - SRtnArg *arg = taosMemoryMalloc(sizeof(*arg)); - if (arg == NULL) { - TAOS_CHECK_GOTO(terrno, &lino, _exit); - } + STFileSet *fset; + TARRAY2_FOREACH(tsdb->pFS->fSetArr, fset) { + SRtnArg *arg = taosMemoryMalloc(sizeof(*arg)); + if (arg == NULL) { + TAOS_CHECK_GOTO(terrno, &lino, _exit); + } - arg->tsdb = tsdb; - arg->now = now; - arg->fid = fset->fid; - arg->s3Migrate = s3Migrate; + arg->tsdb = tsdb; + arg->now = now; + arg->fid = fset->fid; + arg->s3Migrate = s3Migrate; - if ((code = vnodeAsync2(&fset->channel, EVA_PRIORITY_LOW, tsdbRetention, tsdbRetentionCancel, arg, NULL))) { - taosMemoryFree(arg); - TSDB_CHECK_CODE(code, lino, _exit); - } + code = vnodeAsync(RETENTION_TASK_ASYNC, EVA_PRIORITY_LOW, tsdbRetention, tsdbRetentionCancel, arg, + &fset->retentionTask); + if (code) { + taosMemoryFree(arg); + TSDB_CHECK_CODE(code, lino, _exit); } } diff --git a/source/dnode/vnode/src/vnd/vnodeAsync.c b/source/dnode/vnode/src/vnd/vnodeAsync.c index 7b2412e7ae19..a829585f520d 100644 --- a/source/dnode/vnode/src/vnd/vnodeAsync.c +++ b/source/dnode/vnode/src/vnd/vnodeAsync.c @@ -493,10 +493,10 @@ int32_t vnodeAsync(int64_t async, EVAPriority priority, int32_t (*execute)(void .async = async, .id = 0, }; - return vnodeAsync2(&channelID, priority, execute, complete, arg, taskID); + return vnodeAsyncC(&channelID, priority, execute, complete, arg, taskID); } -int32_t vnodeAsync2(SVAChannelID *channelID, EVAPriority priority, int32_t (*execute)(void *), void (*cancel)(void *), +int32_t vnodeAsyncC(SVAChannelID *channelID, EVAPriority priority, int32_t (*execute)(void *), void (*cancel)(void *), void *arg, SVATaskID *taskID) { if (channelID == NULL || channelID->async < MIN_ASYNC_ID || channelID->async > MAX_ASYNC_ID || execute == NULL || channelID->id < 0) { @@ -827,4 +827,19 @@ int32_t vnodeAChannelDestroy(SVAChannelID *channelID, bool waitRunning) { channelID->async = 0; channelID->id = 0; return 0; +} + +const char *vnodeGetATaskName(EVATaskT taskType) { + switch (taskType) { + case EVA_TASK_COMMIT: + return "vnode-commit"; + case EVA_TASK_MERGE: + return "vnode-merge"; + case EVA_TASK_COMPACT: + return "vnode-compact"; + case EVA_TASK_RETENTION: + return "vnode-retention"; + default: + return "unknown"; + } } \ No newline at end of file diff --git a/source/dnode/vnode/src/vnd/vnodeCommit.c b/source/dnode/vnode/src/vnd/vnodeCommit.c index 0c44048fbf56..7fd3f9a8b69e 100644 --- a/source/dnode/vnode/src/vnd/vnodeCommit.c +++ b/source/dnode/vnode/src/vnd/vnodeCommit.c @@ -389,8 +389,7 @@ int vnodeAsyncCommit(SVnode *pVnode) { TSDB_CHECK_CODE(code, lino, _exit); // schedule the task - code = vnodeAsync2(&pVnode->commitChannel, EVA_PRIORITY_HIGH, vnodeCommit, vnodeCommitCancel, pInfo, - &pVnode->commitTask); + code = vnodeAsync(COMMIT_TASK_ASYNC, EVA_PRIORITY_HIGH, vnodeCommit, vnodeCommitCancel, pInfo, &pVnode->commitTask); TSDB_CHECK_CODE(code, lino, _exit); _exit: diff --git a/source/dnode/vnode/src/vnd/vnodeModule.c b/source/dnode/vnode/src/vnd/vnodeModule.c index a91c46db70e8..ff537ef4a7fb 100644 --- a/source/dnode/vnode/src/vnd/vnodeModule.c +++ b/source/dnode/vnode/src/vnd/vnodeModule.c @@ -27,7 +27,6 @@ int vnodeInit(StopDnodeFp stopDnodeFp) { TAOS_CHECK_RETURN(vnodeAsyncOpen()); TAOS_CHECK_RETURN(walInit(stopDnodeFp)); - TAOS_CHECK_RETURN(tsdbInit()); monInitVnode(); @@ -36,7 +35,6 @@ int vnodeInit(StopDnodeFp stopDnodeFp) { void vnodeCleanup() { if (atomic_val_compare_exchange_32(&VINIT, 1, 0) == 0) return; - tsdbCleanUp(); vnodeAsyncClose(); walCleanUp(); smaCleanUp(); diff --git a/source/dnode/vnode/src/vnd/vnodeOpen.c b/source/dnode/vnode/src/vnd/vnodeOpen.c index 945b4cbeaed9..6de5298728ca 100644 --- a/source/dnode/vnode/src/vnd/vnodeOpen.c +++ b/source/dnode/vnode/src/vnd/vnodeOpen.c @@ -438,11 +438,6 @@ SVnode *vnodeOpen(const char *path, int32_t diskPrimary, STfs *pTfs, SMsgCb msgC (void)taosThreadMutexInit(&pVnode->mutex, NULL); (void)taosThreadCondInit(&pVnode->poolNotEmpty, NULL); - if (vnodeAChannelInit(1, &pVnode->commitChannel) != 0) { - vError("vgId:%d, failed to init commit channel", TD_VID(pVnode)); - goto _err; - } - int8_t rollback = vnodeShouldRollback(pVnode); // open buffer pool @@ -558,10 +553,6 @@ void vnodePostClose(SVnode *pVnode) { vnodeSyncPostClose(pVnode); } void vnodeClose(SVnode *pVnode) { if (pVnode) { vnodeAWait(&pVnode->commitTask); - if (vnodeAChannelDestroy(&pVnode->commitChannel, true) != 0) { - vError("vgId:%d, failed to destroy commit channel", TD_VID(pVnode)); - } - vnodeSyncClose(pVnode); vnodeQueryClose(pVnode); tqClose(pVnode->pTq); diff --git a/source/dnode/vnode/src/vnd/vnodeSnapshot.c b/source/dnode/vnode/src/vnd/vnodeSnapshot.c index 0c1108336732..9e3c6861c08a 100644 --- a/source/dnode/vnode/src/vnd/vnodeSnapshot.c +++ b/source/dnode/vnode/src/vnd/vnodeSnapshot.c @@ -597,13 +597,11 @@ extern void tsdbEnableBgTask(STsdb *pTsdb); static int32_t vnodeCancelAndDisableAllBgTask(SVnode *pVnode) { TAOS_CHECK_RETURN(tsdbDisableAndCancelAllBgTask(pVnode->pTsdb)); TAOS_CHECK_RETURN(vnodeSyncCommit(pVnode)); - TAOS_CHECK_RETURN(vnodeAChannelDestroy(&pVnode->commitChannel, true)); return 0; } static int32_t vnodeEnableBgTask(SVnode *pVnode) { tsdbEnableBgTask(pVnode->pTsdb); - TAOS_CHECK_RETURN(vnodeAChannelInit(1, &pVnode->commitChannel)); return 0; } From 5b10753ac08e9b54c50f19d2dbf8a1f6e15e5248 Mon Sep 17 00:00:00 2001 From: 54liuyao <54liuyao@163.com> Date: Thu, 19 Dec 2024 18:23:57 +0800 Subject: [PATCH 19/30] add ut --- source/libs/stream/inc/streamInt.h | 3 + source/libs/stream/src/streamCheckpoint.c | 6 +- .../libs/stream/test/streamCheckPointTest.cpp | 203 ++++++++++++++++++ 3 files changed, 211 insertions(+), 1 deletion(-) create mode 100644 source/libs/stream/test/streamCheckPointTest.cpp diff --git a/source/libs/stream/inc/streamInt.h b/source/libs/stream/inc/streamInt.h index c25b0f34fc44..41ac0117f362 100644 --- a/source/libs/stream/inc/streamInt.h +++ b/source/libs/stream/inc/streamInt.h @@ -250,6 +250,9 @@ void chkptFailedByRetrieveReqToSource(SStreamTask* pTask, int64_t checkpointId); // inject stream errors void chkptFailedByRetrieveReqToSource(SStreamTask* pTask, int64_t checkpointId); +int32_t uploadCheckpointData(SStreamTask* pTask, int64_t checkpointId, int64_t dbRefId, ECHECKPOINT_BACKUP_TYPE type); +int32_t chkptTriggerRecvMonitorHelper(SStreamTask* pTask, void* param, SArray** ppNotSendList); + #ifdef __cplusplus } #endif diff --git a/source/libs/stream/src/streamCheckpoint.c b/source/libs/stream/src/streamCheckpoint.c index 876cd1b4721d..0ec66cd2ce27 100644 --- a/source/libs/stream/src/streamCheckpoint.c +++ b/source/libs/stream/src/streamCheckpoint.c @@ -21,7 +21,9 @@ 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, int64_t checkpointId); +#ifdef BUILD_NO_CALL static int32_t deleteCheckpoint(const char* id); +#endif static int32_t downloadCheckpointByNameS3(const char* id, const char* fname, const char* dstName); static int32_t continueDispatchCheckpointTriggerBlock(SStreamDataBlock* pBlock, SStreamTask* pTask); static int32_t appendCheckpointIntoInputQ(SStreamTask* pTask, int32_t checkpointType, int64_t checkpointId, @@ -998,7 +1000,7 @@ static int32_t doFindNotSendUpstream(SStreamTask* pTask, SArray* pList, SArray** return 0; } -static int32_t chkptTriggerRecvMonitorHelper(SStreamTask* pTask, void* param, SArray** ppNotSendList) { +int32_t chkptTriggerRecvMonitorHelper(SStreamTask* pTask, void* param, SArray** ppNotSendList) { const char* id = pTask->id.idStr; SArray* pList = pTask->upstreamInfo.pList; // send msg to retrieve checkpoint trigger msg SActiveCheckpointInfo* pActiveInfo = pTask->chkInfo.pActiveInfo; @@ -1492,6 +1494,7 @@ int32_t streamTaskDownloadCheckpointData(const char* id, char* path, int64_t che return 0; } +#ifdef BUILD_NO_CALL int32_t deleteCheckpoint(const char* id) { if (id == NULL || strlen(id) == 0) { stError("deleteCheckpoint parameters invalid"); @@ -1504,6 +1507,7 @@ int32_t deleteCheckpoint(const char* id) { } return 0; } +#endif int32_t deleteCheckpointFile(const char* id, const char* name) { char object[128] = {0}; diff --git a/source/libs/stream/test/streamCheckPointTest.cpp b/source/libs/stream/test/streamCheckPointTest.cpp new file mode 100644 index 000000000000..cad02a514e96 --- /dev/null +++ b/source/libs/stream/test/streamCheckPointTest.cpp @@ -0,0 +1,203 @@ +#include +#include "tstream.h" +#include "streamInt.h" + +TEST(streamCheckpointTest, StreamTaskProcessCheckpointTriggerRsp) { + SStreamTask* pTask = NULL; + int64_t uid = 1111111111111111; + SArray* array = taosArrayInit(4, sizeof(SStreamTask)); + int32_t code = tNewStreamTask(uid, TASK_LEVEL__SINK, NULL, false, 0, 0, array, + false, 1, &pTask); + ASSERT_EQ(code, TSDB_CODE_SUCCESS); + + code = streamTaskCreateActiveChkptInfo(&pTask->chkInfo.pActiveInfo); + ASSERT_EQ(code, TSDB_CODE_SUCCESS); + + pTask->chkInfo.pActiveInfo->activeId = 123111; + pTask->chkInfo.pActiveInfo->transId = 4561111; + + streamTaskSetStatusReady(pTask); + code = streamTaskHandleEvent(pTask->status.pSM, TASK_EVENT_GEN_CHECKPOINT); + ASSERT_EQ(code, TSDB_CODE_SUCCESS); + + SCheckpointTriggerRsp pRsp; + memset(&pRsp, 0, sizeof(SCheckpointTriggerRsp)); + pRsp.rspCode = TSDB_CODE_SUCCESS; + pRsp.checkpointId = 123; + pRsp.transId = 456; + pRsp.upstreamTaskId = 789; + + code = streamTaskProcessCheckpointTriggerRsp(pTask, &pRsp); + ASSERT_NE(code, TSDB_CODE_SUCCESS); + + pRsp.rspCode = TSDB_CODE_FAILED; + code = streamTaskProcessCheckpointTriggerRsp(pTask, &pRsp); + ASSERT_EQ(code, TSDB_CODE_SUCCESS); + + tFreeStreamTask(pTask); +} + +TEST(streamCheckpointTest, StreamTaskSetFailedCheckpointId) { + SStreamTask* pTask = NULL; + int64_t uid = 1111111111111111; + SArray* array = taosArrayInit(4, sizeof(SStreamTask)); + int32_t code = tNewStreamTask(uid, TASK_LEVEL__SINK, NULL, false, 0, 0, array, + false, 1, &pTask); + ASSERT_EQ(code, TSDB_CODE_SUCCESS); + + code = streamTaskCreateActiveChkptInfo(&pTask->chkInfo.pActiveInfo); + ASSERT_EQ(code, TSDB_CODE_SUCCESS); + + SActiveCheckpointInfo* pInfo = pTask->chkInfo.pActiveInfo; + pInfo->failedId = 0; + + int64_t failedCheckpointId = 123; + + streamTaskSetFailedCheckpointId(pTask, failedCheckpointId); + ASSERT_EQ(pInfo->failedId, failedCheckpointId); + + streamTaskSetFailedCheckpointId(pTask, 0); + ASSERT_EQ(pInfo->failedId, failedCheckpointId); + + streamTaskSetFailedCheckpointId(pTask, pInfo->failedId - 1); + ASSERT_EQ(pInfo->failedId, failedCheckpointId); + tFreeStreamTask(pTask); +} + +TEST(UploadCheckpointDataTest, UploadSuccess) { + SStreamTask* pTask = NULL; + int64_t uid = 1111111111111111; + SArray* array = taosArrayInit(4, sizeof(SStreamTask)); + int32_t code = tNewStreamTask(uid, TASK_LEVEL__SINK, NULL, false, 0, 0, array, + false, 1, &pTask); + ASSERT_EQ(code, TSDB_CODE_SUCCESS); + + code = streamTaskCreateActiveChkptInfo(&pTask->chkInfo.pActiveInfo); + ASSERT_EQ(code, TSDB_CODE_SUCCESS); + + int64_t checkpointId = 123; + int64_t dbRefId = 1; + ECHECKPOINT_BACKUP_TYPE type = DATA_UPLOAD_S3; + + STaskDbWrapper* pBackend = NULL; + int64_t processVer = -1; + const char *path = "/tmp/backend3/stream"; + code = streamMetaOpen((path), NULL, NULL, NULL, 0, 0, NULL, &pTask->pMeta); + ASSERT_EQ(code, TSDB_CODE_SUCCESS); + + SStreamState *pState = streamStateOpen((char *)path, pTask, 0, 0); + ASSERT(pState != NULL); + + pTask->pBackend = pState->pTdbState->pOwner->pBackend; + + code = taskDbDoCheckpoint(pTask->pBackend, checkpointId, 0); + ASSERT(code == 0); + + int32_t result = uploadCheckpointData(pTask, checkpointId, dbRefId, type); + + EXPECT_EQ(result, TSDB_CODE_SUCCESS) << "uploadCheckpointData should return 0 on success"; +} + +TEST(UploadCheckpointDataTest, UploadDisabled) { + SStreamTask* pTask = NULL; + int64_t uid = 2222222222222; + SArray* array = taosArrayInit(4, sizeof(SStreamTask)); + int32_t code = tNewStreamTask(uid, TASK_LEVEL__SINK, NULL, false, 0, 0, array, + false, 1, &pTask); + ASSERT_EQ(code, TSDB_CODE_SUCCESS); + + code = streamTaskCreateActiveChkptInfo(&pTask->chkInfo.pActiveInfo); + ASSERT_EQ(code, TSDB_CODE_SUCCESS); + + int64_t checkpointId = 123; + int64_t dbRefId = 1; + + STaskDbWrapper* pBackend = NULL; + int64_t processVer = -1; + const char *path = "/tmp/backend4/stream"; + code = streamMetaOpen((path), NULL, NULL, NULL, 0, 0, NULL, &pTask->pMeta); + ASSERT_EQ(code, TSDB_CODE_SUCCESS); + + SStreamState *pState = streamStateOpen((char *)path, pTask, 0, 0); + ASSERT(pState != NULL); + + pTask->pBackend = pState->pTdbState->pOwner->pBackend; + + code = taskDbDoCheckpoint(pTask->pBackend, checkpointId, 0); + ASSERT(code == 0); + + ECHECKPOINT_BACKUP_TYPE type = DATA_UPLOAD_DISABLE; + + int32_t result = uploadCheckpointData(pTask, checkpointId, dbRefId, type); + + EXPECT_NE(result, TSDB_CODE_SUCCESS) << "uploadCheckpointData should return 0 when backup type is disabled"; +} + +TEST(StreamTaskAlreadySendTriggerTest, AlreadySendTrigger) { + SStreamTask* pTask = NULL; + int64_t uid = 2222222222222; + SArray* array = taosArrayInit(4, sizeof(SStreamTask)); + int32_t code = tNewStreamTask(uid, TASK_LEVEL__SINK, NULL, false, 0, 0, array, + false, 1, &pTask); + ASSERT_EQ(code, TSDB_CODE_SUCCESS); + + code = streamTaskCreateActiveChkptInfo(&pTask->chkInfo.pActiveInfo); + ASSERT_EQ(code, TSDB_CODE_SUCCESS); + + pTask->chkInfo.pActiveInfo->activeId = 123111; + pTask->chkInfo.pActiveInfo->transId = 4561111; + + streamTaskSetStatusReady(pTask); + code = streamTaskHandleEvent(pTask->status.pSM, TASK_EVENT_GEN_CHECKPOINT); + ASSERT_EQ(code, TSDB_CODE_SUCCESS); + + int32_t downstreamNodeId = 1; + int64_t sendingCheckpointId = 123; + + STaskTriggerSendInfo triggerInfo = {.sendTs = taosGetTimestampMs(), .recved = false, .nodeId = downstreamNodeId }; + taosArrayPush(pTask->chkInfo.pActiveInfo->pDispatchTriggerList, &triggerInfo); + + pTask->chkInfo.pActiveInfo->dispatchTrigger = true; + bool result = streamTaskAlreadySendTrigger(pTask, downstreamNodeId); + + EXPECT_TRUE(result) << "The trigger message should have been sent to the downstream node"; + + taosArrayDestroy(pTask->chkInfo.pActiveInfo->pDispatchTriggerList); +} + +TEST(ChkptTriggerRecvMonitorHelperTest, chkptTriggerRecvMonitorHelper) { + SStreamTask* pTask = NULL; + int64_t uid = 2222222222222; + SArray* array = taosArrayInit(4, sizeof(SStreamTask)); + int32_t code = tNewStreamTask(uid, TASK_LEVEL__SINK, NULL, false, 0, 0, array, + false, 1, &pTask); + ASSERT_EQ(code, TSDB_CODE_SUCCESS); + + const char *path = "/tmp/backend5/stream"; + code = streamMetaOpen((path), NULL, NULL, NULL, 0, 0, NULL, &pTask->pMeta); + ASSERT_EQ(code, TSDB_CODE_SUCCESS); + + code = streamTaskCreateActiveChkptInfo(&pTask->chkInfo.pActiveInfo); + ASSERT_EQ(code, TSDB_CODE_SUCCESS); + + pTask->chkInfo.pActiveInfo->activeId = 123111; + pTask->chkInfo.pActiveInfo->chkptTriggerMsgTmr.launchChkptId = pTask->chkInfo.pActiveInfo->activeId; + pTask->chkInfo.pActiveInfo->transId = 4561111; + pTask->chkInfo.startTs = 11111; + + streamTaskSetStatusReady(pTask); + code = streamTaskHandleEvent(pTask->status.pSM, TASK_EVENT_GEN_CHECKPOINT); + ASSERT_EQ(code, TSDB_CODE_SUCCESS); + + int32_t downstreamNodeId = 1; + int64_t sendingCheckpointId = 123; + + STaskTriggerSendInfo triggerInfo = {.sendTs = taosGetTimestampMs(), .recved = false, .nodeId = downstreamNodeId }; + taosArrayPush(pTask->chkInfo.pActiveInfo->pDispatchTriggerList, &triggerInfo); + + pTask->chkInfo.pActiveInfo->dispatchTrigger = true; + SArray* array1 = NULL; + code = chkptTriggerRecvMonitorHelper(pTask, NULL, &array1); + + EXPECT_EQ(code, TSDB_CODE_SUCCESS); +} From b89532c83c42417696d4bf77b05165d63a0bff0e Mon Sep 17 00:00:00 2001 From: 54liuyao <54liuyao@163.com> Date: Thu, 19 Dec 2024 19:24:41 +0800 Subject: [PATCH 20/30] add ut --- source/libs/stream/test/streamCheckPointTest.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/source/libs/stream/test/streamCheckPointTest.cpp b/source/libs/stream/test/streamCheckPointTest.cpp index cad02a514e96..0e1d73fef811 100644 --- a/source/libs/stream/test/streamCheckPointTest.cpp +++ b/source/libs/stream/test/streamCheckPointTest.cpp @@ -198,6 +198,11 @@ TEST(ChkptTriggerRecvMonitorHelperTest, chkptTriggerRecvMonitorHelper) { pTask->chkInfo.pActiveInfo->dispatchTrigger = true; SArray* array1 = NULL; code = chkptTriggerRecvMonitorHelper(pTask, NULL, &array1); - EXPECT_EQ(code, TSDB_CODE_SUCCESS); + + pTask->pMeta->fatalInfo.code = TSDB_CODE_SUCCESS; + streamSetFatalError(pTask->pMeta, code, __func__, __LINE__); + + pTask->pMeta->fatalInfo.code = TSDB_CODE_FAILED; + streamSetFatalError(pTask->pMeta, code, __func__, __LINE__); } From e7a6bc195a8d95745f4518493736d84ee449decb Mon Sep 17 00:00:00 2001 From: 54liuyao <54liuyao@163.com> Date: Fri, 20 Dec 2024 08:38:57 +0800 Subject: [PATCH 21/30] adj ci --- tests/script/tsim/stream/streamInterpPrimaryKey2.sim | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/script/tsim/stream/streamInterpPrimaryKey2.sim b/tests/script/tsim/stream/streamInterpPrimaryKey2.sim index f06e1ecd0349..0574a1ceec5e 100644 --- a/tests/script/tsim/stream/streamInterpPrimaryKey2.sim +++ b/tests/script/tsim/stream/streamInterpPrimaryKey2.sim @@ -4,6 +4,8 @@ system sh/exec.sh -n dnode1 -s start sleep 50 sql connect +sql alter local 'streamCoverage' '1'; + print step1 print =============== create database sql create database test vgroups 1; From 8b77ac9a03530a982e2f1fa068004e3e90fbdacf Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Fri, 20 Dec 2024 08:41:41 +0800 Subject: [PATCH 22/30] fix: windows compile issue --- source/dnode/vnode/src/vnd/vnodeAsync.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/dnode/vnode/src/vnd/vnodeAsync.c b/source/dnode/vnode/src/vnd/vnodeAsync.c index a829585f520d..49c130673671 100644 --- a/source/dnode/vnode/src/vnd/vnodeAsync.c +++ b/source/dnode/vnode/src/vnd/vnodeAsync.c @@ -122,7 +122,7 @@ struct { const char *label; SVAsync *async; } GVnodeAsyncs[] = { - [0] = {}, + [0] = {NULL, NULL}, [1] = {"vnode-commit", NULL}, [2] = {"vnode-merge", NULL}, [3] = {"vnode-compact", NULL}, From 5b1368db2ff93ae2354eb8a56bae4f55556d31d9 Mon Sep 17 00:00:00 2001 From: 54liuyao <54liuyao@163.com> Date: Fri, 20 Dec 2024 08:46:57 +0800 Subject: [PATCH 23/30] adj ci --- source/libs/stream/test/streamCheckPointTest.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/libs/stream/test/streamCheckPointTest.cpp b/source/libs/stream/test/streamCheckPointTest.cpp index 0e1d73fef811..8b15b33b2f30 100644 --- a/source/libs/stream/test/streamCheckPointTest.cpp +++ b/source/libs/stream/test/streamCheckPointTest.cpp @@ -153,8 +153,9 @@ TEST(StreamTaskAlreadySendTriggerTest, AlreadySendTrigger) { int32_t downstreamNodeId = 1; int64_t sendingCheckpointId = 123; + TSKEY ts = taosGetTimestampMs(); - STaskTriggerSendInfo triggerInfo = {.sendTs = taosGetTimestampMs(), .recved = false, .nodeId = downstreamNodeId }; + STaskTriggerSendInfo triggerInfo = {.sendTs = ts, .recved = false, .nodeId = downstreamNodeId }; taosArrayPush(pTask->chkInfo.pActiveInfo->pDispatchTriggerList, &triggerInfo); pTask->chkInfo.pActiveInfo->dispatchTrigger = true; @@ -191,8 +192,9 @@ TEST(ChkptTriggerRecvMonitorHelperTest, chkptTriggerRecvMonitorHelper) { int32_t downstreamNodeId = 1; int64_t sendingCheckpointId = 123; + TSKEY ts = taosGetTimestampMs(); - STaskTriggerSendInfo triggerInfo = {.sendTs = taosGetTimestampMs(), .recved = false, .nodeId = downstreamNodeId }; + STaskTriggerSendInfo triggerInfo = {.sendTs = ts, .recved = false, .nodeId = downstreamNodeId }; taosArrayPush(pTask->chkInfo.pActiveInfo->pDispatchTriggerList, &triggerInfo); pTask->chkInfo.pActiveInfo->dispatchTrigger = true; From 979a669ecd8d2e216b51a3797723af29a566f726 Mon Sep 17 00:00:00 2001 From: 54liuyao <54liuyao@163.com> Date: Fri, 20 Dec 2024 09:37:14 +0800 Subject: [PATCH 24/30] try fix window com error --- source/libs/stream/inc/streamInt.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/libs/stream/inc/streamInt.h b/source/libs/stream/inc/streamInt.h index 41ac0117f362..39a3804c59c0 100644 --- a/source/libs/stream/inc/streamInt.h +++ b/source/libs/stream/inc/streamInt.h @@ -114,7 +114,7 @@ typedef struct { int32_t sendCompleted; } STaskCheckpointReadyInfo; -typedef struct { +typedef struct STaskTriggerSendInfo { int64_t sendTs; int64_t recvTs; bool recved; From a24c594746f255a7a68b0e97723c5af6cb4031d1 Mon Sep 17 00:00:00 2001 From: zyyang Date: Fri, 20 Dec 2024 11:15:17 +0800 Subject: [PATCH 25/30] feat(backup): TDengine enterprise backup and restore#TD-31475 --- docs/zh/08-operation/09-backup.md | 155 +++++++++++++++--- .../zh/08-operation/pic/backup-00-concept.png | Bin 0 -> 32893 bytes docs/zh/08-operation/pic/backup-01-create.png | Bin 0 -> 96040 bytes docs/zh/08-operation/pic/backup-02-form.png | Bin 0 -> 56704 bytes docs/zh/08-operation/pic/backup-03-list.png | Bin 0 -> 57186 bytes docs/zh/08-operation/pic/backup-04-view.png | Bin 0 -> 108698 bytes docs/zh/08-operation/pic/backup-05-edit.png | Bin 0 -> 104993 bytes docs/zh/08-operation/pic/backup-06-copy.png | Bin 0 -> 121583 bytes docs/zh/08-operation/pic/backup-07-del.png | Bin 0 -> 56800 bytes docs/zh/08-operation/pic/backup-08-files.png | Bin 0 -> 51071 bytes .../08-operation/pic/backup-09-filelist.png | Bin 0 -> 41014 bytes .../pic/backup-10-restore-create.png | Bin 0 -> 65990 bytes .../pic/backup-11-restore-list.png | Bin 0 -> 57904 bytes 13 files changed, 135 insertions(+), 20 deletions(-) create mode 100644 docs/zh/08-operation/pic/backup-00-concept.png create mode 100644 docs/zh/08-operation/pic/backup-01-create.png create mode 100644 docs/zh/08-operation/pic/backup-02-form.png create mode 100644 docs/zh/08-operation/pic/backup-03-list.png create mode 100644 docs/zh/08-operation/pic/backup-04-view.png create mode 100644 docs/zh/08-operation/pic/backup-05-edit.png create mode 100644 docs/zh/08-operation/pic/backup-06-copy.png create mode 100644 docs/zh/08-operation/pic/backup-07-del.png create mode 100644 docs/zh/08-operation/pic/backup-08-files.png create mode 100644 docs/zh/08-operation/pic/backup-09-filelist.png create mode 100644 docs/zh/08-operation/pic/backup-10-restore-create.png create mode 100644 docs/zh/08-operation/pic/backup-11-restore-list.png diff --git a/docs/zh/08-operation/09-backup.md b/docs/zh/08-operation/09-backup.md index 1eda0a646bca..075cc244f4a4 100644 --- a/docs/zh/08-operation/09-backup.md +++ b/docs/zh/08-operation/09-backup.md @@ -6,45 +6,154 @@ toc_max_heading_level: 4 为了防止数据丢失、误删操作,TDengine 提供全面的数据备份、恢复、容错、异地数据实时同步等功能,以保证数据存储的安全。本节简要说明备份和恢复功能。 -## 基于 taosdump 进行数据备份恢复 +# 1. 基于 taosdump 进行数据备份恢复 -taosdump 是一个开源工具,用于支持从运行中的 TDengine 集群备份数据并将备份的数据恢复到相同或另一个正在运行的 TDengine 集群中。taosdump 可以将数据库作为逻辑数据单元进行备份,也可以对数据库中指定时间段内的数据记录进行备份。在使用taosdump 时,可以指定数据备份的目录路径。如果不指定目录路径,taosdump 将默认将数据备份到当前目录。 +taosdump 是一个开源工具,用于支持从运行中的 TDengine 集群备份数据并将备份的数据恢复到相同或另一个正在运行的 TDengine +集群中。taosdump 可以将数据库作为逻辑数据单元进行备份,也可以对数据库中指定时间段内的数据记录进行备份。在使用taosdump +时,可以指定数据备份的目录路径。如果不指定目录路径,taosdump 将默认将数据备份到当前目录。 以下为 taosdump 执行数据备份的使用示例。 + ```shell taosdump -h localhost -P 6030 -D dbname -o /file/path ``` -执行上述命令后,taosdump 会连接 localhost:6030 所在的 TDengine 集群,查询数据库 dbname 中的所有数据,并将数据备份到 /f ile/path 下。 +执行上述命令后,taosdump 会连接 localhost:6030 所在的 TDengine 集群,查询数据库 dbname 中的所有数据,并将数据备份到 /f +ile/path 下。 + +在使用 taosdump 时,如果指定的存储路径已经包含数据文件,taosdump +会提示用户并立即退出,以避免数据被覆盖。这意味着同一存储路径只能用于一次备份。如果你看到相关提示,请谨慎操作,以免误操作导致数据丢失。 -在使用 taosdump 时,如果指定的存储路径已经包含数据文件,taosdump 会提示用户并立即退出,以避免数据被覆盖。这意味着同一存储路径只能用于一次备份。如果你看到相关提示,请谨慎操作,以免误操作导致数据丢失。 +要将本地指定文件路径中的数据文件恢复到正在运行的 TDengine 集群中,可以通过指定命令行参数和数据文件所在路径来执行 taosdump +命令。以下为 taosdump 执行数据恢复的示例代码。 -要将本地指定文件路径中的数据文件恢复到正在运行的 TDengine 集群中,可以通过指定命令行参数和数据文件所在路径来执行 taosdump 命令。以下为 taosdump 执行数据恢复的示例代码。 ```shell taosdump -i /file/path -h localhost -P 6030 ``` 执行上述命令后,taosdump 会连接 localhost:6030 所在的 TDengine 集群,并将 /file/path 下的数据文件恢复到 TDengine 集群中。 -## 基于 TDengine Enterprise 进行数据备份恢复 +# 2. 基于 TDengine Enterprise 进行数据备份恢复 + +## 2.1. 概念 + +基于 TDengine 的数据订阅功能,TDengine Enterprise 实现了数据的增量备份和恢复。用户可以通过 taosExplorer 对 TDengine +集群进行备份和恢复。 + +TDengine Enterprise 的备份和恢复功能包括以下几个概念: + +1. 备份对象:用户可以对一个数据库,或者一个超级表进行备份。 +2. 备份计划:用户可以为某个备份对象创建一个备份计划。备份计划从指定的时间点开始,周期性的执行一次备份任务,并生成一组备份文件。 +3. 备份点:每执行一次备份任务,生成一组备份文件,它们对应一个时间点,称为**备份点**。第一个备份点称为**初始备份点**。 +4. 备份文件:多个备份点,组成备份计划的备份文件。 +5. 恢复任务:用户可以选择备份计划的某个备份点,创建一个恢复任务。恢复任务会从初始备份点开始,逐个应用备份点,恢复到指定的备份点。 + +![backup-zh-00.png](./pic/backup-00-concept.png "数据备份和恢复") + +以上面的图为例: + +1. 用户创建了一个备份计划,从 2024-08-27 00:00:00 开始,每隔 1 天执行一次备份任务。 +2. 在 2024-08-27 00:00:00 执行了第一次备份任务,生成了一个备份点。 +3. 之后,每隔 1 天执行一次备份任务,生成了多个备份点,组成了备份文件。 +4. 用户可以选择某个备份点,创建一个恢复任务,恢复到指定的备份点。 +5. 恢复任务会从初始备份点开始,逐个应用备份点,恢复到指定的备份点。 + +## 2.2. 备份计划 + +### 2.1.1. 创建 + +1. 通过浏览器访问 taosExplorer 服务,访问地址通常为 TDengine 集群所在 IP 地址的端口 6060,如 http://localhost:6060。 +2. 在 taosExplorer 服务页面中,进入“系统管理 - 备份”页面,点击“创建备份计划”按钮。 + +![backup-zh-01.png](./pic/backup-01-create.png "创建备份计划") + +3. 在弹出的“创建备份计划”表单中,填写备份计划的相关信息。 + +![backup-zh-02.png](./pic/backup-02-form.png "填写备份计划信息") + +需要填写的信息包括: + +* 数据库:需要备份的数据库名称。一个备份计划只能备份一个数据库/超级表。 +* 超级表:需要备份的超级表名称。如果不填写,则备份整个数据库。 +* 下次执行时间:首次执行备份任务的日期时间。 +* 备份周期:备份点之间的时间间隔。注意:备份周期必须大于数据库的 WAL_RETENTION_PERIOD 参数值。 +* 错误重试次数:对于可通过重试解决的错误,系统会按照此次数进行重试。 +* 错误重试间隔:每次重试之间的时间间隔。 +* 目录:存储备份文件的目录。 +* 备份文件大小:备份文件的大小限制。当备份文件大小达到此限制时,会自动创建新的备份文件。 +* 文件压缩等级:备份文件的压缩等级。支持:最快速度、最佳压缩比、兼具速度和压缩比。 + +创建成功后,备份计划会开始按照配置的参数运行。 + +### 2.1.2. 查看 + +在“备份计划”下的列表中,可以查看已创建的备份计划。 + +![backup-zh-03.png](./pic/backup-03-list.png "查看备份计划列表") + +点击“操作”中的“查看”按钮,可以查看备份计划的详细信息。 + +![backup-zh-04.png](./pic/backup-04-view.png "查看备份计划详情") + +### 2.1.3. 修改 + +点击“操作”中的“修改”按钮,可以修改备份计划的配置。 -TDengine Enterprise 提供了一个高效的增量备份功能,具体流程如下。 +![backup-zh-05.png](./pic/backup-05-edit.png "修改备份计划") -第 1 步,通过浏览器访问 taosExplorer 服务,访问地址通常为 TDengine 集群所在 IP 地址的端口 6060,如 http://localhost:6060。 +修改备份计划的配置后,当前运行的备份任务会先停止,然后按照新的配置重新运行。 -第 2 步,在 taosExplorer 服务页面中的“系统管理 - 备份”页面新增一个数据备份任务,在任务配置信息中填写需要备份的数据库名称和备份存储文件路径,完成创建任务 -后即可启动数据备份。 在数据备份配置页面中可以配置三个参数: - - 备份周期:必填项,配置每次执行数据备份的时间间隔,可通过下拉框选择每天、每 7 天、每 30 天执行一次数据备份,配置后,会在对应的备份周期的0:00时启动一次数据备份任务; - - 数据库:必填项,配置需要备份的数据库名(数据库的 wal_retention_period 参数需大于0); - - 目录:必填项,配置将数据备份到 taosX 所在运行环境中指定的路径下,如 /root/data_backup; +### 2.1.4. 复制 -第 3 步,在数据备份任务完成后,在相同页面的已创建任务列表中找到创建的数据备份任务,直接执行一键恢复,就能够将数据恢复到 TDengine 中。 +点击“操作”中的“复制”按钮,可以复制备份计划。 -与 taosdump 相比,如果对相同的数据在指定存储路径下进行多次备份操作,由于TDengine Enterprise 不仅备份效率高,而且实行的是增量处理,因此每次备份任务都会很快完成。而由于 taosdump 永远是全量备份,因此 TDengine Enterprise 在数据量较大的场景下可以显著减小系统开销,而且更加方便。 +![backup-zh-06.png](./pic/backup-06-copy.png "复制备份计划") -**常见错误排查** +除了数据库和超级表被置为空外,其他配置项和被复制的计划相同。用户点击“确认”后,创建一个新的备份计划。 -1. 如果任务启动失败并报以下错误: +### 2.1.5. 删除 + +在操作中点击关闭按钮,可以停止当前备份计划。点击“操作”中的“删除”按钮,可以删除备份计划。 + +![backup-zh-07.png](./pic/backup-07-del.png "删除备份计划") + +删除备份计划时,可以选择,是否删除关联的备份文件。 + +## 2.2. 备份文件 + +### 2.2.1. 查看 + +在备份计划列表中,选择要一个备份计划。在“备份文件”列中,点击“查看”按钮。可以查看和备份计划的所有备份点。 + +![backup-zh-08.png](./pic/backup-08-files.png "查看备份文件") + +在备份文件列表中,可以查看备份文件的详细信息。 + +![backup-zh-09.png](./pic/backup-09-filelist.png "查看备份文件列表") + +## 2.3. 恢复任务 + +### 2.3.1. 创建 + +在备份文件列表中,点击“操作”中的“恢复”按钮,可以创建一个恢复任务。 + +![backup-zh-10.png](./pic/backup-10-restore-create.png "创建恢复任务") + +在弹出的对话框中,选择使用哪个备份点开始恢复,默认为最早的备份点。点击“确定”后,创建恢复任务,并跳转至“恢复任务”列表。 + +### 2.3.2. 查看 + +在“恢复任务”列表中,可以查看已创建的恢复任务。 + +![backup-zh-11.png](./pic/backup-11-restore-list.png "查看恢复任务列表") + +恢复任务可以终止。点击“操作”中的开关,可以终止当前恢复任务。 + +# 3. 常见错误排查 + +## 3.1. 端口访问异常 + +如果任务启动失败并报以下错误: ```text Error: tmq to td task exec error @@ -52,9 +161,12 @@ Error: tmq to td task exec error Caused by: [0x000B] Unable to establish connection ``` + 产生原因是与数据源的端口链接异常,需检查数据源 FQDN 是否联通及端口 6030 是否可正常访问。 -2. 如果使用 WebSocket 连接,任务启动失败并报以下错误: +## 3.2. 连接异常 + +如果使用 WebSocket 连接,任务启动失败并报以下错误: ```text Error: tmq to td task exec error @@ -73,7 +185,9 @@ Caused by: - "HTTP error: *": 可能连接到错误的 taosAdapter 端口或 LSB/Nginx/Proxy 配置错误。 - "WebSocket protocol error: Handshake not finished": WebSocket 连接错误,通常是因为配置的端口不正确。 -3. 如果任务启动失败并报以下错误: +## 3.3. 任务启动失败 + +如果任务启动失败并报以下错误: ```text Error: tmq to td task exec error @@ -88,5 +202,6 @@ Caused by: 修改数据 WAL 配置: ```sql -alter database test wal_retention_period 3600; +alter +database test wal_retention_period 3600; ``` \ No newline at end of file diff --git a/docs/zh/08-operation/pic/backup-00-concept.png b/docs/zh/08-operation/pic/backup-00-concept.png new file mode 100644 index 0000000000000000000000000000000000000000..5123b4d5403d9379b6067af26fc6a367284814e2 GIT binary patch literal 32893 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 literal 0 HcmV?d00001 diff --git a/docs/zh/08-operation/pic/backup-01-create.png b/docs/zh/08-operation/pic/backup-01-create.png new file mode 100644 index 0000000000000000000000000000000000000000..a424c276e589e91aa4614932a198f8cab53cce95 GIT binary patch literal 96040 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

qcFBvc}LsBmDc@Q=XSvj$I*5bacShU|c#$Lx z(_&9Q+mwyWVQ%w7o?G~-Fav+%beGkjb2N>QZ-uthY2C_8+&m#N1{4+3uDv`j2g_qh z#!DBq8!E|`mkQikY&jTx2TyS42NKF}y{HQC%}9g}jC=5yI+QwTiQP^_LDk1F)6SSSKvsP22x-_O4&32&uXUP*d8H4R`{b8kC$3EX{YlmFgZ;s>F7 zqttJ{F4|CLaUncXMW7}j4%ygWXzs!9PQaRauTXp-4@id}j}G7{otNJ-T;_3|nj57$ z$(dACA){cRRHQhI;y^$FM4CVIxY8(gex|+ngZCHOj%5~rbaqT#XTDy3Cd`$5rO*ha z&U0(H*q;OJSmO9%%OmWojVWL%=Xwg3T|7MXT6Ah!!P}CV5ZJ;S2#7X2JgYyfybnNwS%JT5WL&9#OeTZ}Z#9h}_o(GcP`L}Le;Y%>vAjcf`JP%$KXpNG-zlF=E*(c%3h8d9XAGA^ zUuzdFBECTUkhK0c0e*5-FkyN5Z)Va#b2|QRMqP|oQtB1pGwU#>u8HDx^Tyk16%e

J69HGF4}SR}F6bEY9Cgt2+3arWxM>Z2OGN zwWKkrJ&fMPnGZlS_V<1L`$5upV_%rLfN0;oqEVkt6waki9gis)hG^yWQvrKCI?$L6X<3UvKCwSz%_4{1nZC zO8~VPqF5jBGCh&V16g@yd=d$2MsAy0$p>!^4$AVA6UOh;50Zey&KUD{g{h*xT zH_Bj_v|JFg7i!ITj>NJdHuX!0{$~8=8%g4iVh2u(dF|gpcyZs8SJfN^I(;IHH{480 zgBS|Esg#yDKa?e$KR4y0oTcnH2Yq~5Z}~lD`9O{=vLgj9gXYdR5i@H&lBb|#-)g8` zy6Dx)ne@6;^%IVL>fXaSKNy4CAlAPw-uUc(gZ)#~nFf6_>Unp6%s<1~aya*TF|=Uv z{c~~viZSovp*g4VBGkK~RqK7?Eha}?)QXEjO5JzpM{0Xt4q2~JCAne$wBfeBZbDSb z(xS(HYTz44k7HE1TZQCEoZ`@{`+e`UuW#R*%j7*jbSc;;b7cn9h$jd3WTaE}&;RhnpLO3r=^irqn7mJ#gw+}=bKA8V)NB7Tynr9(}2J<7K z!yS)^bCFAxP#VtJx_Tm`uEDUYs=TnqglrfLL!B~5b>n8Jh;d!Xkm1oM>T?X7aDKAn z8#be5Filq9@wau9s0nL6T6ZYLfUL_bMj$S@jA!8SGfq)=r9`c+Ol zf9o$OI+#nQ{0Xz+1u7)IVL+GXgJS9A+cDz_4!`AFV^eq3gEyqzHoS9uH0)5ruyMZDJJkXt}^s&Boiv$Q84J@jRqp`nD_-1So4ZY9&W)~PFGH?dUCc#1&e@i*3Y znW%u;PBsKc4oqB`kt3@B!B;4tLJAB*NsaFZ5%ZVnJS9Kv za|lVl*2v}{NaOLU(NIFA7&6-J3&|yp75^%DXVDX^*HVHlF9CeSPD> zyV)U9JlEW*2qq6TyDr{J=XSC9K2 z$#VblH2K#~_4kh2m3?5W|^BRPG5NR3WRahxQ-XR;ik2X(!y+iz;T6M(Umfa1- z%u!|<7_#?lMY<<5zJKiWAm8BeJ<1D@@7|}rc!A<kRcD{v;lGPH_2hK^ zMFW*a{YJDR2{LQ#=YPd7<(gm0@ipaoaTw0u-eG@!MPV4w(6PTU*!1m&9YL_(tlT@y zwwZgHCrU_FBy$Y^&^a43W+!xumv;@P{j#mNco_Q6mcvhdQ~Ih_+A4oDqw7Cc?$tF< zzie|V9&Y(n67{btUl>0%8N^;yxDAu)~5}wIpqtp{l$fqz0?ev5{JJc$NZIG(*Y9?-QUmT?+JFf?aAm(zd*# zomJK9z*rgak*7Z)qzZMin-OZs8{AdJ%&V1VeW<3&ElFuq4sd7&gC_Pj<}!W^uJ0Iv z3!Tx@t~Cqde)BJRpw9^<9qwx2xCfT?>`S znkqXU262ch4T-D_m|bloRr#z`$n5;4$V$Mj+Rp8~siiAOJ3d0b8fh;45p*Q)@nNmy z!%TZuzw723Ts)jQ`6t+*VGvy<~2MpYqwp>&@1jzes)P~v* z$3aqGUe9XWt%~nqfy_2|ccmFOJOhj$)7y5?X5}j! z8bOV-K{67@k>DQ0adS2~!(2xccC0ISm5p7S>!S@lo4`2jM_+=jCijjF6pDA49p1r5x?di-s>!Hvpp zLBmR(Q`#FoHQ=S;lqpUeD22FqXg2;}EVxo3+bV05nugQA5fXWPOjPerkoP|*dlM&* zLL%L9&tsAV0khc{V)9;KQ50F1kcpkx!z5q10id27#gX;R`63G}k;~q#L%KE~nArxX zGendL>I#4m2$Ch)msU6&j^$CLr@CyCok|DKbJqNoKrY^G4g2@w;NNwZW&afNdSYlX z=h5bH_ZWmvTx#>;hR^c@FaW7zPq_5djFZT(hPx0qfj-FN3s_ZL%kIt_Zn9^|w&bhL z*$_Qa@@f<~Pa4e;bv;l!zD4e{$|Y=ZH60G|O>WJUl4lAOqkI~Q({~x&y(i?a$J%N? zUMf!vu9o%gjL?U=&$-8l7CDG2ZCSk(_DAn!W(9duhE}c@v!I}4p(NAN<(SL2dML=| zy5LCjDZ|PWrj`v^e0K%vZXtKLL$ZYR++%&;;Ikw_c}Em}0AxAk*?cnQh4yn$3qB%9 ztDb&&-4f_AjDJfvt(_s;@8AI1J5C*8HTOJ`r9J~C7mfR+TxROSh-3BQwPl=`*#@Lw zrk9uFOlAXZxy~Zg=(sjPb$oXrQDX^HK?RN$*Vdf}tvxBd;(?%`y>oqzT7l#oYF6!C zeykW=(Y*As26ZekS>fuJyXT{5-AdRp&R7*=3HE~z4uTzUz}q*6w$O30YFtenq}=JF zv4s(8 zUxPn~&B5^|kuIj4fT!RLc4;>#`%HIM#p{B>)TQ9g7NR$oS@W_o(ROueA0IY!hXgOq zGL(b74OKSg_kW2hkP|(Efow9dr5!OXnuiL+h&dnRp4al)qYv$OP8fU@jZXQep{;!O zl2T@hEJ4zCSk8*I`lq2M7fJB_Zw{8z;Lt&69eNVkteCw&uEZuW7Rqvgosbtp+*o{k z+vM8qnYr1)r@D_1l%k@wz97Q9abHZO7S? zz{|l9kIIo61@-I~=2Uy3Z8{YuLzM@F6y=#I<)e738;w-Ei^Gc+A9eggQO=+FZj|{( z@$L`w<9JPs@agJRk3P4PE%HsgN+b2TxQyF_eTjk><+PJfw@kQOEylOSEYBEleR7lc z-IM+S-thHsY}nnkBF0`5so!iA#RcM3bpawQo$lUuLxNpCb8{7C9Il{F4w6O*7$F=0 zZlsMp3aWG6N@o@^+j(I5o17W6>_n4z@VyK8IS+Ybn5aKXmc6wbjGs`R^y@%U=f}ae zP@&($1=B%2$8ly5UOLS8h`n|e2$?TPQ0Dxu_2W?lWBu;O9XGhpT_vye3og&+W&QTk zCdx2x^Ftnfs=309QEb-W(a({xYza?8^$8AS@Wlz7Kk73(J13WKz8qvo?v9LPkXrje zI&`S8_*&)8K}G4`-+-+&Z8QJtWUYrzBVXj?_;!1HW2(G%IeDRHFP9K%-eh8AY z1%HKwKg;GuE4!Owqu>5%6T50KMh;Sx7cK_s$T$PX?*S)+X8lVm8*^yROV>8H``;Y% zHhp@{J28zoHv%hHIRT#R?0zUbBn%ea_ZjbAG1F>0W5i$ZfL(k+RHO1qyyD&$#TMuA5_$fj(ihk!$|$$NupZOm+I}`rfxmHU%SoY*R!RGN zAqSn-SUK$K%ez_GOkY}-HlA(-=RyR;O|(&7!XEYg*_c2W>6#_ioP)_+Z(w zu)S%vU+0;$Z*nJZKIqk-o+DKNum<|P&RM1t$3}@^&CdxMq=4QU=8dO2M*2L}a5+l{ z(txbV_3ex{kJtMpIbLXX+&*h@2~#om)&ic$Tl|};;|+z|zCi)Ih^Z#99Cr91ICglm zxn}LbWaz?5?vK-k4dh=O;nn#Zr7?kd-m2*p8w^*rVUaFzA>wiPi6uGn%hG8NneRFM zq=$@NQkQO9Q0FW2rh)movZv?YVb?7m|B6yzaG!~^F9@d+ls;^?!J9?7;Hvh^GZ61Z zTYMB>Oaj1>@aZclYo$3oW}-^Ybr!cbJ`_H!7LkVG+h{3o8+?SVBvc-}2-g4$dip;J zZ`?n!nLA3WYuMuCQa1{G=Wot^9W*|D)`Bx&maLlPb{KBmDP0W!f9tmxuPNROISSi+ zq%g#N=B|o*=*`vYGi}a-Pd;Ag@tNg{>YFtbNafx!8=erzwIP<8_e@6~1x$!{$8I7z z)_t#1WOPSoI0|}wT*1%JU%&ZLSz@XJ$r#k)hNLIS0MpM5N>IcL<+yr>M3mY@op4XC zSmZ5VJ6fzDp%*l`QCL*M77U3@($Jec9F(qwvOEn&#aWlf-u{N&7@8uE5n?JEdt0t; zCo`;+diK^(82(aacwTdb1= zGi~t-N426EWC66Pytz8jRw9CP_4wt4^2!C`Q7KnQ+DExM=U3n}aeqqm!v=2TTxuvc zPb!ScfWN5fKhLS~d6sgiZ3p$EMAgal+iCZMIu{S$yViJ7-fxWesf-s!zfp*F_#S<` z@KKhuuj3X%wdFJPj_#apy4<+I1AXm|)9!Q7IZ6SR!xceUj_jh`w`?2O^;rCjJ4+77 z_DK||!3?+N#!|Ox%hh!9DM^&wOmT2{AvBU{B!qRYaH=_AF4A~^Bfs3E+LzQdf1`PH z&cUMTc|#>f;ksAf84#X%in>dZZg3^?JUlms%g1EmszdB?JHzP$ofBhozqaf6!JqLf zclwz%xvLzcPN8JwQ9)yVw2~HIgjoG|(S+pTqz8yHtlMOZp|~>iQ_D^F`ehof)yG%T zyN#|9u#U>}r7t`B7^A*2aUdGqG8l%Os)Fh!L>BcI=~zUVkaonBOzvVltZiD0j*{ zxc^whZoFdC;8v$F%A1(pw5)^<{6b{|+( z&4-#6%s3?-x2lNnUoIc$+k{$;>V>nt*pe6CZDq{3$7lR8aADy?MT#q(WyrU|lW1E+pTe;w@bYsC&oYPLgz~Si{>5Hj-TD4(XKGWmcOmCQ`B~d!^Hn4*8@-j#!kY z%ebpVj?Uq6E)Ek4b8!!5*CXH|9t*)9t>4}+QoIH;{Fjy5=%}2YS9^NfB`^!XWnApk zomgL3ADDn}8LrRSM2m0(A!#+QX&Rh!DkufeIdoF4e1fl z>6_!+r23^je?&dCJ~oa^S<{n21yEK(Q&f_e0w?mf#)55ep<=Uq5spQljZuW@A=l|K zk%mo$sq4-9{9&CQsU#kNRoh295!nSzeWz7{itWNnlZUN`uSB=XE}@(SS<6e_HL_H$ z$7-A#325(%75cssD!nd^^o%5G$&DmV=lwX%_7gd&r4Tc?ZNe{@!Ab#%y`raw&x`-W z7OKbU(f4)YYR}$~QU^)CbW8+4oh{h$Tv4@@-66_oCMiBu!mVI0 za6`HEP4_!PPk@b5QSq&+mu=+a??Q~UY|kE}zLnj^k7@4~Ht~QeG@aj!0Q0fjk?11L zEmCl_=+^O2q^j%C>;onJCk}ba5)!<{>D`)!8GE=hmJdzacWJIJ{vuSa(L|A^3sOI0`Y`FRl9l0z|^!&(oU`0BQ%Dcm8PN# z+~Y&hPFZk5h|3~F++5RT{(joT)xkmw*-wJG4-DiiaZh5R%ISp#2X~eVE8)tY{2S-X zMF};7>kDE&vn(5DR(zCWE5#fPl`OJuE(@D~FBNs1ojcH0v^Mm9g!50rJQ=4PM>upP zTQFEY<(X0r#!;eYI_6|NwOfVwvK|WpKiuak%?wWJV+Pt+_1(wKG$XlSAeLZd&qxNr zR%y>7i|LPfb@iBg=$*$bme7#H0Yr=H=-?D=zvIm8)Q&6)X?%B;J0Qe8OFU%ZFd5FZ z#gjMD`zGQ~Acd`S*tm0Q$hN9$1bL3gl-Mf+lY{mijn>mjz>c!4QYPQ#(slzGKlN-a zY;tG9@P(q*yV ziwJZ^pB_iIG6Vz{y3CGvvDAN~LDe0m)WY88oqOHgL z7By#M+d%iWcyv8d8Br`ARt6$C*LOZHdByow@-@{sjsEr;Q!7Y?8%+`L1%8*erzaaE zBW2hHmJ3GbY>OA89)x}WBAqrD(_1R`spH{^6QC`VBi%~50=%5=?+C4e6RvOlhouT+@wXm765NmPRqz5dIj0B zibz52EM9CHC5gAbS#BnrI2aw(Pb+&GPToUI)JF5=aF3BYK#zm@k5+>lwseFVTmxgY zOQbx$JtL`EZ1&{V1X==*&$1tPodVkx>DAKI3fLS>Z6$;xf0W~0RYV*=HJ0j?q|92@ zIT=!(Br$n{Hb-0bJF5K4$Fmf*5J_!B2sz2$!xZLJ+gW`g7oPK0kaN)2M`-}xRpxRS3q16EFLZu!)@2cTEv z)H4w|`JxSFTa(~`Z^FvUK?h<%Wi^N2+{pStEfDS7ZWu28+4?rkTL(=OyR_yirc1Aw zTtS=eQ|Q?`kO#vq>u~6BHdzWdq{nVOWf#!acvasa*WoE>>gxvwk;N+%s zORy0s_@E7~OQ?3*mA~5BjDW!^r7nib{kb7IOiLhVY_!}%#zfB4hUTX^_Cd?-J>Zub zxti@N3M$ZhL}kdwwH;2IpddQ&4qsr<=6t;qL`WPn54P6E?-?-b;jcafD)#Y(Qb2}F zgOkfMk2P17-W3Sl`2q7dcWC8VmDybpvep}U^xnMfxWkH5`7+IF%bLw_^S5|wkPkE3 zc{)K62i2K^?()>v)e5#0pE2(}yY<#gzIKcKiIjf;yamhrO&43nRtUdY!~R`sk@}}U zl%V|S4|yK#hLtjW-<|f`n6c|v0`nqe;@JKqD$yzB<~1oXvv{XMEABZS$of zto_qr`qg1>~kE$2kO{(BjK`_m|XP zj(rcZbec6N_jwpzs%7Je4_feJ2{8T9e;3Wb5@VOUP!U8gctgC2tX4bh%X`%}PMK5? zL)boxT2rxe!hsG1l(XwjZtJb3y{&MK34)C>s+YW|8JPHrHe|W!y#A#43dNJ~YOkYC z)gzBXOUSW9J~@De`{T9%yKl=s-hrV)vDEP80^$)a5yTfCzXk6+j^#haA(2F(*RZnb zBv@WCym?R#MK_er=d73m>zIYukb!Fbt2^e46fU={=)`lj79=@d$SD>duMJ`M@Jf4e zEVrJn_dUQu-Yq?o-<_RWdKmg)#bI0dPpS8*Fq6|sVH*?D(C520c%EC=%JZRcmx`0h zde`s%=KBw*{JnxA0o9kzbKc{ISoCnc{7n$@Tvz2fe(v)1uO*H>oI0T za!u(T(U^~50f!){z_FVpXS}4{>2ayDQe;&NF7I|D#a<5?h1;uZw&m)03>+U@7 zSoRDtOe2F?@+l#kh&Lm0%F&!F3BE&RUZ#$wl>U_u)7m6{hIxv#wnbK(UpzvkD7(_7 z+~136Cyh?FqAnYigM8TK7I^f#^SgaleOrZ;eR7l{DZFKM4W{C%j^>#PpM|e&<>_OZN38YEK_Kn^{!13psdw6ADuc!VJ zlfL9$p&NwPARZKi-VMg*ko@o-@`ok~-!b-KrO@$i)pW_qLhGH6g3@9t{k z)gxlxrO9g^D{wt*!1EfH93pR5C9R01-pfJWA~=c5^zj7Ys|2V@?v3(zX=y7i+$ityASaoJySH_;b8Hd<-iXzK-Do7vv(elEzcK)r-_JH{)CUpDMHDZe@UUcOaEITSQSU{ZDElloc!TAS zQZQRQu{-%89cRzWQBgVsD{R$p-B%ie^63)$b&UW{l)DleE+dK8j+Vp3M$!vzjgT{0 zSpUqdbLrgGlyBPM$kL|TZh`aZ-9nE?Qj@DG60gh5QZ`q3=Gz&rlW$zlQ5+$@4!8Sg zftcAG=#0fydN0}T6TBYqYG*mo)KX>%B+6!rT5>9Pud`0*(n&ca%%x8Jtd?Yl)Rwx< z)^<76N7^@1;hMhoIA{9ja}jGjb66C#dB{5d2a^mbo8;1SewFOfaAI_c;+33e`1Hhr;Ky-_7$q}$2|K@WG6Ei!C-A;P*;k46Flh~Z=3}9O$V#xpnyR!Sj9lIK z%c23-qUDqq!rR$McUJ52PkAOK^dmRJDox5CmWMF>mJ~yu-j|WierT8v3O~I(L8}$^ zIcLza{${}H8Q%=;u*E3$i5;8M#64A?IaKAf4QRH=qWJj=$K;wMCss|X;|Oh~5#{ZK zDa^eo{VG60M1d1cr_x4W$ItTW>MOSFV85d1vcAub3S(R#&J{=idwtowwfhD17AoW! zTWf7ya43IOS&j#}+CY}$&E5ulu5-@b=uda>V$p63sL(fm@h{wlEH%+$yNmCb-@3;5 zmGG@%Xo^r>qe|6wmLi`2@qXu+-`ax}LcXMXh3O{nBf816sNhbmXzQ}y&jNVqlfA@| zkK!lUHs8RdZ5NtXm}NL+0zNs-E+ki!wWN1Hf8rTX#Ew4B4R()Bu;VDphzB3eKCKJN zB676!*Vql(pG5_A$I)_}1ad|vWX5A5Kf}o1Q7`geDwik??co@&G4vmmJbhq=C`Hx!`X8ThD8^?tI-=2eSAAJWQ7JLl^Sxw~}$8 zCl+_^a1`8l@%hQcpH(hY3xR)#n#u;#ot8QTrZ_E?G&(UICy3u1jBA~_EZSt37kb>W z+)$=XNx@{xzTehAIUPfpi$R^+b2clK51!tv1l62WDsA*Q9&g4J9wRoU8^#j}tP)9k zblot67dkfD>-`Vy3Kn7HsSj`2_TBGE=`|ToVO)+5bps#uQTPiZj)iI`n`1ks)uWH@p#^gvzJxly^g zs1T*v^crs@xxSw)V!0OFu0!1O(SNj@;}q?eBySwZb$k~rY-ZHj(sw5R(;5WyRW$S< zN-XKQF>gyZdUB<%M6!s_Y2+kbQaT`Yp|G1$FES>lSTAD8=LLJAyrUo=lhO~B+gad0 zS=gyF7b!}zy{ew?YQ{YfxmG?go0=>2#g3Z6C#}=i{4zU}h>zYYI{TJKJ>SW3E|3|F z!?(I=2P(~2^xG~CJoij z9Or(-=e&HpB~Q)oSP*-TMvzMT8iz)GJl}&TCK_IzgJRb`GROItH?^07;?l*`Jsgm$ z$#5lH{U>5_NSl6u)3*pPDmHJk{JaVgcNpRT`8J0do;xN(VBeb}Cld6R_C#fHnU6hY z)QPkOPKX`!Bu$7>X~K|fT?ya8@i-AwPOCt**g%DLNqs@qo8?)>7GD7QVn!UiM|K-R z-w|8RGw8SsScRlGX5y@lepnF>lzmUWwN`Ge>~Q?~NaDU2M(18s$6~&=YAqtmQ=b<9 z<>SV)G0b-9pnFRXrqlbaud%XvvNMdad&8ZY`8)3D^o=U+ijW^U>1){)GGHf4}WnP_W z$j>5wi!6N+QMib86JdgMZx%`uPrTPW4@?R*z*( zH4mAiUIBjKT9Q4ip4*$y7ipQz^E*i`%-{-{v(=a5O8@8O`yH8x^$N>*zWZ3($Wt#} zsKZ6uG<7bh63`|12oP@fKVw`Zk0BWC`ZqEkVp*TT2{xK)Bt^xw!uk3JS{jst5#j5n z%8vLy-iGEU%Zo8~;`cHC`)TyoR`236nvYTu-8U0s>A#4$vavH&=t-uw>;9gXa8LXk zLr#GGuT>PowD_t(SqR$Z!HAH=CVh|T&N3fq$hh-O55?p^xMlI&WC|Iz`mMjaWa8$d zh2cjP&ufLwW@V0z&TIyQ5fnfAxgJbB$#;KW#s7M%ctOU*SWs~s zq9Epxg^*vvAxr1E*Dham4ueXQGm`j|c9#H`{<8pLF)H5SZ2<9@3w(bk{{87bcPTt3 zXfMXz5`OF36>L20H3}r=vZA5p-#F&Fjf=GOCxIXpSp#tvz=M3inctUI<`bENr@DRn z?<5UmxF6RSA#5sBLyoclNzT1CtRx7+HznP-e%AH-bmx>s(`VOrv}~bDx3}z4|LB~% z`Gm}9xs+>i;rD6&i-NX!X2KvdnIe*ZBeC}?$;TCTIg3k=|Ac+~K07&F z+~vDHNBNoy>n!E+urIcJ24D}HbJ#}^?ekjS&OID5x3@g8HahG~bklcP+sA#mYadRP zdc0GJ*mn~^U2*BAVG?|11aCpaSPYb8htd4|Ez}IH)@qoqT-N9ACEmQ6X)Ac;uPyg9 z1^x9Z|4Q2Bed%Dr9mrq?eYKUCy`&$aL$oO+nz{YTTr(1rO>dvqLZ9)a!{G9l_%2La z;lRvXqH~6=>c6)bhYoi`n^oU^E}cZe@0;$A)%$l`rlLntVez_1Uc01#*o5I7i1aG^& z1aKwAD&3~{)L_*q{U#P0Dn>>v^)k9SS{9x|6oa2l)gL~D$a9M6zqOh9Ks}H}HV=9T zYl00d?-B|O47Ekty8Zj7isyenJFrl6E}W&pB&D;%{?6~a|G&1{!c`{E{5;y|qiLEw zoC^Z#uCqm5v9=%W)?EJ}erg!McwT5fk@h|uy7-k1y3Hf)?&n#J<;eDtAPbaT1d#>ynl}R9pnVs4oR3# zfmUui_3nRZw9j9-Yr&;-}0jS4ZUf-|LvIn1W%vNlF7zv3lA0; z|I26n=Oeezc}(fkem~%DICg#i6?Pch)b|dd957K+W}YmYBcu7B=TT=Sk5k6ls zb1Lj6O?~v3qMO`ItbYXZ1oMciSG0fVT5=w0@zE@G)E}<2LgoDVzp>X-XVi?j`)eK~ zm%32(*YK5P`dp&Fj+9mvMo0HPGKqii$ILI=nyCKx@aOdk%M*N0R?|-=b{8c3u6?w{ zNk^I8=-E+BXyz39Pr9PA%%mPf7eBDp0r)$GhhpCMd&7^COZz30?RL6lkh9<$g@Ab= zRM`Ur0TOINmj{D41G9nF<8zDJ>;p7c-a+WH|44?m$fs5h%eOyMs{SWaVw4O!hVCrI zxwXW_IJ2<%vaLXgx+^9FV2(#ESNSvjdhW05P4=Ceq`B0 zsQWSR_??@Q+yh&@$ITxuSyH})*!4QUrd_Ei6EO*uKq^hKT8~f871(fd10|L&Z=hE} zmu}7~>;Kgh|MPEpcU4&19?-HVtcO`$YkWC81B<<09J8ohV$cUnx@dmeGB%I%{3Jl& zpezJ^)zL{v#olw~5aR#Wzw5tFR`tR&TyCk3VE4>t8<&Dh;5U- z*?jDJs(4vQuBqD1+_4cg`5Q7vFY0hV5(}3DI`+sk21HAR#O~jux_i(l9rx9J&}D3>ePBi)@nkCCDxp|Z@vvKA_N%LLK4 za%)}J`lP~FDrlU8y~_P%461RYv7Ezt5hh$~tXcPNQlQ3yg7M3Ja<_u`Xw+cwU&qC# z&N%Vhc4?DBLL6GNo(fpLW3WChn1cfMM39Xkl@k@Fx4V#!M1|a^n+9o^zhr#x0JJ(~ zEDdIjdoO7b%1_dKQV7T3r`6Bj#VwkcJ_%c}7GdOwab1wsadm?+m8QHX^{#kk)L?Q) z88;|tgPrUOKf2?1_e?u=eJXiN_cEyyr0%HLuupg&R{1?kWW62SBFJ5GyvvbHZ!Fg!#0x0Sy+J>4 zfnW6RzW*m1;ZC3_Gl%y>akDHdm>w;2T;WoGhVanttSrQ&_gTYHZ5Di=e1&{+I;i^u z=>hk{L4=X}GxV_L-|ooHD!wu|Y7EdR1?0b2`jX8v1QnY}z(aD5G`P7~1ShJxXJjDWm$A1)a4|Lgu(MvzqJ#Sg%p9 zf3EG}44qMKL=TYwCr1J}NAEWlpZdxIcUVlO+!;(ePd}f-o%jqZI5GF7XeNc^Pd>CC zwy>4=!|Z1Cld*v;^E-bd9j9HqNXjrTx;Sthg(NAEAFzuwA_Tu*6V+4e1DT-S+lJidS`E%WXiDx9Sb_U zHO$i-as}gK8H5YHGnxLibiMdtboP3X)Qb9^l_&Xz=*db^;-4MpSi)ya`D(NW%6eoI%2-U3N0m3J4>d88LW{Vit~LX22)^j^q`OU7K}h#4E{JFla` zEmJjFW2(m5E?2Ps+L;paao>l051&+Ep8*jI^8#`0p{MG^hl|!gR17V+kI)?^_XAYJ z4h9T>VA7#(W!gxW@(?1_&ljD%wjBbu>7n;`EicnXmtM-m`V6-^mKv4o>{wN847$xU z@jM5bL0usz;|>mpaaYl;FFZWPSKq+8&M}^6Q6I!R9ry)Ct9VmB z)Xucqb2iw`kDhGE!To4uIgCo#wAzf#+F*Dh-Mkh!5f3LA06?|!-FjU#2!SO%X?aOQ zdXY5tx1l0yScug+rVDDl<0nrlOGpT`zx7`ojPK_u9%QnYL3}fk9Zu+VB8+%kaPyx|Gsm0;P ziJ?~j%>JnF+vg-Nnej**FIJMOoHh=Lo$=K+6VBZ)?OcwJeA!_U$@-Drb~Kh#W$unM z)h8-|w&499x;KU0vM$jJ>iM}0Ft_r&JFiGH)ng8~)Wo?J{4fFNxfN;`P@sOP*$PLf zV*;OUU3T1VwOWvZ?cVx??CiIKUf{JIKNj0^^Wu+mtP&$b9$%+LT)&RIW0pUp=J{}H zvckdv$8a#x4!2Z5pJ~0@PiB?Qfsn#&;}WC>f85ibm0qr0Vbf3VnT0Q1ra46wC)xT~ z>vVsLbR6xu!VE^6bYwpMth#iifp7}7IdONI>42mtd%GF_KtU;K{%9}>X5Q*l>WjlS z*bOI71o^seq#SRjtnDAyx4Jg7pS{;y=k7M~IgT>-sWCW2deq>G{ya<5J3=fsg@6qLgKetgNqmDMVuyEZ;Pn~$HE+>ww|L zH^{D4zOIlkP%5>A=&e5EtHw9`<)HGQDcLryB-!DUbl7Yo>g!jddi=&pUct2TP71Ni z#zG?Nq7jX$;+w{P(^XX^Bc)kWja~+rTG8i|al#3l6NDS7`95 zf7%>ajv!39)%V9w$VN(IVGr`ewRrN~UFL2ZILkw|zNQT2H)gH%-7kI(j>_iS2jt-L zKG+l>Yb4prs@Ne#eiPnGK4vVRobMLwmr)7K1VK$?lwUZceZ=a?YZ`3ht4Zg-deuf6Y#YkFz^^&p5+1O?;>Qao6Y(5oO# zu+foT5{N>i_g+I$5S6AB=_m+7AoSi0Nbew_1PB;8(g~R^i!5s++)#|QE!u61%~|^_4q4mBPEGPP@l?#LXPT3}okq2IO_t=B&~??; zD|*R{(*nQUj?HWuHKZiVk6AOSH#j3xO|}38JT7?N**H2=^F`b&Danm`q#wpMeR}Yw z=b6~bT5_uq_;EP>u0Uyq7IdPtTgcYzd>u*cvOFsWB~kRBj7b@X(fMP*M?5eJ5|2La({5=xPz9*Aw4kc_*F29<_23O&OeC7yvjL;C(Ee! zlv5!#A!o~hvo<6@EXmJ(X$Mjq4la$L*&Pn*KzrcYgA;|E85XVy&wbQBSLnMnP--!yG^>ogm?@Ubf!Wdm=U zDi{Hb_iyU^j@&bwmKHlsANLEN>f=Vq_fv+w}^tT}Cc)vS}f81Jsq3)ww7+i z1Y_H_zubDMG8o`3yc7{L^%dS--Vjn!huxW&Cwb#0ZFqvqMpo;=?uqVEu_sgGI~gnv z(NC~QpVF56yh3Xo^w@}E0MW=rVl@`(xc*wo+oKn+V&u>4i4@jR>NO`el^68m3 zYXoD<@|97WiF&W&$!r~^olaEKeU~(Bk7&!jx+OM{oT0esKYZ711C_h`ImY!aO|WHP zK^Eh|rUJm=V_ehL6u{dMR_%@L=ZbahEoj+4BMb)B3?O1I%m?uQ`lcD9sF76cZu+TA zjh%A*Dq~SkKCKkUZNnSt$-*$8{3MEd)o=YtjdNECu;E6+hrDNA630N9jTiT%4(sUz zsS$IN>k%H^7`n+xL%=TYW(uwNNJ2)QvP$=3F}Lc(<$)BpK6?Hx54FPyH_5~@nO2(5 z`_r?nSv5zsqh!rr7-+&9Yf5t3kn=y)hg}Y6U(Hn7HNoX(3&Xg1T zs2bkGy<&NgSKdPxR+tl;8kQQQbbugC&DiZt``+4D(9H{u(+V67Mav4owl#ZBWX}69 zo=Oy9wH|xhWlsQ=ZbfcE>xvfG6n~WuBAy4lRf<)ZSP@q`UMpM_YP??(qk8#fK8fY}~rfanOn)G=VF9!Y5VTQRbu9i>9Rx3Y82rPekAzsYXmymic{Kn3LGX zwlwjy4M(5&EKfLny3Z=1`EZwvK9ab<9@=za2wN~>LU*cH*|f26=-f)x*fz_|9=~Yu ziJf_MSG&DU??JC!ixcjMa79Om&e!4+nAs0Mj%Z0+|C^)Dp zaxSmiSXa3;lV?+9TsY*o6_Aybyy_@SkiTiKG)}OIIvgFe5!A5S0|?|bp*?7QDT12u znRz7Z@r{8C>K`!lwNUz3IjA@u-zq2OICNmlnshWg-$E z8r1tfBJZHi1iLuMI99g<#`oO0mkeNYCw-WjLm)3(g1bu)LJn8xMA=>j{du!`9 ziUck$R#v2<-RUcLl@aaz!Z4YuR&AL+-@4(Bn6o9>a?_4p=!nXD@zR+-D@z#&Nd0) zQvIu0DCk1D+@s|%El3QXRB;a49FkOcW7B*uw~YkXm&L@k9L*$)o$a}dHSr9s@jko& zJ@?UlWL#R|W|Bs(N0g@~LXx0KId{ZU{J7J3Tn)rsQ*oplfK$d+Ain4kvq3Xi7i~8# zRqOx)<|kwYA9rRp#o_1L)h{Bp#r4>axN zfL|6H{jiSTY!6j3Y3Lmgqe+R)U3qU#fd!8Vbn5&)){6Nie|GOCP}T~-&z;Ue=GTjJ z@2ze^9xm<)uRMZbO@I^HH?mwc=hz&)>sB9PB?3inHs9X_jwcs}7;ZhCaOj(xG9NFs zFBC?$F$$SXg5EfEwJu0A>eNC|14H(!AK@1)t~#uL9Rp$_p2p13GAX%cDNN@i4>C08 zZnaB$PPoFnj2sv1&ha(x{9;V=OVz6+EheqWUdy1vVn!Zfic&hoz%j8l=}}}n7&+QD zf7PEMiz!-R_6|Gv6xBmkUU!zeKqvoLPFM4$(l4y8`T#xA7Loh{C2!ABlSL(iDZO8! zQuEUnDmu>kNKCstKfWCI{L{e6&@_rHwHxFCCtKsE=4bQck=={sm$Mpbs+ev9L_au^ zXm5cyI0CMW$Z4wbGV9I_+Du2#Sh86g>K81|l|k3TI_wdZ8lZ^4sNZM;?RLnPmmWKD zjBjHI*GNGnPP5n^e&~w24D^HB3@B+GgcG5Iq#k`0H%ugOS`+O3f}~+<_@@`?4}4qd zee2PQkLk2z}01<(?2~yieP*grx5bUInzABI* zkBA1q1%c5rtijXq16Rwe9$r76SOWLvMOk8EvgRU$b@j6iKa{ui3N87xUHpifUJ=$~ z+RDfq_-%XoTa3^_g&I~ESdBbxsDhkSP_WiN5!4^LF=|)Aj;h#zIwXQbtK$Mh`b{gv zS*?w})x=1ZX$u4Z>%<6-49z)Ab)#*4l*mS+m%eiP-x2=2%*J3Wu}Rv$b-$K{Ngh>u zwHogx>Vf&DK%9GtpLV@H3EaLdX6)pk@tICDt)>GcVsdPnTa3R&X zj}*@+#LYFkk$YEnsdGud$h`$=FAJvX9ItTf!Oc6FWLoa6QOa@DqykbPlqtEt)G&KY8#eysWM`@2PivGIM7UEkabHo&f5l|xpdb9q>n z-#QJzurRlQy=rv(Tfajr(XZ9t8!E~nUr^sK>@&kTWkGoyp}6;0E;18;BGi_iVn8o1 zbyk6`<*WOCbcE!3hXEuC+_)~(rp+_ee(FHuldkhaIqVejF2}tMDW^%4O`Zr4KJr)d z%j&SaKWKQZ#_FX<5U=)a(P+r~*A0@?XRl`K?FlRfjE9c2Aj%OF%lb2oFI&}51Lg{i zTBCcpC23R$Iv?ICxndr{D&5@Cq^YFxr)hP1V*&{HmVadJmP>efo03jCt`pDL!aO1; zz&5i~953CU=r!=>RwN+cl6jb#)q%Yu&Y0VAspq)U_Mro5&iu$m?(4$ zMZyf_i>nw`T)wzNeHINb4>#;Ey*O@TEVQH{Op9l^l?)Ev)K>^;@vwSji7tYJd)Vt-Q;ZS%Mzv!f6_g*ekK<8f*}vnHS<T{V-+(kbb~;2iQe#(_kj@-B2#0h*K2XK zdp+wMw~~fJqm1W)7e*-y6Qfq_YeIOs+q?O9fD2{6?PMExL;^w|e;#ewsH=0!1GomN zf6tVS5+`<#!=|Nt6e(7}HD-l*dSQ#^Hc(5)sqWT%9{Si$%}gg~9l5RWX&yEZG;VL( z+6X_nH&NgLs@~~7N(GKD_RMNI!`yn#cq8o~xP|i0NF&4dugy>zXJ=cGRqNWx8R;oz z6xV{&P7+lAFyX#Ss#W644}!lId5w8G4%>6x0=ncIz}GsbohT-t23RjH*jPVbi!{o; zvK2Q5Grn%tphNVoaX~xhrvoR=s_a~BvOvA+N%FIW2C`QtQLjX*%8#-acNoqzTh$2pSk5KRu&+OsX?_>h{)}#cAk*DHqdR_+$-d_+ur{!` zWecAEb+e4;km`Ub^bYk-W&i@hWZ$T#fTSg~E@Cwic|h3;GDGV^qYfYL9>ki2LoZQz ziXAn-xmKHy!(Bo{_`HTE|qK+!` zdSROGDd+DVNN?A@(hQ0a00-2Pf_9sCOiZgO$AmI*_^TH6%K!&L?a8c`)%2V}^guD^ zXUl$@*;R>v5PFp?^NMn&r}po7eQQS{xz4DvUe8QKB{gT1=xxM<=x5~RG|OH32DSBR zc0rH>+u4Mtdc-EGp(YoH_3-qmJ4U3J`FP{eUq6L6XDw^o^{HP4Drp_x`cn7#ctGz- zd3lOgS^lfZZg_f4&kfj>Ml&aNYi?2ZB6Mtzu85Cm8;8CLW)>^;VC|Mx=ynNc&ZsjO z_>RhZNrIgc)Hj!W?UQAUsfB-IB!tg`9FIQ=_zPWjkw^m6W#PFl`LM zPkJ(u$^}UB%$hGI0UiC0z}Ro)-ChS{fs=3%(383jCdKZi$nTNJe?>OX(tJ4+Fg683 zZo@CqUhfDh%gIAJTc^2HK?o z*se4q@zAiikgazDvSfrOX&BX$`(4iNO`;{9Z^WlBEA)I zymGHMp07I9Qj(OF?gV>9*k%J18x>19bqx(V^?lrUT|u!6nCEFOpqt*l{k36ZwgFcp z;gC03cC{KqCEUzbd5PiNMP2Kztj+Qfx@I;LX7|PsnMoQV=4a7pT4qrw|7$054o|3@~6^BFx!gQsD z)+pEG(bO>8uTqbam|EKhYx`HJ%6%Hd`wtbl7JI(&9Pq)-7R9|aV5i=NAAlEbqVa~1 zoT_MVVNOuiyT|}^q_pcCqN5)b)D3~u+2889a%hR7KbRhd^F0d-xXmklR8QAL z`g96!kZJl$7p(=y*O=>RoJuu~8_O(xO4B;gCp|a3qJy5m#VxP~C368sg`RJwHlPD| z3==Hu&Jb%taQ-;sQ9+EQ)#)21X2l~2`X$v2jod*h8VH;6n35Oo4eq4);zK)z#c|N) zPR)(u{SY@cnPA^Yz+(~H--7ZJ1us~UNL*iwt#gr-*QlC5AIJ(nmv>pQx0Ex>i%%8z zy?-P>W8rqOv0V2WN!GBJd^at_vdzM0a%5cbAcj2952?=vVW^q%D@X4$tnIh* z9&-RN2OWS_@*d*Yv)KXZLfojk@6ympYJ^)>ye0>7QVa^Rv(V~-oG`hwPh}GOng^YX z5sox(8!XT_zliY$%KnZi{hn8*@G%vzD4P@324P~RnZZTr_W74IUN0~618ZWO?Ui>AQwpf{4aJiBE@C#*OH1sAja_t6uY0G6-3nv36^UeoR{)-RkDzaj`U|%5F^^0*;V@ zymO*>Zxfk>SOuaB_WUV1kWkAf&&BKE_?!R~jP5;Nu~3k3gN_0{+m#o`!C&O!XU(IU zbXZWGa>-{(995z*YN~UtRQP0gnX~h&G@Etj#c<~+p_0L#V`*o?1_*Md)1{{tv=rts zZ<>h^r^qU8FO3o*(->T0tLbQXiiYI8df3ckV;;UgO0$N^;?P~M#eGTh45rd9WhISNrY_K&2Pig1ok>12e9o5GtG3FJc zEBkF;(WZ3`H^G@QU%s@hy!-7}a z>Abt<^^VWlKYu=pN=`VuesE2z$4t<}B=kY3%*=CS%dVD82_KDQ*y3+afVZ7G-;cK; z261-Wc6ARnia&q9VvSewh9pe{=J7ELXOArQNRQRZMB3NS4Yzzw4fBr*a^_wS;(?}Z zq46xoW^uN8_PSEamOuoxBxD3>BPs zfTbQ~<9sMX$?+?-+ioY75GLR+7V8tbPmaG1ET( zhEGwu&u~mSYcu_p@?!9v|JBbVBjuzv+o_nCw4e$N{DKtS{NyZrMPpQ4S^(`<=P47}flMHfzG)3tm&NWDfGsGYVQ~U+o`Ogy)&c zi*L?vT;bN|rJPUCu{34yv}QX*o8;>Sj$vxQItm@i%GMdV=4Q6PVD zffV>mw~Q6z_xTBBrQ^?$Y?6Vb7Sej;dJk5yH;f#SXAbUMcwVV@KHtvKBKl%co<&P{ z*+?xSJ_f71^!jt#i`B=E`;x9&(HJJy9o~z@zF%$a_!kt1a)M@kTKuM_h)30z0_-VB zy;=k=Il60417bF@qE<3}fAJzBKIARs3Vh={1>^jiw9)SXF3M$O_%wBAjixs5O%sys zCF4?&;QxTX>8uY?zlY80ICtcUVNGkcN^zQKm@&4|==T_(7JZJ@yEvbN9j_OGR1L8NmHSv z$QyVCrPf_fXJC((i^!FZktxvoW;wdB|BZq;qqyvGCtKCf`m2Hk%9PwTR@onlPoyC1 zu!FPz;_+W-2{ky!Pr)ou@C@x2gv_1Dl*~7_(%;j}!mJ+HV|?ETKol`@bg_`=4BitNRY_TOZG=_&YY`pS^uY3>r`nga5z$ z>3t2}-r=cp5)07e_y!4`H2>Ec@dLGza?*? zbl;OdnDqek9U6=6M*f?3zt3Z+B>RMq`q+?|HF@2mSA3~t$bc$q5VDo#vNaJnIV%Y8Grr9Hhod?d5GqIpy+odKLY3VzOMBAr6Y@_` zMKbG3yROId3-(qQN1D7az5iQjiMkYOi+H+1-Y?c#qUiUh7UO=Q+5R>Vf9-yg=Oo?B zD7F1f>WBRdv$fB_uBnam6F2^VIRC2?-NJGR1+l^AziQDdW^;9q{5OOd~aH^g0}ew}tvQ}m`pBjD!u{pc^6{BI5H+NA1c zJS9;W6anp){rAuRY|Q(PvbR0Grunm&ksrN@H&SXc9G`dp37h_M`&Cw z{qN9-f6e_5qT=SiuSC1aaV$UW_s<{Be+RPKwzB?LqIlaVmd=4qk;~VAbo8^*mG4=u zho0W}zl`yZrpgiQl$!IFD%yW?2h0d4z8{hMuG2Zuhd;Xm<&Nx4ku}9Y0*=x@=_gZsa*EM&9rn(|IDIF;u9v->U zn^#(Rc*MSVc=*D%h;YB))6d)C;gROs%FAmi$;&fqx;b0fI#}Z2y@^OjB-V_de9*ar z%@Z|R(|YOr(c{J&66p_zyqqi~tlu6I$TfqxdFPBY@8Vm^<%NH=$G6}Ke_Ep;hkyQ& z`$kWL0VQ?s`3IJ|^A(urPT%y-#ftxGrr&mkpY;`AuXe#58D4u14CgWZDg<|#qj%Ejzf0N;oFO8{cs==$m!p2{7T)Ua{gD)#l}guZ|BX5~XnLlgKsRceBFA>z^qZP%=@9b@~seUfn)u zlbLt#Q+JO}F~8H>sv#iC_B#knbpljX%J8t7U~orB$*&qz3B0P%``DGi-^o3E(Xg=O zqLkigsk~vm*YbE(EQIOq^G@6DoWKL|?YO!(43F2dxOPElrbv|v>}b`_aj&)VO8!BM zKdYa0KX#D%`HFqMf|Bo|i?r0LdkfoXi-%~pQOh@GB^l9n<9iytw-Wl)6nU2}rkT5G z*~|SyRvr=(sJtWo7*i(t3!gay${yfLwaxW8<#FI+zKo6+K$@hE`@i}hjBxk!l;S4` z7FX)eZ(XK{-g>sMYEDv)XOKaNXEoRv*ML`NbL&GS#$UDU0UoJalF`A$`?nnqx1}$e z@gBzz?Z3EbgU9&pmTK&bL+}%qo0-392tPijBu^v|nG4oozERvP@r!opX3A z85nK|&xwhVr2ZCnAu+ir+RQja@F+O&IU(?)>+T~}Im%BVPbsOjf`wS5y9g^jt;Gl~ zk(|o2XbRmYW_x+#&F#{Vnin@US#)mbzNjAJ8!}wG=fSw~@zD!{p{IvLXM{iA32;*s zx1Q}jPQD}fPFCzTkcgwDc#d0)c;*gGYr-yn-Q6a_*-w6RfhTNI!8e}XQ@)$`SwLa< z?e@p;ASLfNS!w!d>heU@W z9wZG!=x`^+Sp|yh&S6vj`;l}Vgo_`{-hY1{kvx`cqIx%<)SbxvCL)BkrLpsU`4u1llcPMNt)pC{EIuWT!BW~XN=+}W>ii2X>OQ7_tbX~ah3>P~=L6Eq zFHaQ$6!PDHS-8_4{{{9X>)U9;LuHdZsXX62r#z+Qn>~;olV$&9qUA@+8k|DZ8VME& z08TYd4V~elj-uwGVqJ{#sV$L|Z$!zduLi|;=O3n(ofFVW=PFt2>*3~c7W8~>t0_1i+znP_RD3|sy}~Qg z=sl!_idfc}AKg)P2fJTQ*3T;ReqPpE-|y4yOjtBpmgsx_o|PZW53EmtMobUXsWnK} zm3cWIz3}n&Tk`Yp?ePiqOZ1jG8aY-zEIOdW*6aZ>=#7xQy@SbRM5m5*MM`y_tEuGd zQPWnS1zZz;4{m+carO8*k!|dp`uC85yGk1wp|wtsWT5y=&Q3?%O$BEFeK zBui0#%aCT|t};2`uCLHxK(g@!_?O~*=={QN&8_wDiSViL?l;k0EnQbX72aZgIK3`@ zeefgA+=c%xzb-$OigeO8K;phVRT@1C+V^fU)e@Oh%&TD-82I^+bo`69YjRyz-4E9+ z!{8F-@mErUP27R$TLUwlf!(gloAZ%w8Finh=LriwwS0KO1zgc67xkPN=2G0hKiMJO5d);q_RTA=5ZhOahaPzwbxi(mxfLP zQ67(qy?T=3t6`qdbu!NMu$enQ#GDO z7?Co1gFyq+a{MVuc#h+bfsXVj`LssSF$Z=h^_dIf8Xu6^F_b6P*vM_vU1a(8)!d~# z0HOnVTI*cAIKIy`EW01H*;mV>4foNOs+X-2DnM7MLcx@QlZcD}%nUrWCBVDDlhutzlKG@?65G~E4q z^&U`3qtMt^KE=ooIJtyB5WF1%A;$EM^^*0-UiMv|27dNZFwYCL9A??fiIg9tP-NH^ zdnv1BoM)t~d6Z|Qi8iIuLICacjs0}C*1!^V>L#MT+{Y6ci;p_fFlrbsy8HB`>K~{U zsQ3aS&hxOjv)wh?huTL4N9su#IhozgpXdbXJJY8E3x$PIU+ zRpmjh^jX(nZ zM72AT5t0RygAaQkj;$7X(u}PGD^Isn3mmN%9igaxug#q*51#FYp{8#TS)m1bK^+0S zSMLw=mWyYRowHi-0IG^tCA7~zyd+AG!TX(N_ln~c!3!7xp6hx^VkWC`_SP& zcz8FmZ~W&MV&80n{~Y5B|I_G6{2h1R3p}M)ays7lo9LVVV`KE4d)ChzpinmQ7j!q@ z%1P+9Wz*l)e0Dd)iIP$-m+%`U+pFAMC{&UdH4%RI`XJqh&x@O|gBN-s+ld4PG4A;7 zc*8EPGTj@uQ`m(FDPQ2>|NB?;-SByS{hrT{Kj7WC#r&^d2KXO=GPnNHiTT5aFcQi` z-wFDT<-h+YA4pVmk0FNQE?&JUBm{`ICQ z5BF*RYD7XQ)eqUo)|uzLG=DKSAtm$Lvf#g(`F{`JI~h-|EDUC5!uz*bVSX{xYyDTd zQ0_j*%^rncYn{oz`vb1^Lw3^OU+uy?XLf@S_UJg&wf?UjfhWh8^;f&R_}z+|J?TyI zMYp?uH8{=@3I2N7|8F^>x5p6l{jze3gyWRp5ib$pOf0{kMt7ogV6=xRO@LE(D4@x0 z2e|8`s1Eenh6ljmCqU>{I`&%xy{J=H0+;^Mz9mzNlx2|#JP@ru3-d$Hw0u_x>dBE0 zYlUT?q1dh+`1RfGvt7Mu!SLuas+n?+`kB@`SJ|$0g!SX8KJ)Ry^8o;K^C(ly^<@Y6 z5_oZW$#j0kXHv&ZOu^{3eT^xZblbl0S#9J{O_%Z!7_}ToKmEEnQT}9fpQCA_$-*f82p+I=OmFIgPngHGZFRLs&`4oICW zo*1uBCzJfiXM?Skf1@(Is2)Cin%DcyZ%sRJItSK>1-81>Qq( zd-Izy>9RU&1~Fp{k#l}Rw4K#0&&IXJcPHVo-{thauJl{%&av!oaFxADtJzw*#L_EO z7db1H@%gE^SMoMu1CKVw1gr;43hip7eGh+*LbUm&QBh2?O(kd6p8>Pg#$LnE56n>X z&W*eQO_v?@r=`ZVOSQ8rO6Bj{SydAIMAEOE4j(=1V{h2wIqk0)oRN+~0G^3z&P{yuEBBe@_$=rNt!Zsi{xD!% z^9pHd)inbQJ%MtPeiC|!1+?#zXT?aBmEYe5(n~aEpkeu?i$ze0ib$t5z+LV0h3J>jbcD4UO9OK|0;t z;xzA!OqB9*Q>;_-FeuD=7VxXJdTX*$QE2mMul}*?LWe7WO(~w$^~yMhr7RF>pE|f! z0FY3Le8_SQ97vJWZ-l{?kC0rS#X<}E7$p1+&W^YEjyA@tv#QzE(jsK;$4eYt?x?(Y z@qt0y?NuTVVBzA9Z_lM`#vhji3ck7VY<)fzE;f3hpL}e}jSgk|7xf4Gj#*736$UY*x}hHVaiC|AnoUo#2{WFnS^OG4dRKNWTyln46eGDl@(wKIs@WE_oY_t8Q8}*~;MXOo1N1x^2yPn-~CObfv z8CKSCo0hkPHm3+$C*I>Dz7BAa26|)+B=KdPmUw)_Cm`;gbYI;(hfx1GOFV8>5X3zd~t)|cP*9)Nk-p%fB{6E_E!Iq*b37iT3W9KU8 zjC=gLJ6SgDo&&WKC6;^owl~PL`9XJ~HdA~7g8~60>VxpFl_T%KOt9HIdnUwP<8IoSF2}Sv=lCX*FH6%JwZc$Rhsei_yGu$2ec)*Vvxcs!^r&tL_9dR+il)eGn7J zraZB}8<-&q(C+w3Gf4Dk-qC$;f$h|9U5kXYfqI60*y&VGyBXE3vkw$RixjBQ8mni( zpUqYcKC{(odr-Q+CBFa5@R4F@Kw{@7DPRudI(j*2siPmNRiH&z@4@ya(Q!BS_1Fk1 zMqd-)I(-Q@|491 zyjGPdl79k<^T`VtlZvSOT0^5_*rR0QN(?I{9`ts-o&CJ=<+QZ6Xo7iU^~<0j_5K|Z z>Nzm6E?wg#*k9Bx*K-Kl^d`1Noyxc$>QL`4Qxf5G5STP$8sI2fd*)oBr(!RB=t~tv5p-9Pml;Wd%;LmFR*d6HAR9 zhv>J7hF#k80fBDVZE4zLpGV!v><|xr0FUT;y)hlKhdF*FBjFXv`<^Z*A2y%3Ib|87 zv6$C-eq>gF5$TfZ)55s+nqb!pZ~nY-dn^}rqyYRx7^r6XaYissT3gDPf73T|O{^3> zYxgUAzDX~`7O|m7E+oW^t~W18(cpEry5^L4od+5_Tl};a_gH~cd)==$l*WjpMAvyL zz(sXu&PA;?{8uUneen)KTBDxPdR;=!Fm&Avc$^-D@F>UJI)6OHp7KHj zyg6O3(%^C0=aXR6?sd4vFZgIneYL`ExksWn;ppb-aZKn^O2;xVcKw? z;Um;3n;J@?9cFM)+Gcl~$MUp`*YCkCe5C2zz9STgiTxe(BWMpmNw9 zMtMNcDsNV(L4NS|u37U=FsM~#TIW(?YP2wZ%b>eAsmz7D0?>p}?bd3BDX)1zL5_KH zm%b9Tj%hMg_wL_c+EjS4V+@sdo`qx_WIk&2CbwiJc%oo;Z6)}Wwlwa$;M6T;jHmU!Iy)%A{)`5zR33JTw87Wp7ApMK_Xad z=pErP>sHHZ5@v>kxng8V;>q3uid1&XNxURKI20sZ~^wyw|;YxN(ye5AV|oo zT@z{J)d0>n%hRj0^%|t8DKV@_-CYb!F2p!b*O_%xOxuf&JwHt)vGTauMoWSw=bwaS zplMJyudhZfzx#cq70hQO(3O8xIy1(pt0?KdQd0O1_V9fQn4{PnX@?+{BWF&!fQ^R6 z3R?Aj(=O0ZVbP8#WGU0LwcGV*W_Yseo6Wc*s+KA=;M&Nz8UZe&9kG5MtZymqy_-#5 zL6rtc?F^6|2Ya49MW&%VGB8Ga#fxCYQ31;yo55m==iDTV^Z3YsBNmb^H)AF%o2jY@ zOp%Rj>1-!%*Rd@-C^=2{#LURcY>gQ1FZG)zMLm2p?ODF~THp%v9YBf8@4Ec4+sb)J zpdgH33FPp&(yG5EOKFP~HGEk45RIB|4O8e`h@uib+3{NLaWOl-1Y>Zb4z)dDA1pJN}>a8PX&emErDbhA)YiB`08CX+$WQdJ-i8Sx# zEPU3J|Igu*(*xX+ z2M!GeuRYv0T4i!E_KlW#V#RXM90DUxIN*{g4}k~twQ%2Q`^{-*v6Q*+)k5OO7Q z0%$y|_{JUgN-G(XYCJy3YK%SYEzO3Glp2C6`-Qd1{Y`jH$>WNzYT3fpiwseFf}**~ zlix<5YT!8n#e-Q|HEf?JW;B*vjShvU25s+88q^t5Pkm~XktA%dCpliJ7h%;M*RHcS zLt(>M3pyWQtbc!FhSOO$9(%jKNU3I{7S5{Ah0fOCnhz)1cdcOKv;Fb~7WzaOh@azZ6PS8ylX1uI&@x=H2Q1L8+ zY?aU8OYb#!Z_~WV7#H&Q$uk(yZrhxyCcv(6K~)D4tfA5W)D1j#tcxtf66bGB#iz=M zX_XiZYbKdMK|FBd|$RRKS`)LDdra_CRHBVlId2jh?#Np^2Ueu5rYnb}lU7V5AP zX}Xk^a6Pg9D-aF!8U!PY04a9f$0b!&&lbBHV--|&%d!s7wtq2*J$N`@>gkx;PXq@7 zAGedSl_$XH4($+@pWQgV?ZFOIqVI++EhI40A_VJ-_Aen&2L;nl#L=(0s_*fIl0d7t zmY%V{>9c*=T!;v)(Lec4TVPnsq>*grvej{PxGuOLp}r1gl*~1~4z4M--n!8cd)nA0 zLhV53aVg?ev*mlZHvB`Y7z99UZ8JYJ`1S6S7X*K|#MD}%wow1tan-|sYO381Gw$fv zWm0N1Mv2amsM#4_B&)aSfMoCoq$XKl#UbC60*&A^ja zc;8F^{H(Zai7jd7-n8cohwGzD@a>0UU5|S9b~^h~1pB=>y&K)ghj4r69;-U_R`lD7 zS0uwYV^3duXH1H)l}+$_h&oO=Fr~U|eK~EWAB9Ji8r8)3dSbfL z>*14&qlLz%9biVDn`HN6KCQ^zFO9rYW{W&M`$bCrhdBAg+&W2}@S3#Ob~;SE6eQ(w z0?8QXC#=rkN2?JLhHg7eK!o7DDcAF5=2T-g{qzw6>)4! zyE(1-ar@G=qT9s7+aHh+W9#Te><$4D&UW$l*`M~{@~1+r`ig^x(ULh?!=NqMM1=J~ zR~u6&3Zfx=;^`>Sw2@kEzli7KlUaAQ6(Ico@=xy4l*~{NTZQx<=e8b9o7Kl2uew=g` zk`?seeLbeHP`e;kdzE)UVRazGOZ{3_!=g7)H!wxK^&W#Hs86r-4#V@`v?f8*dsME3 zzpta!aZ@OiaH!h~^Sr!ssgF?J&(B}|RAj|{Xg6lxa|4mkKm?;zEhFX9gH$CPL!{}% zz+M+^uETq^wtvjGH8g&g%IzpoS=nG_;aL{_bPS~8SE~VGceWg=<3birX;kOdN2=_! zjmI4fkCsy$(VqI-)lT))W(PeykLoX*%H)c24o|;d_0?Fk@8htiNN&M&OgS zhBcWV6y-L^1qfO|wolmJGT+|Q;xlR46mK|_l_`4V!@8B|_l@2#X>|{jdS}|!uB!{p zI+7rSiInaL?RAV#3L6JNL20}tA$~l!FjJlvnAw$nvawQc1C;MVg>JEaclg~W{qmY} zE6{`iAF`&Vz?v^6(D#AoTSNoPchy)mGN%KH_yA1~qKNXSYWjWCpbSfa_xKUsx}=u0f(H~vey@aVo#O5u7j*(rE7jly5~$sY&Hk@ zhge{MLEZ7f!K@nhrq$L{9hY=d7H<0lK9rTK>d`6gKRcplhWQ@dKIm~yb(Qjj5|MB8 z_S1{9DIPNjI80o=t61d7XqncavFc4718tS8dR2YANtQe$mS!%}X0Jx|5(iot0llw$ zR`{A{va^!3Y|vc#+nn_HfKSssBn8n2JT z!VWiw0qkm-+&=v$Kete|mDFPm<=bA{o8sn~fG??g3boF&yyEUFl(N@zyeKYR-+sf4 z$@Ai}egn8tuKan;v6NBymhIM$4mDQYBAw{_hwOs*CuI4OZsfn2s%?{wr;Mr`*qn6> zAAcsJ@g0?ah1oLiI84k{ikq^JqWW~0gu+X}O=&LmX(n_nrnt7M{3d=3t zo1{xgNYgTl=saD-*={f>7#?`(OZ%L;uGjDKszGE6_O7)f3i9=p?5yt{x_QAu7U2QcN2y6X0QP$KQjce;PRomEmnM7gI3(3vbfN{FAJ{u;Ih6eum&>F1&2T*TaJVr>LvzU4@u^4Jw1ksd|^6Cp2zJe+id(y=O?wXk&G?7^Q5ot87s~97_HqPdVY6Q8i|Ym`FK^lMU*%Ba)Es^D4yLacX&OD5o_8TZ|S7 zqdAlibxRp?&GY0|DRo0+*E*pk2C9A0=mu<+xw5ISTqP0b6uBqvzj9w6*)7l!N_y>o zAYt@7`3i)oQl`D}4VqNxN#rq?XC%VsG{v&ZwP6DewN_}y1fNLfM#Q^4q} znpFOh>VQ*A=hgg0wPom!b!@x#M<8R^IoxP(p}l4LRp%lEP@L$oKJrZGA??bYM|GOl zS2oUs#x)N7i^;Qzt66-H+rQEz39dAMpys-c^?_froM!o{OL$$q+F$OaS-4Yu?<~x9 z7NvPoM@tM~QXUQyUg(ITe=k|ulb2j-{0Z zd4va~$o+{(5BJ6Aqk5%~{z#_TUd;E<=BKO5(V?82+;?iQQ9!P_SI2XJhaDC|w{MHM z&M8GJByt<>lK|BYB}V16Kc6F0dvPgez6+njW}mi5Nq-uTT)1PPF=+TA`pi%3yn3_( z`{u(^@1w>U*}0lcF&DM>Ddj$7X}md$ZO0`pj@@x^HPNoTbh(chHD^=}KxoO$kxuIV zGm{A-$Dq_N9Vjm+62<8G-c!b!P$y@~Fs!D-R= zQO5Y*M@QkZLI+%@kAkWrb`8NHM5t|L?E)npTdjg}^twb5f=LR@(T}OiI>QUKKiJ!g z#Ze@wyzeneueDECr>drq!eS#>RW21%(HtypI+mTaGXR61mgv}R(*&&{0c8w3A(-;- z=T%pXWM#f?QHANFe#l>&Z>RoYsmN&fl5Yg@`OJ81r4M?1WqgZ(|F}L{HM!20xPrX) zC|Rr9uE0%339T1&9=h{prSGoSb=j6_>w?Tgd9`D$sFI83L)Z}5@eZTSZ&(wL-9 z@!RKr6pBdUQ%f(zJQ44qdk ziSzww3;(ZJZ#NmIHHjwabo$TG|EuM{kNh{{-Yy6k5uI`DiY%1cklG0dJSjBUS&|XY z?C}wQ_LnOS#=RK7-JR95r8#`AGx68%x0rWNZUC{Wei!ITs{gXUA7|({`i9P7gK_%7 z-|ZcXo9-x9X6Tduet-Yt#LCz67;i!=RY zT5mB^D&c>ed2^#e@~=JToNziRudnVhfAw_cIGj_)5?XluwI^=k31Qn0R{j6G`ToZO z^nw-l^gJQy+Wu?L4^UiBG|#~4|21uYI0}A)d(2%T`TslUU)}EiZ3hi5 zcyI`Wg49AOm{{mVocweBWP+|fmH?pY+i0jYR?>Sd#{HVdxF)=;tjvAJb784F9#YAY zPs3}%8gx}J)+T^VaYWVhrsLR7+zAy9lWrupZ+if?(r4=JlP<2#nFf3`Qg7XAd}3~u z8HeL$9<5jKolVD)L;d^D?>3@hyxlV}zg9pQ*P-9)$+mP|PM|1&TeXb`;7O7zEP_zhn@^!PrUb zhys;7<+ASIav^y*2xp{ruoiSwh$v|9oYug}rYzdOBuqUu*0$^?AE;o9nTnIv{DqbUQXU!%YQ;TI3#N z6O7FDSM9&;znueKZD3wImQE4cDM=UelW*|IH{uAuMxN2F4=2Ei%OJDRCpHOW|T157%Rp!_9?}4s9c=v<>6?V0n2$c92Wbg z#u3Gi>~FmVr0^dAV14SnU7r~pvLO`&EH{J>#Ism%(ykgg*B9?Th!1#51{_ZCi+k+G zTn<#*BlYM;%V^%4k_Y)6ZazyBaeTnXhvP|~n}r`q9E_;&DR*@hqQp zpZ({BZZ@a%hi(Vs0Kd}Oo$2^IOaQCG$i&D>Mqds@7KaC%wti|H>nW%>??1yd<|;oj z{_^0B!wdyqp_WKOpOL@ZOkw%}1WB;QFFX|RYb@wV)IZ9JFEq-JQ${)hT&gY9Y4jV- zeJ7V!dC_sgDE~YKSY&?BS!QI4s}`NEigU<}rljxg4RW<4?o$+DEsD)?s%oUx`C8NK zU_g?b)qQ0SyE54RRiSvQH}Tn%)qyOE>Qc;&(w|F?FX=Xe*aT!e z>~U2b%w_)N{=!$ju5%`#xR#Y1B4j?x&X8HFthbZm17 z(Y?da7&D@OTPnT%|B0dLz%@>Y4xL-TcwAD~O`>fp={ad6Y<-AxaHJsrH^)aZZaPA|4=5S_}+&&tOSBR@7z~$TU-GYYCnrI zX}HJQD{?aNTUQ?F=-IzNnLh>E-?7fK&6rbGm)<@Hc-22*Z}Y&;W1$Nm0KdJBnUdp6 z3&+Z&^rVRu-x$0`Va&WqO$Dy2FeKdY0K!PQ~aU2Xs>b*+GB@9x*o^dEsYQF~ca&^bIk$RHh zo|-D^x|?q7-*md)qkfA8HYRIfs?W``K?Np@V>;|>(oZG@+bgMCBdEMpRw*i{7Hw~p zq_{+pVzI92HX9d}_xQl#!1g)MhAa_Af)ix>YToF95?id{%9_>Lj;9P5ur&b#mxmr$ zsLkD#D+_E2yz*(NMD3ySZ-~fu+}=O6&QcDGmh35m_f?@;uFo*s-I-6Ijk^~I1LtEO z^lFF0SPz3E6uw?nQD}*Yx}*$!nZ+pzKHc)w$dY+N*Y$u?N3+7J->!BX(#Mov3aos6 zb!we}6F#cn=$C)E*m22htcDzBl-*{Q54~N9sJ0)A!+~UeOT^rdRxTVu{w)%}fRjp@ zq#k_o@VJ;3o$&@}rDf|8jN0iID_`RiETd!swrD*94DjPa-%0!Wn{nB|%-iE4WYywu zi@VYepI-_mx{U<_abML~I*C}UY2a5`;r_mOaED2zrM@4hNXc`CUsd>@lCD;yi8@cM z$K~~iC9R9)Dv;77*3SAM>m5458FA8nBF}&&btG*S$?KaHlZ4ipQ@GK5VT(g$AAcX@ zDKufvyPf9tlIYT7dPXZmR4@(O%34k#6hGFBG>`rQLYH6)QZzyTM{y)}!?2TgYo?!@ zV-OwV4436hQA_HpuV_oMD|lx);A2m)h}a41UgevuKn_*giuk~ENIP>> zv2g4X%2iRJ^DxT(<-5{XSB~on2n7%2)7@Fu5A*>|y^l z#|cc&&n^xWEHH_VZrB;Xux)2@EyB9*7sd1YoCccy{{EX@O2}%bF)g6qmhidHm>pW* zG=OasZA;Tjci2!fx1*>sI5mmx&orP|Dsbuds&hFVtM& zL{_wF3QN)lrpufOj&o3)PTx4Cc>WuaHdw@d+=2epdbOBQ&c~aq#x*4Z*+H@qmMxa0 z$ropsnVPu$B-21)WY9F2dUIk10VIIT#*#}0s2vr<9cC7-TPJcO8kczx{jU6i9ozZn zK!LqlK>@onrS7aJ!AsqVFWjua&YjJG%A=x9u{pj5Sj~@uGL)<5|Bc3n>irm3dt7gq zEr;c}DNU}@)*K|mGh{Xq_X-d_z^Q_`iwQw@GHCBL74Iy6p?mxkEt_S< zT=oQ4XtH~I6J9DmyjJ+*>W7|X3H$?vt;Zp^y&38o2 z5i@xNgVDwPv$L}xGbii5vXi~V6#IJH&Si9iXR&yPXoc5~jO2qdy_-o-_bLJ&ny>Vk zS`4Ju$BAk@I)L%A-Xx=rN%~4ti~cDIZs+>f4EFaAvO1o%u`lfqbOWkfveLTO3hK*a z)xmruV(w$tn_Qm1=KZ5szbw%aRg0SQYW{drYuuwYol}?7)|u0x+V^;+-*{hlhi^-S z;Edwi*CgIaepUC?9?NL=rM0($>NcM1vwU^R2F3J8)=}&4^+JG-6kzHiOjX=T2$p{G z2m%)p8ZYXcC^zpVp;EUNSWLPjNZpdBlC-}DvAHC0QrQ_+>^q-lGaTtm&?6V<{yNAe za?tE$%HzrD^TR{guokTkdUROZyt6QtlxGpk8rR}6HeC_OKG`s6>U0yG;M8A{<_Jl# zn_F}{wTm%1g7b*0>i189v+B*bocwA@q@7CiPfk>C zP`_7xDPx+1VMT6*f4lNCy(*jJgbIl(+=4g&4zW`xvuA_yYGm=ksvHqhGD5Ds{vzsIJsY_RYBGY~VpPi6fb^wIHNM=2p&ZIhL-;zUT|rm(X$Re$T;_%i_(cY7~eK zW{>4fk+ue3NCh8GSK%QC)P zyRlk_WTOfT68aK}2BqWu{kYYy_hW4l`4ibn(BRBNMD(#Y-5a0v-(?!V+QaY4au3@Kd!Y9IqT8*0b zj3Ca3-j84Bgc;XD z;#l`Cokqw~zhJ9u5j}i@1*o2jWH1L|U#59SARqFgOey5-$YD9)U_~vX6VVfhj{YMh z{lBq0N^$(!n=s#$2*Ahh{b?c-Tu92|zz{Esjze1!)v?cfNlz`2w%NsMA>+TMaHRzn z=!PQ^N>B*}DXBn0w#HSB(Czcn)%6-K6fR#*Azg|DYx{26e<#Fd=&Aa5v)3r96ZM3l zy?UcfSCckV7Epf06W;Lwm)NbCT{jO#d9VL1H=(*EnF=nzI2MJr+Bc{d2hd|Do`02 zwV+r>-L@JG)4=*?JzUFvw=;(8V6d_xUXx-~F{3f<27Y*(eI{v9NVrSi6uD>J`6tdhj{l}J;9-L~icvrY8H!C=vKBNsUU zCkU~DR`LKF>)ichWlfbRW$W&Z)el*I$3^?!<)&JRU{mdfqO<;7IPS50k*qUE;dm4P?uv{Y z_GQrCIs@d7dOI6n-Lc8Yj>9NGdYcfF(`as! zsxELqDTVTy0hCsarXL53#o)X)h4>lK7dRXqNhkgi7JbQrtnNsy^2soNWvccib z4y3B(7%?c5M8JMRC*U1pLo+}(WA~JvlG3IjnOvN=@R4FMbG5Ceq{|$h^4BnCGqV)GK_!ZY+ER=HzT=9Y&facv0}6*PC|4oVNnGzeU5uS(0C)0 zHScs4GMP)oUnxsMY!u`%$uQH7qs7>Q_%~u0BfCi zpGw&8>DRXyE>fv*P0G5@6JsFboT{&d;~_nz(5~>zxCnQR-j|h4PI*H4FGUkbzRG(o zGt3-Gk@cnt+ix^RogUD1Wy{IuI-*2s&X@Gq8%wooGY>Z>ag{8m9pK=SW;=<;EukkN&ua$=GVSCmeLYidUhwUi_EdSe{=Y9L zZ%C!8vuklOi~$uSZw&lmpKG--RO@av%n#e0Dr}$Ub6|xlq!gzY2sm(Lf~w$B+Ps&a z_2su9^UhmF)wwE3>I0lzn)K4Yvfnj-9LbUQD?HPqrr+4usBttxIpur$PGij-f0r|W*o7eB*A5~nrO?X7 zy=%v6AemR`irg76Sw-hPm?;hU>TuL(E>~(K>^OwMU^sAD%nS8&F_zDy)N!~{!>OH2 z@VVcl&ITN{D}C@z!KB`M?>l+wtWZMJzrUp*nB&QuCFlNQ^}WnKpLE4Z`1J>FgE~za z5qvvuM_e7Q*6^q5L20Z>xLRO_uyK{~6wwi;8@CVSy$HSl!LqWl9MCoWkvHj$f!^~z z#?|!i6$O9jg6Up-9?RFrGDD6P>x-6*r0dM_7;x{s3bC2x{Eq7w^BnKdn1ByBx z$vY;3^R-F$MF1~5BN#_6vCA~er;QP;=2LZG`OoLR+ao-N<=u)K@YwPC{&YCsn}ts^ zTDVfuRe{d7L9&7W)!ti&Mb)oXyH9d$`BB#|!Sj~|wsyiU$x;*6x%VIl_>5Xo>?%LKkZ{O>`azrZ~&yt_c@%%kt z4QK#NB?ZS$&OHBvh{wr?fjrHIDv!MtKJGvOLJQ76urIh~@S;0QwSKhBpT~ZApzDSn zqVt>{@Hq1bfA;(Zy-s@3s?4ap(66iT|8O)RtUxE@{w8ab(C^`+KhjqfD#L6V+TS~< zKmOVa0yxFdI&mGU-=;d}I0xZ5{g{5$_QJD@mfZ&k)jja-`=5V@kNm;MeE_&u{H34d z7hio9py1L@wHvQoEObE)9QxAb*?+*Ox&ln)JIp<6?~89r3OF>BqT^yZxfk?fOjq4$ zr7Q%h(Bw?XX1P3t#?_V))FBrOENclL7HUd|g=|m44yS ze$3)IAvsnz9Zg>S))fB_g5ikwy7#|)^Y1|(Lec-n`R0w_xwDY6<4$d$m~@%zI?O{E zATRf&j!W3iH>zkO76=5oBLX6qj^<2h{PK`-CP?#l>Mj(_Q$|?okS9RNR+6x*rqYvF zOkeIaMm%7H36cf}oYzRC#{U2=&?quht+TfoadSzDa8Cll^BMi?tul4}27tZ@IZpdG zazq(R-)ZvniRn)Hb=+E9GLqnqBXDf5q$p;nI$Qm0(Y9ab`mgO7#std>&jr)1 zQ>FWxVf~LN3spN%;FJ~^js072;tvC%_!uZS;VK{}{vA#9KlX(kuw+lu=6_shSVRY| z0mTeKjFP`>NBo<1Oe&zs!_)qb@7b?!{C{1JkPE2KP@HX7ywHt#KLwo7kK=%mlM2H6~lI^KI2DnZHV zo(I=E>}Jrcamh#S?~B}P4G@)SYO1{f&Z5tx3^39m<9 zAQ>i2E{T10snvNyQ{))tm%#7d?7QwID>*fCyC>(!&y)a)Y#@L(>!mQJEMn2_C)ObiXuL9nSi{Wd{oxJphohx|j9jLpZPsj1Y0@|#Xmhx>He4k; z;g|i|9&*%Qnf%29F=E3Ip{LB`uq~+odRNsFg45%$Tb!3i1tx z(O2Hw+_X+I8O-5Q%9?rs8)h%XI0G^3YU+E z3?l{H#x)fZ1Zmul@gpz$e&Q$KTZR@Z6-g;NR~b6Ta>j0qUvI#{Qe=96v~q>dZAayU zN$+m;!(a9vomY;%zvd*@lY2h_=+)Z+0y4uHRAsXD>VgOI zb^9r{#t*mI&G&Rj_?^54vUOip@1H20>6{=Ml7d$OcXkJhq(3Vx9%9v2Or)yF%XSgkHtX+lWxVh!Yel7O6hRgu%Fn+qt5sV+k)!D3L?v_`NQ&r zBDFOwfV@$x`8suBB&)eE2;aT@4!`zLUO1Qey04a+A2ED&->>Ozf0q_%(S>zf~(nsA2LP*Mf*{<7%i?`_{kxjcuV7WiBbH)(UDBk zjl$vG+xciihIi#b$NE0`bAtun%8@W;X(BY<#r zb&bC2QjlOW8^!g8!p<)60BHmy;)9ySZ(;;!uOgU-4I=wG*O0k+vI*Gm$&#synTcPxGLxWu~u z-sXPYg3BucAt8%K$E^^O`;PSl22X%Av+H!iEiL@IM!{&P;{@e)hRi(A6Ni;y2X`?v z=kVaBI|fv(0~ClqUL7s7qv&UwcA-FQG-F1&q{ALn8E_oOHGe1%=`U+{o~E>wM+_k4 zL)~;oD==ap_xuu_YCFD;1{(QjmAB1-OFE7K@Y`!<2(+D4zM_)2$*NuDI-MG_BH|>s zqsr)P&-dHS?ezMGfzL#u@ygg+ns$F6tEeOM=`X|(0IaUnq=kF;e(0j25m<`>;_QtiaQZBN|j6ImL9FJqCW?) zj*);Ntnzds8eQE6_V&xXAvSl)tcUz=Vrqq&jFj%fQpTMLv}8jCkpcHvM=tT_%_j0% zD`8<{C+4cLu#S zvTM46HwU@A^7(dJ=T``1zO^@PtKs0wmR8dZhr=|Tp1tF8^50;&I|sv5Wxpt&lr8+1Du8?LH*d+M_)Xodqq{i5_)| zFNqpiB2pS8{6UlIdizm;Ij*$Y>gm@C8%x(@L>)kRI$*&>3G@cIt~c`;hHQE3byri5 zj;)C-)Pc5I)4kJ$6`bYHP$u3+n2%0y2+2tC3@9=*-vzS>x4!V({k`cqO^*g_t%l9X0K0@6l*6}R7#7Z66E>IY`wyYfqdm{>aNBMv+)g19GDyzO2{$c zV57J+Q-&Ey#1|D364K~TtPQjWJ(%7sG3;hU4>85qnf6Om>S{2SGgS0!HyJf|N2E(l zzo6#+@-ESV#(lGoMmnBW{WEywN|ZkkIy!n~pOOb7&kO~}HB zR##7}SUle!0louJ$ZCJBUq10N@Bv$(0TYTPhV@v=2WOK8pvt?9IKfhZPF91QCSK9>>@c=SFZ@=5d8azt154NO0m8*3w&j5HC5v@Wv(3>tZ{o;zz zQJHi&qk7jf0u*rrTy64GRrtq?0^C%`gz~sI0{-nJ|61(sy~qR{nK=2d;J1eGk5OHF2?Xdj@7}xk z`n{UKk^FT6I%F5e@}GdP`@vJD7yml4e+y_+OMxTpJRB>zFOJY}o|AY$f(ZyB)jVVI z7XRaMyix+vtK~_Z-@p%*S96{uN2HF?n znM_{*N+fi(XWlA%!q8;8^Y166dZ}$KPimZM=X%=y&Vg>M+yGFRPF;xOwpu74PbZI6 zIC+;RX-F5+;(WeJvlzZ1xy)$_Kf$cuwz%XV>f3&k08yD;0UB&2R`cK6T{vG;n3q2+ zb$KwJ?`>i(TDe}L13=ZeL=BtCub1kd&ob#d(Az>ZKlkRpC;g2l1}5kK(m6dtOz8fQ zR&~EjE+Xsb=omvKMNj|j+i>LNM+fREN_TM@Ux>cGj{REH^htWUK)OH_?oxCYM#wP{ z)xl1d#~}b;TR$2>^02NY?k8G*?G{*1_#FatjcQ8yGFFZ7d^*R43;G8J3&-UY-0>f% zAHTYCZRaR5qU$$%`+qHG3?AX)ZXMg>f9nGIw`VI%Ox1%{R^Y$5$>)Ss^cw=x9C%^h z(6s{tv;VRY{{O5{s?n=1A<2Tw zl)Fa~Kve|sG|^`YsG%IZn%{2L8OEpNjzBu8Cfma9Ew7 zlU2*J*CSroYA=r$^IR)m;{^&FzjM8;B`0RYI26>c)VSigoCn>*Vp4Cd|J*k&P1* zM)x(tHjUdTUH9NUmy`KgfZV;s&AM_?@T>?W+7?6Sceg#crJ(=RUbkjcHPKxu4s|XI zC+MKJDDo~HhAjD#F12>(Hro`y_=SkZW-`j?7q*Z};=16;K>+urM4_J63$>DfO~31yZY|QFCaD#5Js?;hK=U^j{Ip zqb?poVnF%(<8DNuJHjIm(8GI2wm1mIj;rez2T~RKPEwIoY7YHna#wZreu*TseO8dR z!>B-k#|q|40{u;;HoQ*mVQGCJUlh?M7{&4+{Q(nGmP54brre6y`#jpGd zo3tn+lLBe4-qzgB+Os3Yb@0lP`*3m8DRln_wev!TV}kOK*T&4e`4e!#3cG$gIbXTS zM|>&Mt#-l;E^e2y{sB&iR%Jdc6+aBhv zQ&}SozgdUYCc{k1xvh|D)r&u=j zn`GHNhGUeT=~+QtwsxGi#>Q#Zpu_W>V-9UF@jAE{NY`R~HH%Go?qe2OYW+-PqP)-} zbD=f*uwXZDBU!ZU=FTljp^@?DTw=oSFx3_ldwz29HLt53oEpv^pMdsjm7aN8kqkov zItT2tdOgP{SNA^Jx$k>&6CRHW=w_IvWj)ay9dO|3Tp1*Q$DHjabtLhMh11EJ?F&?x zXZLsFb&kpuuB|rNOZrBOIYG23V>kK{UBc7Mfn-M+19?i+Fy!#B`ez$?y*(yFib$$l z-WIU8YB?*$<4U}&pwJx~%?Z|X-!Daatd814Wxu3enVAQB~)?p_10>)q^knC2y8wOm{4Fp?V<&mMg+>s^jye9(~&l4&hI%AH_3g zUw}|wy04_ND_GAjtJ?b3JJMpGrIxLZp9}O* z#nlKOWNr54&&HSNZ#%du`xxtau)X=t>0FznlC7dPm&{v;J7hIcO)ri&zrFm8SgJn@ zFF3*p=^e$UB?{I!I0yh64OVyB%ne`H<_6_X2`jHFl5m@q*kT8&A@E~~3#@taQ*$?~ zEi~C>j#+9l)OP(-2W`slyew_*b{bwXVPH19;?ogeO=sqJ)06Y`S%07g@GFbw&Bjyh zRM8j#*r41FrH490l`HrtWWS}Rj?0nC&1en8$Iu{&VW{gSF<8H3J6UKHPhc7At4V}A zb_Z^IKcA4f_%^5?wbRtH?y{0ezdT7mhRW+_B>)Wh?!nb6o5MbKo7Z3y%6tFf6aW0D z_t&Sd^JXHH3goQGUJq^`yYEW4#u0a@xQ=pOgSsH^ja0wQanBpP3s-Sfu!?Q>Cv9wx zdYp?tnkf@oZ-rSrg{%Q+n9b2|9kIXc+VbORMbdDSf^VCD!m zP^s+_p)&H#Szx5vEoZTlUP~3Sp7n6mN{0Zq<+9^2-fE|$@li9yw|NNtDm+=Z8W@stvi#EXNh_qv4@Wwp57C(3hM z^zs31&d89=Utt_M+Gfi|E>OkQ+9wJql%6@j`_kB*4@KvIQqlUepibN8U_15T-G zlT(X$)v-$Ps{;7Rw3n(%>=Pe0XuR9idhDFO2JhPoQn%O&UCX&VK`AL0Nn9%FN}eq( zVnBClj7?HKoeTE7gYULyiOBoOp7mWM`Ijp*gOW?6-ydN< z*J3y|nN9YXY&K_%viwb}IkPiB`8oS@=`B5k!;Vv|w!Uz?UYky|eDlFt%~hkXu^uX= z4d%kTIam7FyJi7}FBDbX+le&Ry3N|eI(1aY5Vz}3cE0_+I#ts47-o8A&>jV2>D3K5 zD^@Q{4^)5qmh-{p{rR6){iQSfD4xX@)y#R{`Is1iu)#SdIHM^=vEHx2lj-lw3OQ8( zI_hYNKJAy%@NhciI)1>XPp)k@Pw%|% zJOQ41--x7$#%_Q&B-1gV%IvG(ctQF4ub>uD3&I|zMsc`095IPuO7`f{qR2fgdN)+i z#XJh`xh9a21mUxk42*w-0FQ?bCAzfk>p4JF$RI04ng%QoE;K}{R*+AZAhFK5~waod(v|idG7AP!> zCczlBTV!kJ`hN+DtPoLMuCd69b}MaYaX14Z$|7#0Y%8F3YQ)2WS| z)pUF7Ad{{oY2#p~-Yp==9W_2$o((NWm6w%H@NL-m9)+{$0RoidRDfJAk zxN<)$$rmDwKylUaPXNy?&JZ6*R7Hc4)vH=_zY-ZCOuJH6KOHl9V(6<-cgC$Z8t=7S zwSC`WXeFHFvEc%Y#xW`gd58kFMRP@T=Ez6zM|Hj(IJC3}wK)fPIKpOHLRe`6i0y!g zh z4CZ+CYm3}h>P|fuwH!4Tx_L7gmF1*clezJR4^6HZwlhH#{cXX|F_WaPotq7XF`ULX zyg{tOiZu*5vv)V;UaOTN>Ez?hWj_$CAe)S}Xr)uVD=u??%hg1=G>EM(N3G9P>My7b z23q5vnDsNsttw9{kJ>4qncZt4@DqP`tT@5LZ0A#xPCa8`J(-cM{lc1^gvDctv07|D z%j}JgSRcm8vqDX5C`e>%e2g(D$;R_3K{SK0)$4c5#lcqo=o|^z!Qj$X=1Ikmjw{Xs#>dOj zleO;J6UztLCp)Vs_Hpv<=f{W)akLfpu_~%&FtB*8E!;m^dT5sGGdkZ$E?Mo9=h#b9 zh!Y}s@bpw|uMpynL_B2g7Wah~WX{XJN)nzeR`Bhj#;zfS4PGiw0?&y3d_MZTp~V^B z#qKaKxs3f5pp0dWKf7BP4IV;aERzek$@d4cTS-vgC(pdNr6UovBybOMi~gLbD% z1hVYy;(}4#sO^xmDi;g;cFdH9wA3~Ea9JQY(@lK#9IMxm7cu+o+qY2YHt)Ub?;aU6 z-!!${)xjS!TiEZ;^!Lf_)UB+ac=9@Ppw2c3)tT6!)@HxjFuBM`$c$aXQV?a%Ee+|u zI_&2{_m#V*K_*_<>O@BuN97S2DYFo~~B!l#vw2rD(yVF30lP2M5OTHW)LS zO-cJI&eC>s{+tTrhO49CgI-q6J4;MojG2Q;$#v8;;r?dV$D#{iRB3c_F->qp`#|sH z2brw??F`xYQCv8Xf9Zcet^)T2N~#Z~6=1CA#K`6z@=tN>BL$=F3#M-&U1WhU+7fto zg@apGm7q$gcg?+g)T&vWclPCJO(NJ;l+N+eO3;?V^ZN`W)LjPff9?NXTw8 zx#jID9#PpHf(Pt<&j-_6LTzIO$TTD+X=p83-waqFm$+3YRG=I=M zC^#xhI!Fs~S}7#pwi=L6a5o2kKu9Mg@L{H1+avaG>i11#>Wi9(0w=pxwPfx^+?Edz z#!@8C8s2Q7sB)XnVJ?oRH{jQ{8abuKNu*QFDp~=eS~p}`1a`Vn>`U6T(`Rpe8bj{C zdJ#Q3NYB3O_O4i46kOK3TxBV;NWWh0As_s;`(1uuuI&dj{^d?RH|`grN1C~|#n8Bk zj+X&0-bLo(VyD}i57^X$^Y$n$PyL{8&UE%9V|MAfMJ~Sy!5*hr^c#x^(w1%+>P-BS zZoeJ9>NyP6A9ujFE%xm0Dgn>x@Rb-83+@{-hqzCoC)7ba;5j*xKIu<(rmINP>X%%$ zs6iatthfpMO|e9?RLB0EQ{%5K#e#o_TL1ae+i+2sleN)U7qTziNOB2@krW6@!e!;+ zuvkB9*m4;o$as-2k*PJy?}}9E7Sc;1=f>kne;KbJl(CCu6(A|)_sqt}?&q!!lX(UbzV#kmXajNl-Mk$g5|UCo|a{dv74tFiY!g$|iGFnU+2r zlV{gOp^n3gBh_2mjzaTGF%uOuIriEMflC=}+q>hArSQ1)bdnhA_~>dD9jaHYgMzod ziK;Zwa}w#ue(lyif!;h@x=*&KTk>P&f*bq_TDh53I(KxqUYu$ z^ODJ?EGAt^F#zVr=ji>>A@A6w2HG_Ckmcyg3zYtFIc+75)aIi@ag6oQS*cOmJ7wg3 zCSB8YiQ@t=554y6m0r)qT?N)(@qL65IGjXmp0WH&6?SX_-By7A?QlzVH)`)V?31F4B;R{UzwPanMC1;CIZ#wFrJY6V27rbpWO%*m=hl!E?3ALZEpT<0;8f%`v$p^c zMJ{d5ztOC;i(>XGpy}iqbMNau&8Vmiigu+a$o2l$F6`+X z>ALkF`T}*}l#{B4#2rwn$9X^(c6~+oles3{i|$yV0CWm{KTM86Xvd2gKR+Tf>s3rM zuDiXTytbqBN!l8D<1hUgHjdqzR_BIIxpe=6fAp4HnU;9SZnbVHp}jCjy&pahk=0$g zJ-^J&OcN&pRzMh|)`0}Zl0C?nzb-UNyBauxH$XS+d zlMn5>?o);<)5c25%0YQLKWIZtq4F#?dX%Fj(OE+uzJ*$Le#*CL!fCQ+nSOL-`_p*G z>^oXQRqGr1w~kN~*r3v?bKu)lDZ_38Dw9qUo2`^tWXlg-m=1cH*sQvPq10Nr)AK}z z8E-xR?T_l9F^l>%NVkq^U-;pb?fGa}m2Z~Tpgk!z)MnT0JDVWV?;aOcFE>z*o7MgF zLh|&-Dc$@1Cztjo`8EQ75t#iQ<@eU05&g!aRx_T!bP+$)hy(C#Y}2Z94h(+m?reQ}U%%yTlHg28c$Cz~Bh7mG4(un^vzbFZmG zC{>S4*6)P;8}<6HPxU|ppiM)bFWtImVGwRW0NT_OuV3V%Z9z3ULof^^n=K?U#ziz7{2E@4-I*C`m3n%@7EH(2k_7audDw99-0~8 zq5ls~sJD~wTF8a>P8D}8f!`Ly0;+xl;00g$OzzStgaWjhMqh?BNycn*=1-rsulI=Q z$hp$Qnqr^fUhpJ)^+bJPq&MW^`9A_cN%_ZfPsN_mggXYH&FXPrr{}ZLCqbN*0u3U>z6~|;ir=XN6&NA za~}cXVvue$P@wLhyZKf;V+T9qiO0!7@62KI9^GvqZAP(z!mLZx;6p-^Pe9|mN*QvO zoy%S*N{2u7-ge0!Em6;8o_NyoN-q>P(l1+j6h&h&dY59%gbB$c`6?;q?O};b=azW- zy9uT)hy9PY`#obgP^{8uS}vrzUo~tg-$ex05_B z0qX@HJCFPVAj3h7oVE|5f!DIxjBKIwrNensxI9bD=uM!<^(FY8?I)@Nx3$H|& zM%Xhe;LBBSc5i9cT8E^|Bxx{2wbQ9mFfFnz=sx^P3?Pz`g_4~SK2_|}r>~pq5D3|p zDqBgznG^exx3gANE~lR&nL>5rgf*q_&>rl2dUK8K!TWYSTa#YWWypmkDCJvFw2hZ~@R z!Y-W(aWyc~1R88!@EFZi2OJ|as?zr2R*M17nkLmFYk$|ZNNmE-3s|Ic?h92CO4&+( zyesr%XZvZ0iO$|n_LBF#cK~f35W8vp1D_fSes5<&X4K+CQ>;SL6Sq_u>1;C}--w06 z7;rPo`wyHw!=5{CZ4t~hoY~qFIKHzoP~q9RfvNz9l5UHU zwwYQq%_2b5zuj({jo~vF_k~QCzijD}LV!J@HcJuhYcJ^x$JQQG_>IFW*RFPfY6o%e zGm3=jCFN^MRICUy>EbF>Jb#5`&D)lbeiDX1XZB1T8+p_uQP;X?a4Ma|87738XfTl$ zAreLIBc!1~!#E@{>)X)!e)3b#L|(>Mh^Nd1#NC$I^&;}R(<`&Jq15s=^omsR+qQf4 zMu)RMtfeEL9jxJ>hG!P~;mYZ`=aihX^H}YX9@;dL?_0rG2;zz~qVqAzdk=+|>|LD- zV{mi0zC8pmwIZp7xcv{f3CVd%GJA1nP!A4Gt4Z$LZ~8M?N1nKQCRt8$fO&HCCp}k> z0=Yn0FC2^@A5p{;PLB5NH~!L4tl4_kigdFfM!01Y+neSxT!>e>5PR+|vFHTI8b1dZ zae00BC1H?+@ z$p%==5vI>78)9a~MV!W92jB0uCu&w#xYb+r>(SsD^NeH&SoW}(ER=N}8Dw?Ad-P&P zYSk=8SMvxgskNIqx1@8kR*dmE&5L?!fZe-qU{|&Fm}Vu!+`S%WGXvE#IR~)h3sw-P z>7+vARkJYzpYFJMof;i#`tTMG*D8a4euw0b<__)L5%jAQ#)ZQSk_rhCiph{joK4?S zw{2AGQ)KO_>aq$0t*H`i)c&#jGw*#R?v1RE-sG1q-CdU!d#(baGNJ9Iv?P5}XHnvP zT;ch=@6Uwzr?qDjD4P&_ z)!s z$5{DiSKLpqnAW;KYX75EM^8RV@XG-EAeF9s?w+Yq2`pUpq`>8Vg7Mx6kSNbkuiD2GPNn8q-m13kYyJJrikVQ0H$fr-{1 zVxJ=EOMkW=I~9mzFuKwHJfb+C=l0@u|C<71323{!d65Ql8L*MUHg&p#>i&IBf!S@m zds+T_k4<~2+?AL3Ys)2S!?wx7%rLaq+P!@nchv}4&JoF6;pK8^Qmop$*GRH9j3#$J zirU?Kz-JaH7bn&ZRi{?-KC&kGE7)*zTK||ybR~d3KFDz|4_I_u*^DYaQo;C5(70)Yk3TSAzo|OgKtxt1Uj=b9sG|%EFB^*MRTOD7{V%lkf zs~bULAx<+Q-Ik3eg>59;wLMiyM6q(F`}a#-d}AzdsdG05Jr}zdrhOeec%F zKx3?OWs5-fX#AC(gAG`L4)pe#(^|LhUl%vM_4&bJtX0{$aJ1mXwr%twyY~A?#p#6k zVuF@f0d}=R@Z#>E$Sv}Sqx`Gws{#;tiGK=1cOnQslY zR;AkRs&P72n?iwyFiZcjTH2jOr+T><$px0EKllm0jo5y_8p$e&dsqOMF?DZf8zge?PTfC5OBx_iU@GW-JVW3;Olw>?Eg`BRd&UA#d!(ND>M&NyWJ^t1p z6kl#(>k8S%VBmTIGkT=M4F4`v%L(KHNu8J`9&#$EJ^0J4UR3UO&r|{J?9J2fu}oS} z<>oFe1D{&Fxx{9!Csql(cP8vb9j}5B>PQGQ+SX9UJZqb%${@2sfWEFnm+@4hGh#^I ztlD9k6$>N%Lpxzc#J=_CwQ)%-Kz=eDkBfEKBoAJ;NJnUiT@%-q^Rs?={zd>J?{~Ls z9-i*}=ZQ0atZflgK+CFi!H z(Cp4XU3%}-(siF%qM-Kn(e#!wh_@fkT*%Z3ZszLY-`FGP?>B~4Se>lLgu3!gUK8SD z706Hs6WgI=+|L9gFFinDd09$SYh?2o;FF})tR^1wV?N@#@Q`kw2OpAPVN>%eb3Wt5 zZO7I|n!Q~)3oLj+#qrd25)qRiLE{p4PcCmYOG$+!BK&9OQ@h3OH1+N^JA7vEb;fpR z;>A%2d!ZqFmIl0-f??=2`$TShD`*$EqeFG;prL7Xyn!F{UX#PGB|bT*=(OfU?Bf*n z+2O;a7~>r?Jad?5^$fvZ7y$h~9!Hl=qc(mWH!g-q21d)+rX;iq6K>$hUYd z9nGuw6>%A@e$1oHREEx-_{K?}CfXI~5CKB;n~r>ny%B@a6m*k(9arzG6wIh=0;I7kHQ2ux9Rj8c$Mqf@WW}TD(PnJncq|SXXR#nESPPR^TKy>}iT5yjpctsGU?IQ0-Z3nZk07NkVHRqSZ=^cFA@1V0L3o zjOv{aOpW}m-$aL0D4Vd#koQm4b3xOM4vq1?Gi;Q5pez{QGzWRS(8a+87F765u&-&=3D4LTjUQk(h7tP$&r)*Qh zS<~~r(-hDaO8Kd+znlBo_LCALIBhj6^Tv6xMXnLp6+hlo#!ZKN-YK^&j0iR&fKeAtOBBsWGt1_EPJkyP&I|KT(K_nwp27ZU$YtaI#=a)d0((5M|y>AA%9}r zmBcjlQfYgIAxvLA8BbX)U8f#vX$+V+5upa>L5Fa6#>vMsXjY=gwCZl_>ZOQ*q^)Yb z@VQAKU{YKB1G7)&P2ttTVa(6R!8?MsC|zoSx~5NwKX-?@q;k6LmuG@#Uwi0MFvY=d zWoJa%Q)qV<lyNlv~k2(7L&AT_GR61X9g7SsQ{x{j$CwW z+>}2wKCLH7ilHC`Y#ORb?=NHFxBgzVsCP4;qZO=-Gkawdo_Tj@)rz0hx~bk+Xn(>l z1ZqVWQWs)NEF9%1q+}vE%2$Ql+I1qv4T(JavS?e$lqa;kc|$%o(qnDH9uRqdCw$OT z2v)h-@Id&^dCdg#X0aI@bX=l?0)j%MW5Y>7%cD|xyQM)$ zFU0rJCY1-Qa;q)=)fbOqvxABKW)%x#+uTn-M+T1KnAnU8cHxTIJ|pu#!uq+f4+g5H zcHHr6&0mAy+~)lq%lFZ0p(L_AV^vmMV-TmayshT}F5KFOK+sHaDn3K+=OPs*s0p(& zH&~cE=s4hB7aljH44|is=reRhK%RqyL?=b~{iM(!gSm>!JyY+Ik}|E^`3225pQgp!VfKGgvbuFkwm(;b5xZ~wm0LJ8Yu1=KSrNk1L8#G? zUxtPGSl{O(UaCz5(4$(M&jFnMh#wQ!k~D?c!DOu!CK$!G2#%uepOdIU=}+G8_U*s% z5WWfg^7nxKuRi@ar2>$AGf;-;6&Im?qO=7ak}LlJ6aMA$CKR0#xkk8nO5jB9|5xYy zr~kuw0pLqi10)y0vLbkmUx=OnvhI7^Pg5KV4bZmV4kZED)l+Bb0xc15uN&v^okDUA zVd$GeTxWX=_gkEpYXB_VDWdDTN6MAv6x{as7kBa}xc|2FM>Yp)ekOy_=GY0&&~fP>zy6nl_5z<{%R>

`VkF){-AdR9t*# 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 literal 0 HcmV?d00001 diff --git a/docs/zh/08-operation/pic/backup-11-restore-list.png b/docs/zh/08-operation/pic/backup-11-restore-list.png new file mode 100644 index 0000000000000000000000000000000000000000..ca1f1b45d59e9c391a040940009d1d273e1fd719 GIT binary patch literal 57904 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 Zm&uo_U(&_)53zpw_l)mW{{ArHe*w;qCdL2& literal 0 HcmV?d00001 From 9866b9437d8b16b0de671afba3ef10b613e62bc8 Mon Sep 17 00:00:00 2001 From: 54liuyao <54liuyao@163.com> Date: Fri, 20 Dec 2024 11:27:29 +0800 Subject: [PATCH 26/30] try fix window com error --- source/libs/stream/inc/streamInt.h | 2 +- source/libs/stream/test/streamCheckPointTest.cpp | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/source/libs/stream/inc/streamInt.h b/source/libs/stream/inc/streamInt.h index 39a3804c59c0..41ac0117f362 100644 --- a/source/libs/stream/inc/streamInt.h +++ b/source/libs/stream/inc/streamInt.h @@ -114,7 +114,7 @@ typedef struct { int32_t sendCompleted; } STaskCheckpointReadyInfo; -typedef struct STaskTriggerSendInfo { +typedef struct { int64_t sendTs; int64_t recvTs; bool recved; diff --git a/source/libs/stream/test/streamCheckPointTest.cpp b/source/libs/stream/test/streamCheckPointTest.cpp index 8b15b33b2f30..781a205dc728 100644 --- a/source/libs/stream/test/streamCheckPointTest.cpp +++ b/source/libs/stream/test/streamCheckPointTest.cpp @@ -155,7 +155,11 @@ TEST(StreamTaskAlreadySendTriggerTest, AlreadySendTrigger) { int64_t sendingCheckpointId = 123; TSKEY ts = taosGetTimestampMs(); - STaskTriggerSendInfo triggerInfo = {.sendTs = ts, .recved = false, .nodeId = downstreamNodeId }; + STaskTriggerSendInfo triggerInfo; + triggerInfo.sendTs = ts; + triggerInfo.recved = false; + triggerInfo.nodeId = downstreamNodeId; + taosArrayPush(pTask->chkInfo.pActiveInfo->pDispatchTriggerList, &triggerInfo); pTask->chkInfo.pActiveInfo->dispatchTrigger = true; @@ -194,7 +198,11 @@ TEST(ChkptTriggerRecvMonitorHelperTest, chkptTriggerRecvMonitorHelper) { int64_t sendingCheckpointId = 123; TSKEY ts = taosGetTimestampMs(); - STaskTriggerSendInfo triggerInfo = {.sendTs = ts, .recved = false, .nodeId = downstreamNodeId }; + STaskTriggerSendInfo triggerInfo; + triggerInfo.sendTs = ts; + triggerInfo.recved = false; + triggerInfo.nodeId = downstreamNodeId; + taosArrayPush(pTask->chkInfo.pActiveInfo->pDispatchTriggerList, &triggerInfo); pTask->chkInfo.pActiveInfo->dispatchTrigger = true; From 52127109478e93b95cc20d7cc0d51849146023be Mon Sep 17 00:00:00 2001 From: 54liuyao <54liuyao@163.com> Date: Fri, 20 Dec 2024 13:33:32 +0800 Subject: [PATCH 27/30] try fix window com error --- .../libs/stream/test/streamCheckPointTest.cpp | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/source/libs/stream/test/streamCheckPointTest.cpp b/source/libs/stream/test/streamCheckPointTest.cpp index 781a205dc728..218dfdb09031 100644 --- a/source/libs/stream/test/streamCheckPointTest.cpp +++ b/source/libs/stream/test/streamCheckPointTest.cpp @@ -5,7 +5,7 @@ TEST(streamCheckpointTest, StreamTaskProcessCheckpointTriggerRsp) { SStreamTask* pTask = NULL; int64_t uid = 1111111111111111; - SArray* array = taosArrayInit(4, sizeof(SStreamTask)); + SArray* array = taosArrayInit(4, POINTER_BYTES); int32_t code = tNewStreamTask(uid, TASK_LEVEL__SINK, NULL, false, 0, 0, array, false, 1, &pTask); ASSERT_EQ(code, TSDB_CODE_SUCCESS); @@ -35,12 +35,13 @@ TEST(streamCheckpointTest, StreamTaskProcessCheckpointTriggerRsp) { ASSERT_EQ(code, TSDB_CODE_SUCCESS); tFreeStreamTask(pTask); + taosArrayDestroy(array); } TEST(streamCheckpointTest, StreamTaskSetFailedCheckpointId) { SStreamTask* pTask = NULL; int64_t uid = 1111111111111111; - SArray* array = taosArrayInit(4, sizeof(SStreamTask)); + SArray* array = taosArrayInit(4, POINTER_BYTES); int32_t code = tNewStreamTask(uid, TASK_LEVEL__SINK, NULL, false, 0, 0, array, false, 1, &pTask); ASSERT_EQ(code, TSDB_CODE_SUCCESS); @@ -62,12 +63,14 @@ TEST(streamCheckpointTest, StreamTaskSetFailedCheckpointId) { streamTaskSetFailedCheckpointId(pTask, pInfo->failedId - 1); ASSERT_EQ(pInfo->failedId, failedCheckpointId); tFreeStreamTask(pTask); + taosArrayDestroy(array); } TEST(UploadCheckpointDataTest, UploadSuccess) { + streamMetaInit(); SStreamTask* pTask = NULL; int64_t uid = 1111111111111111; - SArray* array = taosArrayInit(4, sizeof(SStreamTask)); + SArray* array = taosArrayInit(4, POINTER_BYTES); int32_t code = tNewStreamTask(uid, TASK_LEVEL__SINK, NULL, false, 0, 0, array, false, 1, &pTask); ASSERT_EQ(code, TSDB_CODE_SUCCESS); @@ -96,12 +99,16 @@ TEST(UploadCheckpointDataTest, UploadSuccess) { int32_t result = uploadCheckpointData(pTask, checkpointId, dbRefId, type); EXPECT_EQ(result, TSDB_CODE_SUCCESS) << "uploadCheckpointData should return 0 on success"; + tFreeStreamTask(pTask); + taosRemoveDir(path); + streamStateClose(pState, true); + taosArrayDestroy(array); } TEST(UploadCheckpointDataTest, UploadDisabled) { SStreamTask* pTask = NULL; int64_t uid = 2222222222222; - SArray* array = taosArrayInit(4, sizeof(SStreamTask)); + SArray* array = taosArrayInit(4, POINTER_BYTES); int32_t code = tNewStreamTask(uid, TASK_LEVEL__SINK, NULL, false, 0, 0, array, false, 1, &pTask); ASSERT_EQ(code, TSDB_CODE_SUCCESS); @@ -131,12 +138,16 @@ TEST(UploadCheckpointDataTest, UploadDisabled) { int32_t result = uploadCheckpointData(pTask, checkpointId, dbRefId, type); EXPECT_NE(result, TSDB_CODE_SUCCESS) << "uploadCheckpointData should return 0 when backup type is disabled"; + + streamStateClose(pState, true); + tFreeStreamTask(pTask); + taosArrayDestroy(array); } TEST(StreamTaskAlreadySendTriggerTest, AlreadySendTrigger) { SStreamTask* pTask = NULL; int64_t uid = 2222222222222; - SArray* array = taosArrayInit(4, sizeof(SStreamTask)); + SArray* array = taosArrayInit(4, POINTER_BYTES); int32_t code = tNewStreamTask(uid, TASK_LEVEL__SINK, NULL, false, 0, 0, array, false, 1, &pTask); ASSERT_EQ(code, TSDB_CODE_SUCCESS); @@ -167,13 +178,14 @@ TEST(StreamTaskAlreadySendTriggerTest, AlreadySendTrigger) { EXPECT_TRUE(result) << "The trigger message should have been sent to the downstream node"; - taosArrayDestroy(pTask->chkInfo.pActiveInfo->pDispatchTriggerList); + tFreeStreamTask(pTask); + taosArrayDestroy(array); } TEST(ChkptTriggerRecvMonitorHelperTest, chkptTriggerRecvMonitorHelper) { SStreamTask* pTask = NULL; int64_t uid = 2222222222222; - SArray* array = taosArrayInit(4, sizeof(SStreamTask)); + SArray* array = taosArrayInit(4, POINTER_BYTES); int32_t code = tNewStreamTask(uid, TASK_LEVEL__SINK, NULL, false, 0, 0, array, false, 1, &pTask); ASSERT_EQ(code, TSDB_CODE_SUCCESS); @@ -215,4 +227,7 @@ TEST(ChkptTriggerRecvMonitorHelperTest, chkptTriggerRecvMonitorHelper) { pTask->pMeta->fatalInfo.code = TSDB_CODE_FAILED; streamSetFatalError(pTask->pMeta, code, __func__, __LINE__); + tFreeStreamTask(pTask); + taosArrayDestroy(array); + taosArrayDestroy(array1); } From 89dc02012b14df20b71ffa0bc5115cbf9a9ed7c1 Mon Sep 17 00:00:00 2001 From: 54liuyao <54liuyao@163.com> Date: Fri, 20 Dec 2024 14:23:04 +0800 Subject: [PATCH 28/30] try fix window com error --- .../libs/stream/test/streamCheckPointTest.cpp | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/source/libs/stream/test/streamCheckPointTest.cpp b/source/libs/stream/test/streamCheckPointTest.cpp index 218dfdb09031..80dd3ec1421a 100644 --- a/source/libs/stream/test/streamCheckPointTest.cpp +++ b/source/libs/stream/test/streamCheckPointTest.cpp @@ -2,6 +2,31 @@ #include "tstream.h" #include "streamInt.h" +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wwrite-strings" +#pragma GCC diagnostic ignored "-Wunused-function" +#pragma GCC diagnostic ignored "-Wunused-variable" +#pragma GCC diagnostic ignored "-Wsign-compare" +#pragma GCC diagnostic ignored "-Wsign-compare" +#pragma GCC diagnostic ignored "-Wformat" +#pragma GCC diagnostic ignored "-Wint-to-pointer-cast" +#pragma GCC diagnostic ignored "-Wpointer-arith" + +void initTaskLock(SStreamTask* pTask) { + TdThreadMutexAttr attr = {0}; + int32_t code = taosThreadMutexAttrInit(&attr); + ASSERT_EQ(code, TSDB_CODE_SUCCESS); + + code = taosThreadMutexAttrSetType(&attr, PTHREAD_MUTEX_RECURSIVE); + ASSERT_EQ(code, TSDB_CODE_SUCCESS); + + code = taosThreadMutexInit(&pTask->lock, &attr); + ASSERT_EQ(code, TSDB_CODE_SUCCESS); + + code = taosThreadMutexAttrDestroy(&attr); + ASSERT_EQ(code, TSDB_CODE_SUCCESS); +} + TEST(streamCheckpointTest, StreamTaskProcessCheckpointTriggerRsp) { SStreamTask* pTask = NULL; int64_t uid = 1111111111111111; @@ -10,6 +35,8 @@ TEST(streamCheckpointTest, StreamTaskProcessCheckpointTriggerRsp) { false, 1, &pTask); ASSERT_EQ(code, TSDB_CODE_SUCCESS); + initTaskLock(pTask); + code = streamTaskCreateActiveChkptInfo(&pTask->chkInfo.pActiveInfo); ASSERT_EQ(code, TSDB_CODE_SUCCESS); @@ -46,6 +73,8 @@ TEST(streamCheckpointTest, StreamTaskSetFailedCheckpointId) { false, 1, &pTask); ASSERT_EQ(code, TSDB_CODE_SUCCESS); + initTaskLock(pTask); + code = streamTaskCreateActiveChkptInfo(&pTask->chkInfo.pActiveInfo); ASSERT_EQ(code, TSDB_CODE_SUCCESS); @@ -75,6 +104,8 @@ TEST(UploadCheckpointDataTest, UploadSuccess) { false, 1, &pTask); ASSERT_EQ(code, TSDB_CODE_SUCCESS); + initTaskLock(pTask); + code = streamTaskCreateActiveChkptInfo(&pTask->chkInfo.pActiveInfo); ASSERT_EQ(code, TSDB_CODE_SUCCESS); @@ -113,6 +144,8 @@ TEST(UploadCheckpointDataTest, UploadDisabled) { false, 1, &pTask); ASSERT_EQ(code, TSDB_CODE_SUCCESS); + initTaskLock(pTask); + code = streamTaskCreateActiveChkptInfo(&pTask->chkInfo.pActiveInfo); ASSERT_EQ(code, TSDB_CODE_SUCCESS); @@ -152,6 +185,8 @@ TEST(StreamTaskAlreadySendTriggerTest, AlreadySendTrigger) { false, 1, &pTask); ASSERT_EQ(code, TSDB_CODE_SUCCESS); + initTaskLock(pTask); + code = streamTaskCreateActiveChkptInfo(&pTask->chkInfo.pActiveInfo); ASSERT_EQ(code, TSDB_CODE_SUCCESS); @@ -190,6 +225,8 @@ TEST(ChkptTriggerRecvMonitorHelperTest, chkptTriggerRecvMonitorHelper) { false, 1, &pTask); ASSERT_EQ(code, TSDB_CODE_SUCCESS); + initTaskLock(pTask); + const char *path = "/tmp/backend5/stream"; code = streamMetaOpen((path), NULL, NULL, NULL, 0, 0, NULL, &pTask->pMeta); ASSERT_EQ(code, TSDB_CODE_SUCCESS); From 4224616e8af94fb5498fdcb40c81e7704b4880b8 Mon Sep 17 00:00:00 2001 From: dapan1121 Date: Fri, 20 Dec 2024 15:12:34 +0800 Subject: [PATCH 29/30] fix: fetch last ack invalid write issue --- source/libs/qworker/src/qworker.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/source/libs/qworker/src/qworker.c b/source/libs/qworker/src/qworker.c index aae07c75127a..4a9eea66e23d 100644 --- a/source/libs/qworker/src/qworker.c +++ b/source/libs/qworker/src/qworker.c @@ -1049,12 +1049,16 @@ int32_t qwProcessFetch(QW_FPARAMS_DEF, SQWMsg *qwMsg) { if (code || rsp) { bool rsped = false; + + ctx = NULL; + (void)qwAcquireTaskCtx(QW_FPARAMS(), &ctx); + if (ctx) { qwDbgSimulateRedirect(qwMsg, ctx, &rsped); qwDbgSimulateDead(QW_FPARAMS(), ctx, &rsped); } - if (!rsped) { + if (!rsped && ctx) { code = qwBuildAndSendFetchRsp(ctx, qwMsg->msgType + 1, &qwMsg->connInfo, rsp, dataLen, code); if (TSDB_CODE_SUCCESS != code) { QW_TASK_ELOG("fetch rsp send fail, msgType:%s, handle:%p, code:%x - %s, dataLen:%d", @@ -1067,6 +1071,8 @@ int32_t qwProcessFetch(QW_FPARAMS_DEF, SQWMsg *qwMsg) { qwFreeFetchRsp(rsp); rsp = NULL; } + + qwReleaseTaskCtx(mgmt, ctx); } else { // qwQuickRspFetchReq(QW_FPARAMS(), ctx, qwMsg, code); } From ade880d5e00041e21a38d865bab73dd95ba212ac Mon Sep 17 00:00:00 2001 From: Shengliang Guan Date: Fri, 20 Dec 2024 18:13:24 +0800 Subject: [PATCH 30/30] merge: set git tags --- cmake/taosadapter_CMakeLists.txt.in | 2 +- cmake/taostools_CMakeLists.txt.in | 2 +- cmake/taosws_CMakeLists.txt.in | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/taosadapter_CMakeLists.txt.in b/cmake/taosadapter_CMakeLists.txt.in index ef6ed4af1d11..13826a1a7487 100644 --- a/cmake/taosadapter_CMakeLists.txt.in +++ b/cmake/taosadapter_CMakeLists.txt.in @@ -2,7 +2,7 @@ # taosadapter ExternalProject_Add(taosadapter GIT_REPOSITORY https://github.com/taosdata/taosadapter.git - GIT_TAG 3.0 + GIT_TAG main SOURCE_DIR "${TD_SOURCE_DIR}/tools/taosadapter" BINARY_DIR "" #BUILD_IN_SOURCE TRUE diff --git a/cmake/taostools_CMakeLists.txt.in b/cmake/taostools_CMakeLists.txt.in index 9a6a5329ae3a..9bbda8309fcb 100644 --- a/cmake/taostools_CMakeLists.txt.in +++ b/cmake/taostools_CMakeLists.txt.in @@ -2,7 +2,7 @@ # taos-tools ExternalProject_Add(taos-tools GIT_REPOSITORY https://github.com/taosdata/taos-tools.git - GIT_TAG 3.0 + GIT_TAG main SOURCE_DIR "${TD_SOURCE_DIR}/tools/taos-tools" BINARY_DIR "" #BUILD_IN_SOURCE TRUE diff --git a/cmake/taosws_CMakeLists.txt.in b/cmake/taosws_CMakeLists.txt.in index 17446d184db5..b013d4591198 100644 --- a/cmake/taosws_CMakeLists.txt.in +++ b/cmake/taosws_CMakeLists.txt.in @@ -2,7 +2,7 @@ # taosws-rs ExternalProject_Add(taosws-rs GIT_REPOSITORY https://github.com/taosdata/taos-connector-rust.git - GIT_TAG 3.0 + GIT_TAG main SOURCE_DIR "${TD_SOURCE_DIR}/tools/taosws-rs" BINARY_DIR "" #BUILD_IN_SOURCE TRUE

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ⓈY$R2# zo)AF-$M9zXVZ3gb#tSpT`G1Bq5(LZ!PS{Z1{+gQ|!x?l=)KiHJgi5%JsYOk&`kU%guA9Cv{6|iCQFAqJ!L4>ri1QyC!S5DZ*n{ zH`@cqC{7OHC%i`X)CYWZ+nytdONa$;Tri2`rt;WV=c!UGSR2!YH_AMFP(6W?=2`t8 z!sR3H)uis(a~Jz z)0{1G`e2wXZT<;HrpmVPf^l7zkjz2%DN?)>9_t-LB{v+R$Tf-%@z1b%l<+3n3)g2mFXSk6Ci zo_pZtQhQJOn<1Qg&M#3Jce?g`l%t35Nur9g%nRZ1qUfWiPrkTqaXz_v89Y{zy3@My zqDf+9uq?Fx-IpqF%ul0x~w#aV3G;~AUj5FCvJySGj_M&Y?HlHL%1JMP~^Vo8s|ztUsNwk z`f+cK6Vx1~9Wk)0KWb+rLR0Bji6PkLsi)hjbTi#Gv9R#7*J6E4gn#LNFdI;Jd9s$r z8{jQ@T4g#GKC-jwC#=3dp>@>E-cKMLBmuXTYy2KSsMrL{Pndq+Bz)ugYm*_59c`R< zOS=X5#My$D2uz*BT|Qu1F0>Kprv@# z9E%<+uzCC}pc&o3|0L_OQF!ic_D0AZ5^91fG#CrhrcaLI{W5l%0?uGsSDyV0-jHpr z>i16cQTBF@*$!8Sx^6*{_D9W;Qjc8W$J6`mW<`t&cL5aC1lBRw72aK_P>`=mV!B>V+E9(|Zgn&=C_nuVoDApYx9lbe5Ccm<8v!1#^(31#2 z+;*4b1|2KDV@O=g&iJ6wy#`p&xF=H@8i|$&l+&sb=w(|B0ueLRu;B{*y@CXEr+bB9 z(tVq_O8KVoqEG#Z0CijPz4gZ_xz#dWY*vN3`{lJotL~A$w}kV@WaQVQJ}Ls;&b{Pr zd#z9|t0?jy9wq#f=a?sg|2V_H zw7ZdvdxTk4-&f6uH%V0>)qK|B;f;Tugps9t@uFzE;);AIM2k==aj|E#BK?`^0MOTH$r(B7^q(%3e+LHsf^KB5sHPAEye zxp5KYl>rL>8Ed%u&kF}wbbelBB(Alpf&|~cwe9~&`pm+Q{KB5>-F-L648ZA5X!mRe zthIP?{?1?c&u5ZK>)dt^M6*ap!~Q4t;;-8e9|Mihm+PEpZ=e$?f6||TK;lgCh*AI7 zIDhwHjfNCBe(1xY{LPf|1Sm!O%`rmqM)D8H0pw3OU(5PurwN#oI~w{u8+nI)`uLm4 zp8=4c_jpha>qbi9-~yD|SyJJ;nfy`!`JJ|MGHwi-Bv bov9}{r0m$TvDdr>{E57ge4YPF`_umeNxb@b literal 0 HcmV?d00001 diff --git a/docs/zh/08-operation/pic/backup-02-form.png b/docs/zh/08-operation/pic/backup-02-form.png new file mode 100644 index 0000000000000000000000000000000000000000..3ccd81c8314dd1801b0561b5501bd00b6dfc0572 GIT binary patch literal 56704 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 b*ck^xImVa7pX}@$@lt)HrBwdFJmh}?kErG+ literal 0 HcmV?d00001 diff --git a/docs/zh/08-operation/pic/backup-04-view.png b/docs/zh/08-operation/pic/backup-04-view.png new file mode 100644 index 0000000000000000000000000000000000000000..7bfa6999060b406f5c2e949b638f8d769bf22fd0 GIT binary patch literal 108698 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 literal 0 HcmV?d00001 diff --git a/docs/zh/08-operation/pic/backup-05-edit.png b/docs/zh/08-operation/pic/backup-05-edit.png new file mode 100644 index 0000000000000000000000000000000000000000..5ff1204ad5d2bf885e57d00cbb4d77c428666a03 GIT binary patch literal 104993 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%0An;-zq-|E>>U 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 literal 0 HcmV?d00001 diff --git a/docs/zh/08-operation/pic/backup-06-copy.png b/docs/zh/08-operation/pic/backup-06-copy.png new file mode 100644 index 0000000000000000000000000000000000000000..2ec1ea68d0d591793d807ad7441a7d29212b08d6 GIT binary patch literal 121583 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 literal 0 HcmV?d00001 diff --git a/docs/zh/08-operation/pic/backup-07-del.png b/docs/zh/08-operation/pic/backup-07-del.png new file mode 100644 index 0000000000000000000000000000000000000000..e1cf4748bfdc0bdb3b89248abf677684c8cbe157 GIT binary patch literal 56800 zcmeFYcT`i`-ZhLMpdiHp96>--M5#8qbfhXEm;ebynv@WF4@E#gM2dyprI*l?&_O_Y zF9{?NKm?=&kdgqQygB#YbMN_{@tk|Uf8R0QKa#P>-fOS5SD(K*=Ze(RQDUp_MNd;j<+`4m^DBEt8!9S|$oK?$y-!o@ zU7MslNzhMyW#$0Nk_$?ES2%8 zQ|HP4qX!w)VP8C`^lUUtY(48;Qot7zIQW=u_&cXuw)M46S+G6Wd8%XdR+h@n+R*1g z6u;Kl*QMbd_E*79yZ9EqJ*DhAj` zg$G37XOaR-stxA}$H|iC?tWjkI$ud;lzx`#)lk>Rda7ExbFbg8`9CdZr($qR1no>( zKJRqAAb0$g>P8&hwj!+^75B??Pe0%tgKxUfX0&pg4Y|k4lt3df7yRNnb;(zmimN|D zs4Fh7)ADCsyGAWOCna@0rB&MHya}!3SMFgNp5VZHXU#%fw|Jf^vAzkt!^)-~{D@Dk z`)t*lpK%X=oIgRfqF1)s|{BkccX(Gww>BW2ocRF|4vCyk+ zja`Lt)FF%F!-80m*x^I#V*R77=??K4R3h6 z*2y$4Kd0&QtdSqj$Q#NrSN-eBe$GDQzSGgYz<1YGhHpx-QlG!3eA|M4{$6&NOX@w< zq#M1LnBMAi+_Svo`mi#|NVieh|Ea(BjSn@N#N3ycGHW7VJe5(ZSL3`MaI5b_bkD{Q zqpGCFbdzUJ{0i4w^7QT;UNO|Vz@J`~uCHD9)K}}^`jhwvpDeXpb0xImwZyeNwVOWP z)>zYgn473=tI466`LS6b@ zBG00(;3GEOcE7cc5Ity8_^FX87yZJk~sTS1<1V^n2VC z;K%Lv>5%U5!y$MtbyxkuXQm`NV>(Z|Sf;z-qTwYMgqSw3T15X;>rtbBzwujpr$p!D z1^orw?TSeF`Pm<@H8INl%H*(+uy{uD)1LebV;9C`#?Cx^@-V2{vHEtkVU!2QH(@NI z&}zicoonaHPWw`<@DE{sktz|8Fy4q0TqU9{vT6Lhw6RnIBo1yuN>na^cx#%SRS?FO z)f4#xOHuH2csCO7HLimZ9W3iFixt&n`Qn^oUfng>Fy&mMV0$|970ov@pWAL8lONL) zqt30)&LzAgD&OcctciSb%oy`A?IeSKg*U><(GzTvP0ANjpeqSkKl4krou%WQ3CHT2i7ovFpK zt{1jd$%uYebJ^LwWPeo_$0cqWEfVqg6nO zPN^g$kg1c7o;HzAfu-`CF~{gdEhf{8evftolE9NO73%Zh^WV3S=T_cMzQw-n(TMGC z>pm%b@_a4FNv%X}Cnwd)<^IL{fcuxVA=oqLZkuIwDe;y-)v3G2C6vzB6LtVu>#NgXv8pccC$PeAk4DDvjzTT_i=4 z_BhBKlAD;B7WdQTOJZR!5g7v^lN<+eT=;d$Ni@VfnnZHtnvbF zM)=mV->VF{~Z#W-vb*1_|J02JrFtrUB zLL#J)X$KSQm{oVsveuAL+N^7^58rYdD$1Bc02BtdO1vb-goN9{Jfv5*n}~D7L7_my zGSj_!zq-&7*Iy}P2zLy3S!R<`%ZSGq@zsJzD%du#`hf7X0BXAcZNLq9uW#0Ph-}mk z6Gj78%DQGsNJ%6o;@Mq~y>JqKGm5a*GE}FqeSPukTEtbB0v@Q}d*8HE)g{dl14Kc5 z3)eAz*clfT*lIP0t{%3HrJD*BJJldB?C1@;_wIbL7?{Ui?EB!JW0vD>CLC~oSAXBl zL71dFrO;<~wOQskam^gnnbR3z7G)L$t0usEajV|wP3-NE+ZoNe0Se;Dr%H<|1L}ue zF}fcz!wY~xodKdJmb-b2C9{~WS^buP%T=nSSMR=7rb~;XYE5-e6;P#7Y@(rZT`5h- zxNiqM9b(*GsWerUUih3@pP}_PS@9(O zvbvuG?dk7-3PEx-_Gixs-%72S&keo}l^B2Y?9-!XSQK=$l`chir|hcNKz~2-X;spJ z-161gk@t_PY~V^&K|_H*lItFk0&Q=VA7#2{cn!&u9nH-*#LupkLYYQ}G)AVNaDf(|zG#n*a73f;`RbmApt_FUUP-g;bWnzJa&lF%J& z#lQWNJK6FK0o+%;i0)bW_<@I?(QvtYIPm-fhnJQ)$Do}M&oxX`n21%^`w!v}v_`p^ z++w;nKK|lO_3qav$2JG=*qlra%8!372v~38n?}u114BcJ%jQ0nJ$=#d-+wO1@Na{g zS6LSs#f?pmpq$N<n6nj6*}_S_&Dx z-Q3))S4Q(5*bOUk^aJgr8hm%y@0J(F@ys;PL-EZ4u*k?r*FJo@g8BO1xob4^7vfgN z3L={Zr9ms|qHhW~Rk|#DmpuHf=aaw;z4(nAA*T%QA|r{XrWOhh*I@y} zt-%j$dadm-qWjB>Jjcnb?CiG#4tMR@Fn)CcA5s$qgbd3*@~MQ^n$G&{JR_Y+*xx^U znq9n0exQpY?|1Q%f>;g>-RS>n@@73_JbTJ`uxRoQs6-iFFY3M4R*8alMH5J~=69{S zV&aM1SaR&6)0qR%{gt4f8;v^~4f`ajja`i@Y$Fg^s}iJAXdUdE^1Q0pMukWNiQV@uP_%MCoZX5Dnrl00{e8 zwZ1+Xz1LdlxzY3`hMgflpN{@8f`vCh4o38ga6#RzANZkpIW!^6ufp%yLfn90AVE$J zf_};|>PHqas_hO_!7qrK%JfZ3yEjI_PtX?(;UJOu`FS_x_6OuD3%*Hw6S+eWN7MCw z^XNE6vA5urMAk8hYbVKQ|s<}EI9tua=HO4w~> z<>v#LuSs1`AAevxdum}Z?-W&AE0tU{givi!FKs(Y0OxmioWFbo1M4}mO%t=jKmWLb zdfXg+c9wYZ_FYUu$D6~s5z$upeO4n+Xy3YRa1(tK%kJdR+m*5WIu_R}Y#cq@s9C4f z8JG5AOj8SKy=ho!HUfX=u81oioK#x`CJ#RWqVERGvTK4IQapxRLPa`QE+7eHJhdCH zOj+T*1uyH*k(>tAwYAGq>ngt?5Qx!g+t}7`)9QbXR zN(W@vVFJ;IUS8ckSGSPh!DPp2-gT0bCpyeMEnueA2U*krCcpnJ?k6<}=jW1ncFMh0 z6}c&tFcOMWqYRat=3}DlhUF}5Q_dSQQ3yO^t7MT_W;*?#&?}`X{ z#tuOcrD5-Y#x3e#E@zD5U`XHInxsZHUDQQRYK7Ay#_g?k7TPfENhqpKmiYB@2`7>Y zSLR)S%y~9iF%=?AzOGamj$*%uJqKAP-_{u|UR~idGk2K$C7g@s9S%G`q=n)eyv2@_ zeNrKe8Ck(gt-&-$Ya&L~aYz_y_rrP_h%pw4DxhYC#y`Ags-R9vb zVA*Vi60<$yM(apRkV1gmml?9Ki!ZpPMNO!DOw_;oM_!_Ng6#5ud!luDz^hmJr`x6P zh(AB%oOESxtm9DTz@I}v*env$@(G^qk=<;lu$!%Z%yx>FpOQDS5Wx{Pp|GIM85E|8 zxq46K4jzV$X$c^E9m|$}jFY$`(f1b{Sg_EYtzczrNE`L3Ni>jP(|+r*BuyApGZ~Z*luIl>r5$X+s+6oW3R*B?fOZfEXQRor=o*jXdm%t?Y$8BQU0uEI zojjP=XkZySo8k;7R75ZK8EO;-8g*bL!AX=I>$YUX&qiPGH;)4tUEus)?H74@mrXcD zo%d^DB&U-n#CbZ#aje$2($fyE>8ts{EmKqUqKy`8)$~N(xC}YJ)uGzMP0WSkdr#c- z7no^gxN2sJF=GkN-W${WD3g71xm83=S^Y$rfHn;fa&;p*McZGar`Sqli-3oxP6v{q zc&D;UXmWFP@e~U0ul;>Dz~}UsRF{cDW_vPJkZJ>1msDcqR|A(0Sz5XO3dRMOi2gnX z;9%st0NNOFtl;h|ZV7Y8O{dDTbXR-h=-n}5#~PBOI|bg19#kRUjwsDSysF%U_PP^d z+C4I`+~g>JZJOC4EB!~4Ow1kv7jzS-;llwz2FY}1*Qe10JJuvp3R_~Dn?)#0+tM^6A zPC}{B&HIr8@@2dkQpF;{hJ9V~hZl{Jj&+a;8Q;-chUvESur)Yp#&xMbgP`CAX>tGY z^SLqC@b+Oa{YIh+Rvw4=jk%E6IO*v)#?X;|h_{nci{{~95bJlvxy(?uDU-!Y)HJn4 ziCc{*wM4=8n6APi+~E@nC<57xKiJ`TBy;*CDnvnQ#1y>gClU?!JgE2F&%%( z1C*lpcm)eENyT6JIKtOamh8J4z0eigkon2IhQA@;dM6iJ2M>ar9-PKB9264dY5oe- z%wf;_XT_o0Q1TqbgQZR1Q$cX69dEDI>8T*vpp&u8V-n5gE_6&!MhLu5=>(22~VdTRVuN;6{yy~MnGP@Pm?kg zwRNx2-&GESnmvy%=@=L+`MBPASO=4f%>XHJ<;_FCAa$GwH_exM0v84(O|oQE+b=WP zi@Y^%@Jde`-fAsrl@I*>MpaF;Uy+E3Qu}Tf-ay5DB*(H`9r780(h0fs$71ZOn05 z*rder^2a=Feg!e}5*5kAp&m2FRGNn_$pe`Vd`Ko7rcH&hP(-7~L9ygr|1kS9aT0U@ z8g>GFVpp9yLZ0X3@r2UsjAF^(K&;C@mTHMrX#759$ZwlB@UC3)E_HakMRSJu@RwzK zaSy?l&;hbw;T0PE`++;CP3lEqyX(aA+7f(Sa*PLf# zz2u0^)vag{A1>m~x@|UX85>*tc5a~Jm-&j#2A;#6!GUjZg-kX3JNT{88_Pq>8Z`*z z=9k<)7uIy*$^cu-?t}EAOY(mexwne5?knCk_waas%MND1HNn|C`L+^>zG=>G zxVq_wnlM_6bjx{sd0KC;!Byanj^X-vt6<1b>lrltDc7e}WToKrs2dbk+@+(v4d`Fu z0B8rnhts9y5r~U#9%ts}s$PBIQ^6QtN?q;T(k!}Pg-ivq+42?9f+aRB-L$ISq|73a zWx!dXMbNK34*2%&K%(E)9AEn7nsmsTy{`Yls}#KlQp86Q zV2s4YQ7mk@S=f%aM1@#&*i<>|70fPgX!r7TwWPdm4WZEQtf#197o0-tg10M(|HZ*Y zSdzuJMVDifs+e_A%iMBRSiAKf)->M*aY+71c6mmf4t!|tF=gGsrfF@_omcbRH zltJZRwzBA~q&Wm#dOh*7Tn#n#8~c@q37@k?3siAEF}w+uJhaTzR93x zV7@-dADTMNVl_^ypwjrtFr-AiwW_w^u}pwGro~sy@ALG->QG^DrVzgk!VTkLF1`TK z9<W2w*swa{S9a?Byu3&RBXXqZQ#q5Xl2Z0ybiIcDJAHl^Go4f}&xzs* zEYCqBU4;ebFf(TLA(M(Y)zMZ2k7sZ^pbJ#!N`|5|yR=`781Fj}tebv)*A|0$tKdO* z$VA*`Z5BGDua*4^o*BJ?QeAck*w3bKdIJ59UOEweK?)!f4~8(*Ag z9W(;1(EY}v#zLvM?-iRL034usjQvZ96{gJeP;QazqLO!Ve31i_Ct`-R$#j>53!}=d zK*yU*jCd4uW+_ktT{yHEc$!9@`!rAh<@GtYSKWofprg5D(E-187GqFOxZ7fl`yZ#_ zBJ%{>F9C0J6@~Droann*(mUOf2!+0je?=sMZV!KnLocn@SODIby#xaYjQmj^>0#h! z(fY?-eh_f#$59DErPTTuy*@Z?rDR5}E?6FtlwzpIUoJL~0JHUs8)w|&%0lu);!@L$u3-gsg_okhEvI8XL$Y7hRq8VV*p zj==05lMLzLu=UE=gOVE}yOj+3<#=3* zdw%`-#b#DRSx!la5%@=Ou?)N_`j@kLi7YB_u%4Y^+O>91n&V%-6qJ_?nc%X6bV>Ps&y^it zpQ_H?467?q;cgHYttNdzED-TI1M=ztV(L%Ok{g7Xl0=VTWYYk*v~-=!kh7Azr1L}E z)KT#chp@{s*c3o;l60J$D}N#HEegiTOA@SSXMyuG6>Q$AXKFhlvGf9^rnLhrX-P?Q zv-MvZ+W^kGBP``c5aQAW$P=gd%DlYhm9vhbvjl8CC7Lj&^`E<6nu5|e)j_gvT=+{g z4-xu(ZefQ(iwoZbH&W`~t3)s#DrdYo40`M2fI~J;W7%+bN($p2PQ{PP^J`h=1n?0e zA1)>~)~v3|R7%?~ShnZ7cO52_NRXgE!YW7~>FxQsCez*`IGI6+5&-AMY>;C9^n-8a zrggr3?9dMZ(*R$%Nu5@E%L?DnbTJqz%P1sVqd8WmC(^Ok84||W)DZ0?VmI(JX+C2X zoSY4K6`Wmxns$PgJ%=pg?mirAk-BlC4KRV7&X!Hs{QUm?dkMoQklEw{h`6r^w9H_xnGLJxPIjtVA-Ag%YC-p?5@PXh% z2!E|4z00RmR3)1QcKfl~@;%h^sj|@-HMJ*)iN>-!QB35QO6e!wIpH-b;TK#LoPQ@f zN5@8I9#2sSGS{z!!sj_D7wq80GZ;1e(hDR@{pSX+ALxVz^;n*m@!}=&E@2@CP%zQk zv>Qq@e^@Q7tzc&2Fy54^jQ zp)Ef=Oab`K;Kh$rda(ziq(|r!^in@p9$P&7;dFP-LRcKKFt^k6RSHr@=RIkl#SR)L zCQ&-@tBR@aV+s7Dt?pCzGX(?2c01ERdmk=d*t`^ntcDQC_OwF5we75NwO2Ikm@pp0 zBVBBvn(||5sW*I&%VceVN3On)%ei@__z?|w05tbpbok1woTr)X*bu*VY9r@KKUrPIM3&Wv3%$Edaz0zvlPQGk zljV22L}w@p$mfW$B&5J^5Sw9}p4q5$+mC|)2q8UD*jR7~vR6$j$38a+ABgZv1hV7O z5`ogrJHN1ym+jcAVA@Qkl8l&lF%F-C2kX`yy_q7VcyyRCp0)Ou_|X%F~R;nhg)n zo~B!tkAR(<7YQ3qu-*0fr4wdQH_czpdUi$=FAWIcSqb8c>-yyVXYxe@#^mo&Vs(2X z_eaWD{l@}<3Pvb37*ft%hJkIgGLVX>co zkM-FLEALy3=C}ut7ovCy*-C3%b`Tgd3`XuL-R@@j{L)KI^B5>SW7w+}Nc(Ch%TK8T z%GuGF18^tc3L03bAD^~GVPmR?nJhw2z~83UkKR{bj>n6e%7ynu6AMRDks=dIi& zoyUFVC#%X^ZcJPeKkIzk2Vp&cw-D?Gm_~DRw;1V@6q<@{N z`jfu?aRTcCI8N`abhj9|o+X=ar%CeJ- zG-@#i$7MT2Bw>-q!URD^p$>;Rk}R!-5l?#{$%~_jsq)to1g1q%#fq z2?hacLM0C0mI@Gh!UjSf?d@XE-{F2dG|yy1BdZ&L^nQGbbH-`X?#Sm5422Zb$Ol$o z$(_Y=B0d%9c6Qbbh0Gj2Lwb0zTs|O-Uvzgb1{HJ~$nnD{&Y_)%m_vum=Z6o(g3Cmd z;a_UJouM>-*J_TDrjfqctV<|?t<$Cp8sb{HqXyTpgJ?+Zi>s!I>I;P^W0rnc;!nqqY_LKx!q^# zJva7yu*@eT>O4+87L$K13WZUNFxZ3lP1eKzC5OW`TIFjjc#9p1Q|j2#1q(v{b^m{g z%+q?**tdzn|9UE!^BOR5c^Ln`{4wVJ|NaIBOp&YoTBsi@{8d=~$9vN+C`!5HMBl)- z8-F7lx9+i1M0$KV)llpoFaOn8m5itO1D@@#UGdNO zDT1^?)3k~3-_^;)nWBZS9W!hl{cZ6E6vqSpg_tBq)Zf(!1HS&n12j#7q+wCh5Gmrxq5Uq+zBFb^gUcww%Vq$Dcz>D4$P7N9xpDmXZIB*gkE>^ z{h7*`8>O~lAzaUDdUP55k3ny8CiuBJsk=WNQr`MO>g=B?WT;N*wUUM2=YQ_r>x$PK zk!r69CJW|n_i`G9Ipv=)SbfjS&sPg)<`$%Q8WQ$vrA{TLmHyGjS$Bg!j_Mm%Sx2r< z*BP|6x96G4eyDxtmW;G*x}eZJOOWtAePxVs&i&l6<*jWHBm5t6u{Q8`tISY_t=fNj zYcBs{g|FR04O3opW3B4J+UJH`L17aI2qdrG6wx2}^I~LdY>WNlTD{*}JecJ+Yv%2Z z%@}bQNn2I*&6}_=O?!{DMwt@{O|jlYQQzfT%BL|au%#r&F?83TBNtFA6(I(U6KXs7 z)3V?~!*DB+om{?Z6d|h5y+LlYGc`>w$>q=5+j05F(wdb_P4tfNw5n*)ZhT(AkBE2x z^I_pHD(w!+l>O5nt+`EE1kk$ZT7wUudt&^{f zl;?NWO>0dB)x20;RgK9MO8^4Cwi~kjICvIe8KvA7AA(s z_dD!cAT@PXw#p_ z$R##*$8ysKo$w1+*A)h!IFzQfb?)xZk@l9-BH0qd@&t;+qX7WKHxF?&j?j3mVi8du z6zAK^$ZjIHto8DssT;}E+u@~IQCCH|1CzhdEinaiH+MIFNip5qPk$3riMVhci{TMA zMLwmd<04;lx!Bky?3(1v^)0tZuX3V|{0Q+I7g|Bm=`45PSr=Y zsO%RYAMH?745;b+_NH&&q9;0|QA@~(1W}Y#YzN|;hq5grqnHv0xpPdnur2Coj0O?* zdXTlI4_A0a4b<|wdqocPDdqrofjr-m6i-N3@re8T_jUqf;%SI`lhjK!KQz4My#`rk zQbtOx5Xfi-Mn+Rb2#Vs%8o75*xqQMf-6Uszg`%PI%Zus==R&1~&rLUYmtWv~ta0PU z4U<-mOja?|1~1Pu^RI(xJf?K67G)Q~Q5M0aVU6jz>2duQ}09BinmqhntS(%1jU zFWhg~3XM+z8ar56q&M55?F*&-cJFYEN?2* z@1WU`;_14@z70wOo4EaQK!?X8iJ*})52tI}?7 ztgRmfmV+z&1=l`zbaeJ6h=4-}$BK*Ac0F4NNbq_4P-~z6H2wc_Ws>o`7{VwaGFLhd z?4oEL`bH)q)dKmNjdXCJX@g@xnP_aBtdk~2vFz7*<8LLj^`YbrZF^t%wI0Dw7ilh0 z+7ZmM@##8@8PYcq@a=)0i_5nR0IE|ptZv!f|3{RVD<2dtrh$AnrS3d5UV#D$KXU48 z7qp!XT;?tsFYY-DcM%@WA|k=d^@_vA5Dv--kI2aLAY)&{Zb7UZ=P(dp*f*T5@(r}e zGpgviTlidb@?oMydw7p1ynnjNCh9$x}oZw`|sh8OY-kgo~}LarAY55ocNn(T5sc?a85Q?3WL>{v_3;Q zOV!kopM1x#+KwIzZ_t7-QR{a-pkX582(O+GA1oed(14w9Iec4hHTzWs4f>FKTV11E z^eZ8%;Z>(ksstIm)QVU}?wB?6>25QYvF8dXZ%VGfAG z^x64#_33RDdX_pc`KFLiU%=Eckz1xFG7en~Ak;Uahk>qXpFiJ0O}j<)n^!3E`0iU^ zlzm7Wa-wetxrE#%3qa-0ve>Yq+;icx3We;EAYU#AqomX?@x8%>ECQnDp7_n29H20{ zIH{?4QLpQqiPurbdFjCQ+NWt!UlD5f8sBON$}t`TL6>@x=$SZg85H0z)pC*kjHmwt zZvVIfUH^v)6-Ag4K_ea_x2iLd0!V2yjN=}ng&T_jVI}0bN(=*>4Khkhn8tdnyw}Cp zQw6+Mlddp%g?cAtxetQg9-id;Yof1D7JEu=2=4OkW+Zc44+r$6)ftOEJ|Ph(oGYX4P&yw-bwNf+sPi3FnBIqjG{Qnmnm1}s^T;t zh=pQ6$s$EKs@JYOuvQ84WWNKNctsI_!Op>}J(mS+min)XN-=pPQG~23SFY3&;L)yR z;tFR9vs^fmdrS$_M!MX^XYo;P#Nmn>G2Zj)X)|?6u0+R*QV?MA0!!mA(qGbElim ziEFhPu$cciNqA*t#gc7+h=AfGBqb}M3aZOxh*qNI&O*41=)bLM!RYH1+C@=AFe@JFrVV!VMLK-C3PNi&)+<*O7rLUE>oUUrgwm(` zsS~+JL6Eu9>P0u127MhH!`iJ!YC^BbYe!Y49y-P)RWtRvLWf@L8uZY+)AIbI0|yQh zBngEdK(keHxF!8~D%K~VW=q)h2E!g+W| z|ERBOwT_Ku@Ze?0P9*a?!cme>5H~^}e#HlV^gAvzV z3DHfh+quY7_=LnbyB-K^#YNa{`B`X(sgib?MF%Q~i4CP!bG#yMOlWU!Z`&Ln?qMbT z3LAF@8$|WWi_ot@Lhs=qpI_hkw>vKLdT-9OGQ5&a2rD1BDp9a?6((Zk4_HErVncw= zljIJyFk}aDi4EEH!H*f4jz~b>JLpd)@sp2yB}t`#1+R&^Fp=6>1SHW2yiVl&jwN>& zdqM{-VF6eF=sZOThmXy#SH?|*xTAe-mY(5e)9ICFgk`GmOalpgW^0ZXsnoQ%c`24lRr*@#I>bSOOKIyO9=#ys z^TETi7iy~Zb`P|QM)aJpNiR^*fcb<3j7A-gtVj<>{lEPtcu6ta`tT-VyeG0PtR{c7 z$-o6?1-4aMzX#uiO8I%kxPEo=@sTymPW_E{UeLYa)mh%0`9S!wtFLdJuyNH3to@2x zakvAz485edCumF0qH`&AbGIXMfwMI|UYH5WLUA^;k9L0h*4J@Q7e9qWPL;5@IBi9#aWi=zH{I-SuxVYqr|lm8oqOGC__$L z#^GnZ-ZDk-*r{>9mc8@)K0IHQPRfau|E^39rDy4_TXz>NohcGYhf4E7RV;Y^6;UXH zFG?kXZ^2^IKJcWE^52)=_YRp3xpXXd+x&LyI@h)v-V|X_;46L6&D4OA?6s+(fxE&? zu_0s)Fc{HNx}GT%6r>25hqi8ZLy5}Lu7Bdb%0gOgB5MBSArTcu)S0?(2eA1)OHV~S zKn|nT65rdc6q^?eEgwn_X~bTFm^M-%*XPd@y{2Qh2G4R4Y1_rmh8~lRMMaty%VsKR z>(M;E@57UzzD81{{e@WjZ|jtYhG`jh6dd^m}j8m%gduq&FoN9-9-Xk?M! ze=R&ZTxJ9om<^h3a+-(|YrgV8W0%M!?vR@%<*U4GYWkB{iEj9H{?`LPkA(!anFddH zzDkZ!5UbCR?&qXM?xA8?3NI~uz{w1=dOHY#0Mg*TNd*DMiUcOe&GeLn)unj^rmyX1 z3L~Jb>rpPZTyf>|A)Xn20Rar)4o+O)QBo?pIFUvuMdT-<7frkBoI|1TM=P!9H?KT0 z8AyQo@fZ|5o6sU2u3}=aPE#?*-R&%Of+k|qC~iq7?5%i^FGLCU4rmlRAsy3XAyUkh z@d*_J{-c$%M9x3+5+9X_3!%3emg@n$9 zulfE?Y}WvS!g~fwxEa@S^naq1)`=^%>v3qEP7o_>A(AZ9a8JBEOUn_D`KLKV zAK@hHBeg}<4zZ=Nol3KqeeC~n?&t$Wt z3l8l+3u5IRW*Dc)S1$2zIoO^DG@p=$a-3N$ju8=dmZGCTvCT%=Sz{aPS8qHnTzJ8i zf`x1}ZFo82yi)NXTEsvQ&LvF_225Cc{589CGmu24OuI{DisP5F<~{u%tD7R^%6@@) zi^w7y!0l(QvtaCOW4-<*%bZ1sE`CE{Ci5{$F{tJI38L^zRUr1G-LxC!;6YzJY^Yf3AS;3cTit=#RQ2m z0RRdB$h}Nal(bg6*vCvDgl+woRoCAK8TPpBR|D1)gQxA`>@08JhV{gq7x~Mc3Q0InB8`<&xQt zNvl)ZbQiA8iS{XPG{Hy?TnpDEGuIB8xTdcmyk|TM6sQ#P%Rd0{*y%R*V%&6nqC*ll8tGL(((fbOgJC;+mYlTM(550R{XC%weY8}(d2{3O`4kviA$Qv%rWN3G`savk&kD0ebg+R*yMJ~%kllL(VO2ffO~MOv>l9grp z5-vvM`J3u7-6zNNCNOJ8Puu>a4eSc@h*uMrgwtn=m%gw0m~1mSY$3YUU^L9-v(B|h z5x8@X6W!)o&loqof}mY;G@%!~C;NUqWA+boGoE`#a*sjP~rOkqzD}2KxFo zJ)?Qs+d}2FSq(a&xE_PskUcmc7_;AQdiv??w6yE@H=h&9@^?O@6Ubev6kI@@1b%gl zAHqxdKG62s#1qWMC}(JTD9U{!U;}OD42haHUGB5_H;WEcYGt&_x#54BnfV*?sNq_3G!ZqM&E}_?ZX#8mes?=?7blAJdW*MeEy_WGM8_S&(6BO%j^8cX8SEDOO9Ypon$ z91JZrTcteJ>7NrO-uQ0}t2>)&Q_c&DoSqM}UtDs7JMD$j`g3rxcY-P;U#=;-|BfWw=e%rG)AOdnMPIHx^Vrj36$-L*Y&rYYe}m$C@i9dqcXctd(p z5D=T3a3pEk9hD1l@vn}K=8`OG2PS_xvo@y`I=u+iwoC0InWn>tTl4rq=P2ZF$YN_o zL&m6gxgeobgPKLx)4%}JJcy1?8S)xlv;oY z_TbVLEj7Q7Plp+>HJ|5Nk@MnAgv%zsWHd=DNk9d_lXk-CCc#s`jMvHkJO1tl>0S65 z!8NmtTUq4Q)!(uDZCYj88ZW+J_wfe`&{ThWY5PC01645O`tbKS3F-UF;j3w7?12*E z5(L4|pL07!+(hCK(zdt)H3}4ytp&@fZI)G*`JqEbpTdU`4pZUnST2&YB@c+vQ{0e2 zI(+xpIgor~P{^Ph8$X*2hf_Wt`6Lr^VWj1Tj2_{Uk<>sDmo>;Xfv*iHxJBz@-2xdOMQEDO0g1m(kF&Y# zrlfs}(97dZ2!4u9p=McBe>MpZJw!!cKAuB{&uNd=5tgg(y|a^>wny~`7r<26hvv_R zB;w>4_e~&4mU40%<2C70VdIU(4c%qA%T?p61fKW$v-zzDMK)9Mb3Q)dsokuDIhjEX z6N<(qv*qJ7UukWx9arE^tYw6ZP*yG#^ZGzQrFZjnjS4^`^=?j8usPV-yxUGzmp)Yi z*35!#iZjRtv`)rjU}&f_Y5B@hS@~;!X2NqB6uXUkmOUPS4DR;|%&T?1SW~qmqByqF zq7}kuUAVm(Nbp&9>5V6GN(+AhA*)hzGwEyw94hm7QN96iePMqB)e`yXt- zQ!1YnfYa!#}M?w=DX>(A>?lw^1pduE6BDgI^ zk7-tqhfhp5$406);JUqA8Sr2n#Flf`CX7Mh`~+%+U+JB$P&L`;587(*O^wZaTfqfQ z^;4TN-LCT*-_vq7MzK^f48IrFM@GPd4fww%M^s|>&;+sFUl_C=0DraD;9KJDZSm>e z_fvc`^{1uWOb@DxWU(;i#6YCy@pt^TV)=C6N87i6nB|QBG)He5g&xE^FvSEXV;81(FAr<=wBhCuXken%}v& z9MZ|i1V{O=g_>5!cL0`2B!Q4fxX?2&a4No6 z+<*Kywo46sYB0FzaS|}|VXfLb(t$<67A{-vBmY@k;?nc!aG z|J)uHS@gq~eiLX13K2eRR3@G;%7^x2=Qdn?fZEGN3&YA(8{i{^8CsHg$6Ld?*>6nO zH6PDhHx^-2t$o+2bF7koNkvkJ9dl5e1jZy7r&tifG8m0|Bmzj^yHse~+N-NE zNSHBJhp`yo*Tj+i0#I0ZWmoLzmwik(h8`EyGBMqsPC;R??oHjziPaCyi;L8m~)hlD)tTWm|6h{ex<^{x}??d z+6}V!=VJQD&o%Zji#*-!yS}vhRf5?;RFyGKTdt}>aEM!IV$9R+Q)wxzH^|cn;?kq{ zG47}S;Fzr~%@VH8?EY0*PsQA?(Q2<>*~BIGJ%7ya7ot~xm8|87_)0Yllk!7;bIi^t z5bb7U;B3S{!>=A*gVY;eN;@UO8lXbf`2U%MU8KYR9(hXVu~cL6i>_PRds|(@RZ7O& z2`VK&`^$vMZ^CzxXSJha0q*c7Q#PXydbvYrFgH*%5OKYB)Qxce0UfwoGU+*hJXd;{ zYd0bE-L9L!G-!o>FYZTW$%QG!%@#O_Y!Fo!(+=%ykBOk0>j}Y5vOof(lRW9XHGbHC zX48CTkYGfAG>jckzOhNYY9mLX8_` zWGj1{G*{cV_ggz8dkBU2=&kYoZm51Dt^)MjS;&47iBw~;1WFeG6l*Hph6VxuPLEFw{T*g@XX1Ob}uv4EG{Z}>rx0(G-Op#~aJ%t$_@SFbB&=$5| zv;*K6k@2p^JgS|(rx<}}kRn&{dO9x;{dw4diV$ZFJL5lrHzuN#F03=C-5*oO6F zNFV7S2Xq{fnyO+PHt|fqz+1jY+=?y_k^aAIfd1Tt(-s6kB>BcY5&xkse~#KeTi%iY zjOPD;=5O!wPu=^Y_5aRzdVk4xG70@J@XCMn5&$pu1C%!UHWi~|V>Z(=aZV2(+73%l{u|5L;j?zMdUerh9EQ%D|7n0k81ak4OKNN7`5e9gOQs{_n5pQ- zbZm57=9OZ_Hz_+G&7H!V?O~GS)TjF)j5hP-{0$ESpZqfI{@ufM9hqIMv;!FFGV1>q4;lY){;}{omb*;vlC7qYAz_Y_;R0;- ztUY=Vuu%WEzyAlq$s`MaEU~9fKKMhlKXFfgX;nW2rjnXygyG*?i9dAd=iNTQW`pP+ zC;Z|@{mth2&;O|=3IHBoKePQ6fA%Y0@6Y)R;LARj_kA{C|IGmXdH-MYosspeiVl5; zLM$3tbzz}=pM#!t=P1(DiB->3EyS@3y4uI4 z0**KHS^snERKay1C6OV!-v5w{Y*!VahLQd#m$C-7z&wJ(S60>ZV*SbM^xj2A%{kW8 z)WDmAiaPztJ*3~gdpBE}bu(G(kTB`uvBsWqy1y`5IS;Sc9+!1>tv%kJ>Cm9vKB9a2 zw7V-x!&Zo1N-~sa4@3fYJc)O(1-qP#K&%JZT%ykxG)i-AvR)Bw9kb^ zscEJI1Q$YYO8~n#!I(xzf$mK+7j+C%b{XPqGg38TwA-gr3enKP0nw(qX0y$21WzCN zU3h}gPXs31riPRn7Kq&(LqS8iJN%l|h|rkV2HMp?sWQXTQo{n;?xi7hOGYp1*zLAq zLH2esa7#bx$>BB2Y^Gtk{mAM(?-L$Xh9o|5*-zv>e!GuIm!bOv8x&)gngx?z*HJay zKqT1E(2bmSn6TxP678-Mjgj^KowInU4HxYFlnvCCw8(hLBE?rW6$O*wj8Rfq8=egl z6K*V+R%ct=^H6h>GN1tDA^Etxt7AaKm=@gVw3Q30`m?;P?!a+@wD+u^1R5)XI77{i(KJGteRd<>Oq_6t#mLKia>cNkWR_#(Q zNH6@YJOo#A1kB^uykFf04S zSl#ooZ&gZ(Jd0t4Q;axj)|iF3?<0^*6o^j$s}A*QlUyNW z*vest&<{O=t^SB~sa2XV!RJOstM8O&&ndixE&{SM6!tIQkA~{A=v~4mj8;0A;Cjf5 zeRyV(`<(9<*nJPYDkXfAyE6w>AYgUpA04@f-JP!2YCzOebZ-pNWU37$->jzYJtmCp zBy2c$g6G`pAK19KI`NHNu@X9wDOq&vn|65PSFWO>5*h9Ay4Gob{KGf$tqb)(>I;Cy zMnv{*=*Q@QyP2vG6Mc1{_*vP+XeD>&e#xX|cg|xhHBvMOtdyeK+VQ(ZVy+!%km=(5 zLEjQL>{w}k4ouH&F~0o9S&y7n5Jf6gYLbt~6w$o!tIA!*NQ{=KOsg}VfG{j$dJmc7#7@6x=+^(M1Y zhuz_It{c7ETsiZ@ffv33ii_nD-B#Br8sh8sFZ+G%5i0gl8RX*rUO`_5O3-p3-C7wh za$#Me?=tSIPaj&NKy3IMofZ(^tg5Jt!SnTylBX0r&lZq-RXX_DRi$ER3#=9MhL{W| zXK#_tYf%cOC#DT<7T$;Z$OHO|?0t_8*gW*8&&plp$D<#s{0rCK$Gam^q2z*e6hJ;?dDYUXQ3t+r6) z;iQ1tKvn(G6S`no1B0|x%oJp>``(dW1TlM7_m`!X)hX~*);)mhLqYJU{0c6N>`_V9 zJjvre-4~_|B4CYZ@A*;4VW8WO@=f}CJHrusP_2fOGrg#soJ(-4nXR$v zFP_4nC<+3+Nuzn!{MCjvRugrF!3Ze<0gFy7V^y#`NLAWZ)u%lV6Jk|wsGei2QkLrH z>qmn|+pUUa$Q)i?V((EH3{XkD)NC@PN>}lp-)Iq4#LO@b9>Jm9b^ri$-oN-3eT&B>U10#3nhMCmzS^zciGsy(AWBb}IlEt_ zGrR#~&vZwiV9TXR1<6HsO(6)XsP&aoo)pLBrGj<$w|^aU2#Ws zJ&RVNdk4ex(k;iSd=02Yt&BQy88e`&ybiP&un`wl$7K+)oX0B~Pz6Bz0DscIH=}+6 z^GT%_Q*JIgsEV?*^L0o=Wgc}P2zMuIWEpv3bkMV%Xy{&@nCrg03meFlDp2q{7) z2_TXvI)i`&JU#MqfX#jKEurKz8>woX8Oo|ynER;Ue6dXwW|T0zgnn+B!hL^+&3f@x z$y;7Q!8iRz#yz=8*(XZlD#H+SH4yBovMzgIp-4~fVwSMsN8!*Dp%d6sE|PW|Y{?8|l){%OaK@)Ij#fak`y!MIdyw_w`U57nA(`}tdjTf|r78+e`J^OCZyZ(m`ewoS- zt|#ODmjw->rwzqh+U6mGPVZa?Ki+n2mrZT(>#3+e47SPDB-Vj2Cwhzxj~4=rWhQSz zF||P*B#_C97cQwRN9|t8Hj$A;oBdsRQRy7tDy%0MY@;60(5ftyfk3#!l@)5iN53h& zD*gLiliTaA^`jV?ZEHoI*ZgWV7biuY8ZA@FmPkb!DYLOHem2WyWfyor#|lNm#R=oP zm!>M;SWOqtdcep40G+6we0|EjiV!}Jm_;n=(Ff?t<4a5Bk zb@Pp?M3BysVq-a-(oLBN4ElN=yI9YkJ+ls4?@fNX+#YIkX55!VFMPRl zX4JhBuvfw@1ra=t*X&JVm-Rfgf`v=S#&mPTP734_U+5O-lyVcWXflO)Ts@i>yEtE_ zh(_CosWAmt6eDH^JoSVS7p%||E9U#$Gy5_p;dv8;{MwgL#X~srTp+E% zXogS-sR7OhAkS>8z-kziPjpI=_-hf4_Fa?&n(`%qRBwe5iQBU${FpkvAC*O-L5p0D z3wcj&8wz4-j#N~X+-MH16yM^J@u^DHY}(GV<}4-!>O)5o!p8FJW+A(gXy(x$7wtG) z7P-osQH}Foc-XmA`W3i(5VAN|^_N_3>=Ih7nloo$Iy6kH#U$Dt4TKKneMmrzN!Iu! znSpgta6M9ZhjHZU4(o9!m$xoQgWqh{g zO;FnWwyx_7c*E%dbh zjm~$KH`qH13$V-9fGD^kBxbhC3TBQ~XVL^Pri~j5U29amdG{{uN|{jul6M-X0G1pt z)L~^6K+->FdS;JM|E`g5cU#5WH_tbJO0z^WZP%`)g+^3$-c_N_?1Y5yoBUwo(RhvB ztbsY`YG&d3)y=9Nm=57+b;5PB;0F|JX(w9UP+RF+S{4S6j<;dOx^36bm{!TzM1L<^ zJD(Ob{$T$YQCd8V3Np8w1qckSj_9oXu}FWc9aZE_w2JE`Fhf1}DW2WO4Ek^ZKl?CM zieD;c1uC3v^10W2)^HT|5RZ6i?V$ebMv7KQNVmY&DK9w|;MU>wh6t834@^+HT>FKP z+zX3BUhmq4^c(f>#1%43XkwvZClH>Ogb6>@yWWb;IP%4vTnnkVFhZWsTA^|~td}^> zxq=rhkFNTm%Un+Km8m*f%JyIF#~Qh;1ZMcVqWO#xb{~Fj3bj`s}=?vQ@3cbZi!(f7+0oL zYEgr|V4q#_ENlPUOg zZKlF&8dC{Ec9_|o7|_6=n%`IvsGZMIZ~RfJYK9F&3hLPYK9=v@GOfU>k-(Ts(x4f= zn}OFA2_S&yH*!)-R4S({rd~pP;pHW{g?UqJ^z$~~)wQtw0piheCy@WZR)r??Lw;kW z`ODjwjvZz_W>&PVZM6;^oYfWjkhpsNbwj&D$03FtzZO*Y{4ADn%4xs5Z9rzh%zW)q zq-seBa`KW2WbR?a!}@E+!=wV0pz`LD8)iO!QGa%1whT=1bpzU*a59<(8TaHg*8)BbIRIC^~uTrKO_*7;Rh} zF;I|nuWENs&`q0k+3LE*Y1R<)K4?!J(+kPndP2r$FaGeyBW>u4pTcQCcFHK&{qQ=l zMoP@YJU20F8Bu-;SamJJ@0ud!%L8B+-53_Vr9ChZRq7!0+}?wNz{pvO3ece?Z;%qG|~(-28~TZ~5E` z5GQSD(o2s#Rgp7WP#XAJ7`dr>Ej~l0Wo>15eGfYUHj!rwK4<~k1VPBkRJir}&#&#k zw)pK_`@5eHmsyO}Dt}qV7EA9iJ=Uq=RoF`$UrIxSkSJ4Bb5`j4`sE##L>TDUQq(Yy zRFqd(kDEJ?nh9eDEa+^S+nJx8s8N7>7HX!O)xgYV6)l?LS}LZCJdWLjqNjtZ&E73* z-t{DgJ@cXJC!EHOfTCcHbCW?CN{xz$X zX{MQTZ>Dc6?$0re*t67e`}p{Tpgk85 zHD_OW;k&-WSkzz%FR+{}pL*OgbkN>uYQCMOs-`SI*CfEwWLtlZ_F z70uNND{fKE5Cq^cb;sT2wu*vQ`Ufk5sXvVMQyEvr0;BUY%s-jao}JjOS4(KFr2BH4 zevGaT0`1o>J6`y>hBq7xGfHkq@}r_^ClMdS&%uoST^k!{VI$#90CcL2u41}uz`gBr z81{n)9Ee7GaZMrtAMiQyMg@R&c*b!V7S09hW_#-c(XKObs zmm_A2^wR1s#tk&!r`whadeAvg6$^(&fpkz}1@QEe{1Eh%RL!soYsUOMD6Nj`w*?-Z0)WYNt2VEe-rtcQxi^@&h8=l z-B>TRR#GjlDuQ8;fXUUVykC1~g2atUA9$7!hPMKv6;F2n+<#c{RP z6$72i8w01f-rk^x6ckqCnoQ#8i~Wj6OUKwxZR$SZEKdW}qBsOrrNEjH;OHG9{~*WA&~Q zo?n`uaNJEluXdiQ_8h}ESThV0dPhUg%tgXs^8IRA*j?x5$QTx$V428@Yf4qDDJyLq zvM0r}tfp)0OI&HN&Wc1BXH6<82pbFSI-ZV<>kCg5EqrKIURm~yHdWsgk@8g6>i29W zy@Vp+3h;C=0tcXV=c+L@&XX$2);OGIQIL@tds6PUQy}u4`Ps9A5{v#FjlB~Dz-K!= z{LW=X7N<7W=F=T%uRlMUfw%6_Qq!^kNtpV3xjbgf?9fqXBkIe&t(KsXPk#S%QN@8Lgi7h%y@_m(8i+7iH!l2Clxtfx zR|+I7r~G!@B}?o_JhVo7xh?S~S?oNiA#YMEtDdhD7+e$AOIjw98;ic@-!^9*X>fX4 z70ce@82K05B8cK_*<5zqA)I&WCE&my^Kn3H(GuZ|5BEeQ=vA-p-mz`*+)mIdE8`SG zo@c|V#qQ4F#}Tr=Cd4;g^2O+3?TmefZ%S$?Ba!c?IDbY(q`m5COt0# zqv0Xo^U$5i+E?3kY$+oFQQ0dJeR_zMs4$Gyd4CEQZ6KF!2H!G3Og~7YzKN+rGyt?g zLl$SJ{QD$f^O+PLOh8CKKASf&QMrlV({K^8PWzOz&-p=YObmwYk?Ztx!FJ?XI+#7^ zY-bM8gexEeWOROznw+5h5@*SMxD{h>w#2Bm===Bhns@>3Pu5p}b1%=v#?o1winV`x zM)>eNwl4*;y?|UcE;ZWb(m3sU2hC|;SMGay)mF$HIhc84ZO6&=TcibMDkcHPvO!$PKb;6P1#!v^;MIjm zVFhy}7rd`r7AeFVH%!xpQ}&l+zxrAg%(@D#`?M>tW!Y)%k;tb;TgGV&0jl({hjH5~ zh^JxtPNBRDJ_s%*tr)Y;RULoZRc+S*3>%9U$$fzw{V;@Y4-sp(qV~)oUo5A4dH--C z-M`J>AB`7x7#yA*Ag?cqKDurWhka;0(EmtsA+*5pqoU<+#%4;X$@Y(8EXYe#~8S!0}{8n(!Dp>VR5R48hd zEkCB8t6HSNn9I=aS<>;eblUIE-Md{y;0rr;Ep2TkeSJwDvZ>Z?Ul)AXP^P zH=s@~^9Ic?W5U;6u$mz14Et>Pr9GE{07B(zzsA79&f93%;o$2VoRG=O9=)qxXI{4$ z*z|?d0z$+S@Q`BLtm@6gSMnkLGZDW|IuRvw${ps`8XtQ2>W@seGE?n!N@8}}VP}?c zx&z*AsV}-;zI0M-l`k`}Wf{c~S?Ms|=nM~bkB1vSrusx57WhuTa*}BeLgjWw))RY_ z+s5V;$@sXGd0|Kx&w!6e#$$}qJ>^{qA0OM>#yc^YqSYh)nS`XCxU5yXunYssoK`6` za{wo}nVaV9E*H+r+7C(`Ie5F9iptAW#1K}HG>}(|ow%Abg1a!W-yM@m;yFn?&r4sV zeVH@3XWI5O+EyrCToNa6Fnrtr<~Fr!d#paO*UROwV5?I{yM1!Y#&P;v|5`i=KgTeD z&4n~tRh_ge1eVV`t4`AWWnC(wKWL%2ZvC9?vAYVx6h+C-%r^I&xE~M_5?v&CHg<0Y zrdBTqzFC0fRXh=0n!YN2R_rk2$R75hu9HgZtvY4)K;n=Pk1IJMHJTuZfnjdSKVc7j=d%q^RSz;-Z+n>m32ZQn};qR>E)jkom^{^ zdv2ga1)b&(cn4qdoy4u*ywV-ND!RET9Gb)p0T!ia8u3otFH3M7 zRaz*6_h&1#eta#-ZtH04f?!&)1>sQe8VKzQoR1mHWGnP6D+s37fY-ZY$vs6V?<{NY z30uG2uB&O!;*DhiK+6;frxd_3FLtdr>FzplR0?}+Z<%9F%O7UamcF5R+bh zC9ytShwj-7FI(r=E){+2@cWK67x;9E%+1@)K9AC9MSr-ibvdZ*WIhsnr2T1qi~~ov zGsUWQqu(wFw;i{G%8Oiv;RWjM(>^2#{t}$U?>i=|lJmT1@Ehn`2KvY#dyVA7YTxmM z4BbLpw+MQI6!s1&QoM;uRtbp_S%y45tR;y4L1e{+Y0~!YaYTkYmLl1Q&+kU-9i?I# zk1E7lm=!48GNmz5z%i8-QZ&R8c^krtf>1XHhcQlNL1XUSu82%?7NR1HQ8bo=#de1= zl_EVWEzsd1 z5_-yygbQMM)G6B9a>ywa-AF1+B;g|7yE$3q$Ko`QF;IK`dE;|XeXYd(h&yUc%U!r9qYi1 zmDaO~zPO_K8X3!hUMX_Vw~HtDy$KL7(2(G;R=pSabR?zo`fN^zruBt*3t=*{tnTFW zVV^0&+~r_N%4j#wsGWT>PUJ~xlr=!GV(Y6`a+2pzDD1pZ?7lffpAqOi*2pO=YPB7~Z^%KL6gzne2pf3Qd zl9l;=HWtI$&;jK2Qy1N%vzr?*l6JrT=wlN3$Q~ByHxcajS3|#gSJK}F@iwxPtGNgn znrT|X)d=82|2m97F(^WI!q?2-=Exq5N{DBN6lNl z=_=cDVZ!{_iXjjLxybJ}s}G~PX-*%9Ri(75l=w)y9Q8WWm>H6ONs&i6E@jBZ9~+A^ zThcd&$jTM3<){p)3Y)VhKKlIjl;d-U-`m+Y0}&^Q?YzkxrDb^jONyX@8oL?sz7(wl zsyn9#C}WDT7R2Ra_siAqHMzD=ek0MZV2<_nXr9yFIh{YRrE63_ zOh4I;^Yh4TodB=H)>l_Zf8^|}KpBp+o9N_c?k!s^)8Jy*NcI~C%x3WA(ZWhr!W!ls z_3Yj06JN^2{l|TT+YfjxdKS+w&ty4R>m4;fDLnrCjyr6rL4p&oi&K8K4}+A4Y7OXU zA(gzl#evB!epn7Hd3GeJUq{&4K6EZN4Oiqd7L+j8d34A}JsKa`9xFszOxZ5q6##90 zfOfh!z_&I$Dv3N9o#Hr&ocw6xfbHSQ%ygf~%ghu;=voNj) zPfpS1<@E_?02*60HWuv{)J0|3@=>=iIOG;*7H%ppl7HM7z|8HiEu(q;waJgofs9ZE zO%|6np6tIuX%RF!>m7UV`$-i+`ef(D+XCffrVgp;Z4Q`viJCNXX2YYcyod((-X@*>lcLi~D;3;K*umcNx zep~K-voC){a&_S%%HrR(yBW`1QVFP^@OViXhU}2Y=6S?I{~;0mPl*CXdVOgB+l2r9`T+r8h3Z%3ipl;5DSo{r^a_wjA@L(Q z?OzwBzx4HAU%jeuze{g38-LpUtL6D!kbmDjzyKuj_`z{RDf7o%`%h*2^-7&Dpma@-I@*i767MuzE~Xja5s>TaYuYrWZ}tJ( zvl%qNxr8#M2C^|nk1>(;$~vtHtYoSd&gQ#GiLA^2uggN0McZ@epCdgXVE^xk79@||XQ zcJ*(~02&7_sP5)R7qVWre${|~w)s#|oCn+6#1+4Tn!7%K!}|DsLfr=qq-Y~y7*wW> zkMiO+|6iObuOL8kbTNLD|DV=p5CxsG^`)Rmf+uxT!Skh5;vdzU!Mg+>jAag@ezOhY z&xYX)ze@N&wY^nofwdN2-%jmse)8|lUPR2quVMfH*e<6Ah8}{R0HyvfQ|muu3oNg@ z_n!j^T$%nV;^N|xum=;|n_XBa8tMz(di=~Ygmr$yRU`bj0gztY!nmV*oi+QnHnUL; zV`mDgaB~&AUc__tGeQAQT7s0+nTvi3{Ok#@r?`^dtF?=ei|2Xed9sa+$cDi)#3dxU z3wV!=#sU?d($b219xo%qDUcgz4{)MJPZo6rfT5SUYd-|se> zxzR4OT=$lJr|LN+=eAX)2hORom`zFtPwlzBP~2qDH6%9vOJ6npZ!I`$`m>*j{>_?5 z7TA~*LGxiP*fcUGhGjtL2;T+igVT2miKkh$*W?1Di=KQ|-+rePdo@7RRjt02Be9a|JJ*|{^9`4f$?3X9m%m5h z_sQk0N(bmww6~qp-{{pK9{Qa-cZilaRV1eC5!lkUaE*X3!C#965#H%id5!T?ercF!Ld$)b!sm^*$3f7xF{K{E_S)QtW@s7;lq!OTr_-VU%RZ) z`)`9<%#nh5^C#MW@k0hnfz`c|NpD>K@7_iHEdgU;t<#z(!k(g83Mq8BR{FR`PCJuN zZ=)S^9}yF>bjDI30)NJ;QO~33yMkEj8NlbuDYR6nL9OlWo$PvuEPxfN8`yzb#epFz zru>jK=yK%vPl0Sg1`xYF;nR43XF9mxT~{wlG!TNV&aD!|uZxbOCWPfVsdq_JGP*r5 zYrB&s=tlz&(jDU9RZrK=bUJ+hGTaa`FKW=X^_uQq^z7%??_v+X2_s!E)+SP-+xF`i zO}DTxNja>&c4ojLwS0v*)2k}; z2}1ZVV^PgIFI9Yx+J~XKI~dre92jldzmtH61TQFD6k zR6x3t1I-aQ@vYOJ!h<>ipcz}ZUW?uHAsd9H6lmWBeD?E;H~N{KopIW+FB<6YiqI8w zs|7@6^ROsCevKZ1bYa$b$M*We@glm9QByF_^C9;NL8xDMl+zgpbwSj`0SX>l0hr!p zyNu&Gvl5jW5|=Md@^`rw$?ja$rxVZ51(w2XYYJ%Im6ft~ZLS<;m9#z0Tw`BO!>Hol;_O;GHh%2V;(?7kWaxv6SeytqdkB9vI(>ogM z0H0KdZ4JEi0WsSo3s*{ykRH{!Pan*)@M;mU;D8i7U1g11y()^o)jFmy%051#dqdfV zUIoQo?Z)wR5{*;}GJhP$NhJxtp9jwFAJnc~a1j`~CM4-)NhN9I5knP{Yn+&0);dxq zG^6OsWnVYjfg3nFAjN#wK3H{zCh^Q=2!;7=9gUrAOjLO&yfN|;qCF;UvSnHAN=>Iv z(7f9NgvQ|_kUJYPT8uIAm}*4}bb?U&FEAJ^QCXi!KtL`AGEJ%10FHPf_!FMX`r066 zTI!OVHzI?|4>i+VG;wDNEIw{Ity>1qt6BU`>9W^_)~8(~l*rCrX8zSj`f$lO|0x@_ zHtKD&ljSMdfDg@R~(mp!pk)jj&uY-v%I z9h`j7_WS+eBDe3nuJGAAaT4OX=nxhCRP;>nV=FEOrk%?h9yQMf*Qmw#BwmNQ8igOp zJXYh%yv{417gvpj`i>IYioUV1JRfpfA-R}V!g>9D-j1|XA*Lu=W?2d#Dy5&QHj3@7 zw+y6Bk&RwC${nt93S;B~>%n4;`&BTjd9W>_GFUY!n6=E4F>k(zWsfscHMGC{_|a(l z%+*)mdIKOtY4mJznjg7$x=%B)eK`E54f!tk@Ee~)pupMA2;J=A#nE%yCDAPV&4;W2 z5opXSpL@DC(*MZ7w84-P@03R5oL9vB^S~6qX&!5V@P>x>2yfZpdfDRh3#g~nCn;wW zui1QFv z#jpnnVLkY;zfctmmFY58x{J+=+i^xFz<@LB5agx!3D4oSdow^s~xv?xj&;?&=8s_8hs7 zHwp@>jm@B!_{d8z7S#0c&Cm_jbbuBA-ph9%o3tnT_?T%%oP)@OHLj_rSW9B>=c1^U z=a-ku-P=BNb!-*;dVQ^@>k!+Klen&@MLl<%Ic|Db^0L%oRdSu0-D9TD?k+Vs!~<`# z)G#bC%hz_vAV!2qFv4EdZxhE?Yi%I%QFcF(0&I$%uFJQVX{!G0ZHUiIwL?{J67Lif zDPK-X4Hp<0JF%iQ;5o(Af+OHe$+tTiS7v)|^2TZ>h=IK6AbrrZ#qT)QCf$#h&?f#4 z39Xl+udKrh86%_2U^32fNtan}Sq{{u$q3Hablko40}h>xGdArY1P&RHZlx-_{y^4v zfL32=BiJDh^%SQmeHGCnd;2al@5TKHr@6HxHqfwo8RQ67JcxUAo1}-bz+kbbQ{Sie zcvI4OAWf%go~Ofo;&khbQD;V5U6~0t_Ryly346EMX{SqS&oQW+i0E)$it)ozNLgkS z_5txr`}ZNQ1SK>(ptTKd6D<8}w();Dh0|ExpFWBHJZki6tqK;q%Ba>ALDOM>ORM^L zYfK3{@7#59k?JR~KT|4fZ|z&9#T*N8n6~wR@rMtcL+Kr}9SLd8%n*IlxgTP34H_#+ zSlIAKE8iuY4b2Vx#N)fNIUc};uYcsk2}Ql5C3R8@Dz9V`20}&mSYWq4%&Mm>P+GI7 zu0omI?Vw*XK{5534)-1vJQc@!w|$o_J1=D)nELNfxaaE0hC^b_JhBIpxqU|R+x-(x zHVmsBnw~gm$a93;s-B0Mcn>`*Ud0PBaM2#{&(74VerElx=E6@SYr$;aJ3R|*JW|Oj z5ES1)$Je0k?Tc9#EF!Mx?Y=!ixSH(*p6k(EOXxFIj37v*Pp8h;dpL-JGmxj)f|l?? zy1J!Wbt7ldD@SiQyqjug7ju;@;nO4jpQBCSLo2|N9MYWxH^XR z8R`v=Y3e?))DMKW3MB0B7g149tzOZ3U!qgKyCwNhmm8F}IPWPZcGw#)G=!dha2XmD z#C03j+Jhgfc`cAL;lz_~$T_{4lmOMrIl79ud*JQ9rgNH*?ZWOF)C+~x+1q=U-&yV+ z&JJTL6;=EMQ|oMg3HAhUtGa;Id!i>k>k65EGd}AVSY_F9&(Oa3dF>N@9xX_e<8x0IH&TE2AA|Gg?hWp~b%=R1Hj7EzfY8tw;N0_WX6^-A z_K$K=tiq>X>yA#hZLiKTF1E@R!p{~wdc*}TW{y}pl@tWlghp%ZKK8Kdd2|cHT#i&- zj&_}9j}mj}4l=c%+g6?THPYuxJZk;Br^z&itE9dKQ;O{`zVdJJ7RhRB3k|PWFnb+by4#h&3>#W8$h_L-6F~ z^1?#6rOtB5Y84>bKWa>&QKQk~xi@x}C=oegXGM%z0sZx=$3-whGyj-i_x2xh)S z)?gD5al2N#A8a!4daTt6AXaWObbm~sa8kYV$(T}dMSp%%x*aS9u~182c5 zzqQ?-i@XXqU_IvxCch)R97AJ1Tg{36-6P%OdRKcpa@6cUGj5IB7);eR4T}TQKb+<{ zmx92TDafbb%jNwKz;@)C)yydwyeqrs&L<1W_PcRH*WDaAM3YyeBYH{$Gd}Q>_2d#2 zcv+x`yl2hTK4}+2@5i2u2t_{Up@rl8R4Xi)0{FmQI3VRyJBdg3f zH#t#k9w+ znaD3D)!I%vM6A2bd#TfM{bT^md0_e#K35%<_!3QrLe~VxK98hEa~ToqhqJAX3G%sz z56apo+$~!-HlsSmP1t|Q@&KE`)iyULYl3T2MM9adl02H6t3@}YfhWKI;JlPRN-NZGnbf8;*+D;^%VQ4e@YcTgVVxW&fxe9NTq?(Y zd=?9bzg~S#GR&jJ#s682X1rm4%fHy+pSi(f{3VR(=2~$g`oOF6E(&onr0_}YTuAn^EW?BMv?KIA6LE>39Rf7zPy9j>1VyPc zGK@^lKd9X(tWZmI$}vv&*ISl;&i6vWYYwa@QuMV>Ubxzd?WJPUs%hFO3-W8qtgu2w z9#?c!q&F+HWr%IPbd&L=P*YdAx+P+HdvfJ4y^p?iGoScpl+1!k zy3W^vG!3VUO(%sjmV+DUW4x+}tsr#It7HKORcqnTXFFnNOkZuUy@TAINj`1vIp(cj zJNV)KqV0e~;tTNu-OhJ-<=OY4o!eWcok}xWXoZWeFw5yXWhAU@M7^Jy*yVk~UBlK$ zG#WleX$Yw5S*N9&#n{9+$!BL|=1*7@5YOG;*FkSG;XdVbT6^rG+&0g8O2Ni!yok@Q zhBii7VB^{@;bPcD->yVNV;F00V*H@No5upCcaY`#{R*&D!Q5>3kb}R4e~%lv#F6Z$BP@OEr-_^=?dQ1Mc=2s+ zBvQqhnVFe;sC96`80(s9Lrf&F%%6je@RDm$5dqhtkp9MZ(1`iiXUzY>R?#&jbk%oa zJ}R4{ej-U}Y`kTl7UMgZ!sAf-Rh7lqz2y~y5mnG^Y0t636l93r0ja~?ljoq-cMHt( zmN%()5WK&W?v&+G?ohsB{MoO-!=%N(G<(5%O2}GHb}!Ju=>@935lh54jA85}8h@Rm z6VI5{YtW><^8-oAYEf9FKD*f*r#OdwC&joTCxvI_^onvTI;pen9C(6x4TZR1q(eSA z!u$HNdb@EW0V_TQ&uFQFQ!NTsG%{ORmaP!^lE(l4H1?HYaVAUKxXa+~?(Xg+L4&)y zySqCCcbDMqP7(+Nch}&9OVE6i-Sh6*-D4jYKc2Z}rl-2PySlpTuDddvCme^*kli2# z?aCEubHYYk5S={A_gMpt))j8KoA{6~4Fh@DYhKWnYIYQ&^q-83m=&#kphn8!&z%LX z1a+=WzkHS^0GUR>mFLMs&(&dw2X38UsA?D(jN;H<(?@fBNSOGl5$H)>+)o7#!a(## zHdHcP5mw@kpYA=iixs$n@2~0FYYpHAFS9I?r6J;|0v&HRUn0s~9S6`b7H}Zn8B*al zqL>RA#JqbeH<8daKZL#iOcvwisc!g*>@2D8$IIsTR{;k$NIcfJbD8A}KT>tHI^ViF%oZog|J}*5xy-564@0SJq?BYJK5G&TH=aEZFj{p*cTj07x z?{(bp`U|aQIIW(dpl|w}ScLHc?ql@!wAV|uRawFc^MM5rYHO`g|LOa7$&5}eV%cP# z`D1=!2zIz-s3Uj%<0nb^uh1d)O|xHO36FEQrl)P8hVU7*ji|Xp*U&+?*QH6CFANr@I0~(&Ca)?p`wV2OSt0>k&cZ3d`Fjn zyC_(>WU>_U@<5IT0qNa-2}EMGh83}d?ywOv#0KQNWL83+K|gHk1OM1)Yi>5LLT?`} zH20-MaC28DGc`*j+X&c57veEXV1j6#K5Dx(AO(Vaj#yqb;3SxDUv$4pqvp0uLKFGK z4p|xAi_Hy#;w_o!DIpPAA&yD0Ac6o+r{y;}W87yWDU90~}qKzEt%vN$0Gt z1zcUH-1XYsqVLxq1C26at>s+LZ!_Xyijzc5;QJXs2{w@}8_>%CD(`xE~YXq#W-eVNRbo780=7r=-YPxpni~5r8mSz=v7H z#KfA{46he!K@L6oSga*ujk0lIphuoNs2gIfgnD)`B7r!7yM2{3L`iX71pgFq3m0Jv zyS{}N_-xerdZh9tGo2-+_%CSG-@{U(@6az=?ti42YU!*WVtCqJ%9I75(p^-O`LaF6 zu!$0RDc9w5&DXN~k-TO>prYN?``?D!QJb<0+D?|1jE(c?T8xrg;}jjWq>3KeI|^i0 zOm%0Y9Rr}ru*Gc*4Fd^<68G$dW)Q`p&Zlem>2+gKmLh0sc(fC$UA;VaBR-&EF~pR! zq`dtJ=3q;`y7w7MoQTh=r#(}6wwb$cmT*2N^C7F;?V?|@E))f|UaCzO7MP^On*M0R!6xH~O&6WIm)t>R=h@ov4+>O+sF? z?-Dv7uy|DHqjXKDuuzYkM{Ma%@@y*tb#;v>Z^A~7vaJXp=Az`4?YVGY^a8+Pz&MpOTO1_rn*QSAPjXI>5Bb!D(ci7J=5Sc33cAKM7V}~nyTS5w= zp%LFzC2Sl_BbF zpVWAX460R2jg;y0aNAFz>PKH#AoCe~;IcR+$5KDx2qinu0$9MD-<&R}<^7n^JKGsC zvPbsvf<->Gk<{+`)}e?L-5;}p%pVLgVE<|cK+Lo_pqu4vh8&;7Mc3yHqq0rAQt76U z!T=P=Hqdd~o;;|KWEXTNuJWbz@-T{WxlXx{bjE(YL8Hw2Eyqpv(139`%9*t6y6kO< zRQ})v86@A*YH-y72HM2_N8I>|G}fDP^0(%tC^?(0Hu+9@!7A8~3Q13kDQrI%f0B?B z+0R)eT|;M3C^Wqvb6xHzb(IP7yZXuDj0O za@YvP&NU;N^IgG;T1x0E+gy~bt6@#xj%{&8ONOj~)5^cACG3d&ZCt+^m{ zxbumCj+KvLa>zCxY{W~#kKK%}0mbtSi}p_WCZTKf5R41k!w~*+xr*bgeDT|QHn4n# z{F-60;{AYC^u45ds>(?w1^% z(Md!){Vf9i+rn-3fatv<-po3n<6+sn0V-tju9VO>J#Ew`-AvWl4jmT#ya!#uk8mW2 z7`{I)B!to~;dH^ziJTe^>J_~SGS&Z<25%yr0cVcL1&vt)qNwcwC~pcIAaDD0?|p>C zBdnS@?tf9(-nK7nE!3uoC!iZqu^I29AI-^iIGdcdh#x5;VxZ!nm)7sIPfCG-=DBCq z%ufIqwws*uPtU(KU}!lB6t=v8Ekq{^WP`BWpS!GSzOPzEb{-{9*m@$V<1}W1;t&|M zibH79+cDV->T*cx>v@jHbJ~?7)&EG`T9ks;h+W8LlC< z!5;qXVvXB?HgxqROMp|Vu5Fm}hRxZgw-ypoX>#t33I2_4GjNv%o)>1Yn z5J0;+1@qu6dR|U_VaTJEb&qLWWZPTf_7iM6din+71J#bFJA!fV693V!;~Yst05;U{ zUdts;d4s#Y0H1ZF_a6NI8L7{8>JX0JLEE~%jlQ|?7QVY{c#Xc}=1tFO1m>CkbT_Hw zSbC01>nM;*V9J}?W6Nfb(|YUyo77*U4;kyeb*e-MXO>OmaK3t|L5Yv)u1JWg>F-xn zh7xcQ1Yu)YCC#l_aYt0SWVR{lY$I+PI`nzf!Vh>o&*3c>@Cj{SA|!n7YAGgm|C!5^ z?OQnV9scrk$gJx7NCV|~Dz9RXqX*sq()UrW8yZ2X8Z2uR$vx^YG2S5wLR9e3rd!Un z=k1m;$KgEFl|@0~y9@ubQZntn#~&|^?nCaoUl9~tVhuk%$k+p(Er(De5wM=v*ine* zAYHqlj~n6ybMkA}NRv5#GJdK#FwiRUvKk((KEfDx2Xt(?#gTYTWS9)9EjLr!|gR#l9!H|?OYqPlr zzijS1qtWb;xeDtRYy2sW18}JA=`u8 ze7O7AAk2jezu~8WjTf0y^5oTSoki=Qm7ZXXf87o!ry!vCcYJ&i4LkSg+iW+Br~9O{ zdPObFB1eDRFK%!d+bIHRbXgt3bqERh+w;rDpZagWjkDiksg80{fiA$-?bG~#A0wW)5McNKj#ZDCY8(btWnlD&8eM;oza_NP0_<_-1Fj6EZDz ziIov;Qt)k~U5%c0m5?@fqE?Tu4#PCRgIEBW{cEn-mAt^sgn(z0MZkwvhZv1ku!f_i zMwi&dItxg&Xx!}>w#u*gp)9clV#ZFcrxZt?i=n&}3ZjQ$Kq1FZlyn~UkZkP%oBHNx zp|E>672~A*q9sHAR={j9=db)>RD{S-TA}Ws!xh({E!EDThM&YX8!$5+qe!{p6;xI? za;hb5ib1!ZDps-2|TK>?UW=Jm&; zeW{^qexb5K=1{dgO>NX!gI`KKKBU^ux2+qA9Va#3Y)E1y$9tq^*xL`bhjMY;=nf( zK)m^CHB)X8{B*C{W#vi0gBfC+JZT}@2col@|KO!~_Mwq||H2xRF+p5R?6vXn+zoZ@ zhIXT3*&*O*^-)Ji6_yLOBjDX6U%T2q;fj5$fq-vgH4$5jvReZH{s(?g{3G$X{6T}# zQvzBM?gS=T7R>0K7w>AMusN^EocU7k;5IP)73Pj$PP+2d3}BA7kL$;s7tR?*ecC2H zSv|g0k3~YDQe4N$Bs6<-IX4fht|KI`2Lld_Ct@&ly<+={3ZIO#zrmoDq;U{9HRspl zJ4}61qo|*9I0(9-zrFwZu=M5S6}Tk1a(Adbm)vTHTH|$hc7CpLGEUI4cz5w>d?Ra| zCD4mu%GmqcNZ}7hf>tMcjdal%WNXBSquNLeV056$Cs1X@1V*@vIIQj5Z8^a(mN`67 z2vi;T8VYMDAsy68Ca!Bh0RC)PGwJPqu6<&it+MQ5X1B;Py5+NjDJ|4?ozn(scSy1x3yu_Vx3rZX7APnhnjx z{M_<%TaYN?FZ^4!2$TAP?IL*e=Nn;5MvfFjMC8Pd|-Q(6`KmTL@>OX*U zrDslw;PIywYUC)PWR=y=Zjoi@=io}4)PrMk?f1v;;82AH?}xxWYY(I4snL#Zmf!t6 z^KYcsYJno<=9Y52S%JK~3Kz32**g4A6E*%1d`ytLG%2-+46#<9sxcz-o6LZ~ZoXaa z@M1fQgQ?YQ0`>1wG43!^$qNh$I8xemyvVjt|3rKI2ka>e`eAKe6RLwIJsMS3#L}bz zwxR)TIfnNGIRdc@B03xcll$UXoqkJmD-8(J1)K!e`IE-}O$R{lZc#u%FpQQ8_ESyX zC@OOESxStKK{YP>sMx3Mu4DLxLZLQs!7uqXFVP5D=_LEEKNZR9@DS9J{ZEi!kU14A z<@Xd!=!m!N-V+-QCSg$4hs$G~5ed}#EU-SP_6vRu?CAASgQJx~R+-5Q@2yrrNqTl; z`93uNtL+Oih$y@RQ^#YgDEd*HzRF#FZud0bX@^i$<*mY2Y;X}|J729jP74L?fc+9X zrsvzU2y(j~&-Q-{GW^4t`RySqL9`F?pri?*c|koPgMJkzuB8bSjWnmZ*eXk)YOemI zcRtcI486ELynFDrG$7E2k48H^FyQ1Y-sf+ysDFV=f}(7jlmKN_(n~MCvye$dak?vX->|GJ7IpAO{S{o{>Hpd1J5ZCGz;IeXIK|>=Iw!m%k)*x8w9AD=7s`IZ@YGv zy1%sY@1~2ebO9}|_SimKoKALOo2`gMJ!l z1+ruBg8muJ|2ID4Z)(;K>W{LIs;S303x=wtOq`{A%Z-Z1^7T@vgp>8hD1`3J@h?0d zzw_DO;G%yWtUp@UPVZkqQ-R{Mw%QO2v=|hafYkZ_OABC<4ur6aDeS3?rkl~n;PaE6K6i#4RE>ZbMgJ6~R3b7W(ur*&2Jb3Qe$@$&w;w^Lw2 zhmrL#Z#g%QsbiXJmfQCQsjG%x(?Q5+(-3lpQdQ^3EPEZ4+RmBgwQ`==2uP=jY(bE?|epZHs+{?kj}To7*B zpbx_H`7gSg3Wow@&4icR4w*YH{{9Xy1uUNec=M@Y`OlwxPxLd4_3w=r#KG+y9K4g1 zlq3M=c2WIiK`axXE>1!0EE zIjZfW=A$0(`RAJIR#?4Lqezc0Gv zKrAZ|DGw8<@@#5!G{VQ~YTI#YM}vPTJ2tS-8(%C383lzq0AzHQ;Z0qB$-IRRA6m6| zT70sh##XT_t&01>Tbp>JT~$BFrA_q_R+oa!euEf(t-(a93*Ax(Pf^fK)Onu6_vPYi zUKQ{8ubde0kmNs)ALyA$qF`onQ?H>f+%~vSWqo-%9>pWFxqb{NsG7+K_Yc6t)G1Uo zX^chq%TUuN=3$fup(xOG8w ziPb@G1G!{)dRO4oZt(+lkUoxz+0ui`S;z*fYtiWxV6Zeu?96O~clu+A>^{*FImJXS z>v*=8Y59Zy3`O@@lT=cxJ-4pJUzhfj9Egdc>U#WcTrR0U+L;a&jx+c8&{XDtU$}H3nNSb{s5fR5zC56tIu4P1ET`#8;O1eR5gLd84S5}OrwGQ!FGEe@Ml$l@ zBhOe;9^~3J(9c+L$MI`)WSSRjTb6{F@cZay;7c`k&r68PhcyD=35TS5T-I6M{eINW zmXa3xEp?Q^WtnS_t8(ydPoKdTExt9I0v?_&`BmwpR{2YpgTJVJiva4wZs$8?rASg4 zc{#D#wep8z_1HWz5HH|mT2ZxwF0A0&U$V8EL!{d*7)t3dA~P_3SdM6YS6A(-0=Jo(cbxuVtIi?dM7?42I<$(HPy}CR%i7q3%S`gh>WSe@F}lr{XEk?CA5QzR$cpy+MQI|@J!I9=RQ zXZ*iS0vUrA9x1K)&~te`po9=O-M5Xb`B#FMl|(S974FbUy)| zV{7R2zjW@8*8lpTD+Wf~43O2)DUgz=S3D)Kv#f6DiKB9J^W7E`a57b`LTu)xj~ra$ zSrP4Whqx)}aSyNlpRPwiE`XMaDIIjyyp^uzB(9uULo=CQ#@aC#4eSerg0^bkvPm`u z?6fn1<}`o9d0D8Ixersv7eDS)7IDJ1R@jU$c zP^1&s*y(VX!)1~2@-Rh3^n*)j8tSs3GKps@J<1XiwOZA7&I0Y=@QHyM7@!2R`SOUk z|LIV+t3!+=N3(VVEFd8vV-4{!acM!64}^88sp<0q^}1sz?>Z2w#?7RW7JeecM3;7x zS4?~9W!wC$jsRsJ`oOc&)ZFJ0wElTB{}=zNJF7qJl>JSgrnkHuBmKt|P?iH@tPBKQ{fR2vZj(5p-`|L(AtC? zpR^f=_*1OxLo^YSaP10z+nC{|lG7H!;hP~L(ywCn-s>mb91*XgXpd1p@(0Z{BJerx zD%inu&LEsx(KL0AP!qt?f|vi{?a$e#*`VcDxTu@&;=z@+hgHOCw*1 z^@~SaRD0r9_z?ddXbMaKjIdOZ0IC>aLkOS&VlnvOCsk1h0o0x!>1 zuWG7(X=!Se!#ifkkOT#Tnt^u|P;V1Lm9WNEc%~$1RQAN({X<~UaMs^Qqnv6L>qdDy z)o%L9l_lV9VFM7O-b0? z>1~nSh%Q8J-=0mMtxFb`H6)~NUiY|`hfJl-OSt^LW0^u`HSwgFzK`YdG9QRTeUyLI zWA~YWlKM;6BQej}L{fLK^X$HC&%p%YxgM|z!yHy`x`>>KnD&r&Vq}y9HKkW*$5gbA zIj$4lU1>v*5#2ITv{d-x7-x>OtkUh`wXbyi)-aLO3e06gAP#^x_X8cxgnlAhh|fFi zeJVa@e)(Dg5lx6n@!^7~u+OE9FQOk}@n&?4$%k}$=5c@2-!JiXIIUc$Z+f_#PhD$T zcSUgC3unJ4(HC|n;-?6Ca_7n>;!mXy0)L%ZBe#1uznWrVru7f&`iJE`JcL5Yr%#OG zGdmmlHo=4u2e3K4c_5F9L2<7;A;hDd1p&{l0k#o$CzM6x6pyesElTdhqw@pZ+x#P4 zw@=V(akhm~XL?2B{TGjwlOv<4G3f}kw9Y%W;jVEpAB=%IlM^-in_W7w1qoAG`Sh(s zMq3?1d1=p*DB3rQ{Q|9Q5H)s)qsG~TgZsC>QaV#*TU*Dk23?c;uhrGnDJgTRZxn=W zD$i!i+ingw^ltIbiQtn`Q<*X|Guf^8;IyvJeAvBjXz}<41)eTOxdiV<&?rnlMH*@3 zbdKw^zV#Oq%Z_RGhR=|NZVhUWP{adv@;Iz|ym@k{q9CLE1k?5;#(u}UI%W~G0ewd- zP&KJ1;#InCP7TW;1ib&F$45gh5Hkf!S1}Adt$88i(1HFVkDkI5CU6a#0u1g3|H1HbB0G_B61aB4M~_xz&D zxj6%BFQ`&8>G=a6kt=CZ-|6aBuYqc;U+s+5z5VGQMW5j_92h@1NWR?U;ed<;Fs*@x zhWT3Z2IJH=J0LAh%zk^E# z(^McRq(GB!s!{y4hV-$TxiI`XA92ck z%bLweKJDqf9kkJ*l5xq~lqW-F_Px<4r9}`%x~h5ftB0 znKUjCm9x;-tF5AB`|K_^GrEX;65^>V&_p4xPLy_vj7Lb{e(8FLN;F`N9DMoFCDVKJ zlp2eF&0{>C!fj&=%^8lk?JIsQPOwYt0#AWPFw!9qozR0sVPQ(X5WnoBxI*PUt8@po z^;{(U(9_B~eD4W}ZJZ+{_0csZxu5{-r2)h8Y!$bAFH?nDH=k_i>7I2m=40_wmxQ#2 zwT^~^2>H;B=c%mLL4#pLq`va15Y%?K)A@)Rx2N#!8Fp3PM33B(k*$SL_GLG`I?L;; zP}fL>*!*^yqrHL+k>|%Zk#XqFhT=O7J!`xI5X|; zehpiZ!T)$}0@R?TRcp8{=q+CL(DSiH_B&g+Ul#{bG@RG+d4=ugwlz^8;5|ZL*6L-8 z^<%{*d*H$-M(}Ugp-m(C;q@9*nVFdz4zxrTE@7jGGX0_emTEv*mP*;N}&6xQFH%*VCs(5=WiQAhxVi#mB7G>Z$CYn#g95O#L1+U{C0 z(ajTOyWmM5KB6A*rW3TdYQo)R??Cy5VR6cD8VA`gcgP5%7$(s1R zD=16YOJ87EuZV@ejiZIbF9iXv;@t6lC0fvQl;X8N1OTrUC_-g&>nmfU@GVD|=uJg= zZL+=tpdzsg4TOUW{EW(~D?tH!r?gGBscS>_2x-)ez{H6TVo#u{5>#bdX`*xgp&H#= zfHiv40Qrp+>S+kac)1c75eJAkA8X(^f-rLRSIaQo^U!L$&hQ34;*nu*W)jg8lP{jS z?ZO_tbS^Q0!VX*COG=vM!bUtXj6e4J@U;$jpt7iW2JvO5F$thhXFjn@8yfE&D-&%; zgL4A#n{K;eFD3xiWR$yJLEu6FHK#rq&L|4+zAv1N>QV;xyof!pqP(G&@J@Vf1tXC| z+&uDGD9*u={2ZP9_+i(YN(OrOiA6i?L`aw>?R!=|hD-7iG-85bQ(ev{WY>eifO)_Q z>ftpE42a)^y1PWlnZf+l((bcHjKk6q}O z>h(C0qO*Ik2>j+gIhl=aBW@Xf$nAL!DmaK7D8;z zZ-Z;PTqnIyalpzETU;ap%d!FG1^y8BQ~oTvk1n6)a>oW=T(jy(fHks$OfMy<0I;Z& zrqb5@JF;54Y@R)~71P!5qkT@e+=I#TkwG2%4>vbRbd2;Le9k*&PmMwKmx3J!+t#{8 zg+cVFXp&F&bw{>~Id)cW^#G=A_N&Yu>m9P<5)$7R!rDf5Jkmx!!S80hm#<2RdryWJ z>|uwEj{bhtxK1lPh;w~M&rVK-WhE&jYa!u;3wA~f-}%;~j2eQsBDa)^UT}G0pW1%I z{PQ$8q1yNHu!!wE3JduNCjQ&$fxgQajFlh*BmV4Zt@w%CJb3zAt8yn-(~P63HgcdB z@bJuFo(;8*x!eNh6MX1vD5wl?y!5@1iU; z!deBHg$%&oRb_d|30I(u{|0O$z8;Qfq$0UQSgRURpLpa=6o=i!huaghhDdl^7$P@-I;KguZ&;Z0&xR#Jf+-m3Z7g@O+PLW!h zI%9(zOZbxSp9ff%V7T2>12{w}lwrYg=MTdD?8OuX7{`P}K!p zlt}K9%8jq&XJy)jQdmxi5RBO+wIj3Jc?O=a&3iltAnuED>FeF6T_O&sy0vrNwd*28 zZ(CbdSKK@mR_0&<&6_$cItqs`NcV$}c?kgDOY|5YBfA6a+YpRT3s%R_Hp?q7+&5n9 z?P6yK%x4`wb0GwS^*XW+6%e(5kCOzU$dR&6DLxgF-}F@LZrXt|03F6XJbezkI2Rc= zN~MwJ2%FWy*P6b6$ED0EJwHq58coSZL0@2PCdOW-6NMGia5!k_Tpu6gD`$?GI*iPv z7+kMH10sejE}j^=;y&Vxy7{aIY%^1r7EVOm{iLtSls9Mv7~yd~iI>UY0pM~D-j&ucYEwCW9b#2xE&JE6bcpGf-rZUf5! z&B`O7K_(oTz#2-s*<%b;uGsAu(`}-H*wip#NJn^6zx&gA3bS4(?dbQY#06c=t1U(vMvuUp(sUAD>c|Os*!dr^*yb0;2FQGHbV4U zP{yUlEvs8kqFCaP#}MBYW?zjHN%QvRwx2!nX4r+jV#>x{H%-km#o}7DZxASS%uBI=j+(zfhJfO0| z^AycWnWUJ)D?;{`x1xC~@ujWY%Vuy7F$0n#r8^e!1GnGADhy(k!tX1&;OcRqf*t$) zRC9#9`SpZ1eW%vys(IrYcf;?J5*C15%2f7wd^7fEub~!Py15ct9FdEP=gRVNRg zZ=gL{Yfl~`PRwTWFr=G3gdOa9{Vj;kreF`-S7 z_Pl#+3$iQId``<4kHK6}f9Z+?fEu1{{`{&nel6IU=vi;hNK%{Ee5EO$i5SH6K-~UQe>Ugzl(3^>J0nS8F&p^$bauJF-(Uv}6pe{#hFk5l zUu44&*qj|IBf4nmm$i(J4ki8(}rp<6V8vJ~(98yS_}m;XK65V|pY`?fwz z9&dPM(8n`s(i@J~GS9to4;)9iEq`?-tlGZb1ByG0l46<@{JG$IUcg9=?Ael3GEI^I zZn&5-=ikr%q(NCwZ^!7r&uPhTs>NWX&$&v{G1sI_^61Zr4UNPseGL`6yRIUxu&JV* zcJ8&jD5$Y<}^;D1b=$`9#{t!gN{f#xdpZ?2(2%4_Y0WPw_DS+w5l6(cDvT{-O6;k^R;6=bPQ@2WGI zg37f{od9NlnNXuG%#nCMwLjGubkMt4)Yzfat-{4|9a!BUDQULN+yp3Z4|pjtOvPu}TSX zY^x1;2Dq_tDB1vT)b z3A9jhK8j7ihHcj^=;$1p1tsk8=XFpH7G}W3%9`I^tTgkXeGv;OLJ$XLH_W8*=Wy-nMIR18-@jp7=!$v3)t^bU^UpwKNM}0(^I)DhF0L+Lk4{UL_yq7VZ z$r;8hfc!Sbz~CC_)e*()&gEvZn#S5(Q);`m#D-3SL*u~WzZfcz$8YvwSxsBJQws)l zexru~C4K!p@VdH9?#X9r!y~Pm29&Cv5*Y~>l~A`_x7!iN^KCLiczhk{Y5h~MF4ot{ zJfZT~s^Xmv#MVp6I{QLz7AGr&AaEuQrGhxr20dV}l+;QbzB3@NIa#$ps@=e*@R$!F zs8UE%-99K9`YXHEXU>2gL!bnkq>M`e1wI)WnzQl!Hb>d+=5@xD7}6xG=MFDP&LL+T zh2s=nUL_eVfz8NJWOsN)n{H3^GZ*He6ELv6g#-dl0HKZpj-2|kTVIYFlUMKn;oaMD z4;YAQWUKdO+iGO{yIG^EL9f-(Kck2tB%jFo)7&{B$|nstAz^X~9i3tUx9PJEkGwSrO^XgJ;Hgp@XHXaI4YbL0N@IEQQ#_h1*p5%=|*lv!2xgc+K}zgH4W&n=E78>F!1);FED z_e9OLw121;;w73BkYb#>cgpav>jn0!EiGh4q}@88z~crtV{~Rvu~84 zIuXPoRP%J9Trpb2IeB{1Fzv2BQG#iuu!?@)ohv%AazVe{&wL%Gh?Ld(5-_nVwb_3f z6|x>9yxwlG1s66F+x!JXRK!2*?kMFL%&jD_6Mv|6+-?ecsx^%>vL02$wXdY4?5%U- z*mb93{sz0zAa5~U^ImVZwud6}a87!Dol&NbrRV<8)sNx?&X#CyIua~3pRA_DM5WAH z2>XPy^_3F6TOg-!=VK=#vQX$VOdKUcec9?%{O#P8;ZQi`H~<%teOPn-g~ zl7bR@3%x==QP5)2va-_f0{O^tTmGsPa2PAn%rSu}Fl!YtQGk_%08WokniwgGXACFv zVJyAZz~^**zkPj;>fX%Z`Z<=yr_HA;-|w_x80fQkuGsKm+_3|NN%&*$3Yq1w*s_Lw z{8`Qhx?^F(_Wq04oW<@f&Ycf~p2@J*fL7|1dZ`UG@tyV;T;w2LINHd{#`6cf%177( zGzOmP*aa1Ch3d_l2cc$*n4fc9c+x@IsWR#pYFefAeO({hR)zRhPRy+G8eBeV%lK6J zye<<#hctJRNtcEU+xe=bep18UGZHYU)FZ;b47T?VobzG3=o3G1hIY91xY|1!kPA4? zsYSp2+)7;KUT`(0VM~Yy{laPA@fP{1G|UY}1B~~F&_~0=$pnknjgx)kxITVv;q8Tc zS5qE>7M8FHGW;iPv&5Uj<^q#!Xr7lclHf;$hjhPTI^L?l+EF^8Up3kygFjZ@Y^B4_ z+_&}qd^I-vXhu!ZA_PgW?xpjSn&E3TsqM-a=f!7n`GKb~_t~#jPr4)Gn^6dZRZ@N; z^!3%YKn|QbffrsifR+T^55L>C(igS**L?2kK!`2=eS89qfkPK}lzBdl0gbqO0^82Z zHz#TZnwvE;`FL;>=JDYYc~y0zJJ`)nmq)nH%BLAUWz%TAJr{lf%PCVI2MUpM-O_imHl*U{i?g0b#&s<*|2a=@ zo}$i`O#Km$Lt*x2$QY%W_M(Og2C{x*a(F2{mr~XJp|{v_Hj(FT&5S&}J^>SlS^{rd z9JZ3M&s`2r_*p~oWJgj`UCrL5&vob8Qu|=f!xx)t{i@H&cdgtk@9q+KHksPJQf>6D z7E#r-`I&1$CqxqA5u}CUynNT(+brL3XCnlp(#P6-AcFj72kB$OiC?pBdrnW z4~-oPXJQ^587z|m3bjLe`^*R0=02&q=V%8Ibb97El*ddBu=%ADxf>o}yy|qvOt9Cb zBYn3WPCp9$!oDCeY%t7(+rM}dgRMFxQvV#l2s}M^^RA#PC8`88?SF1?(VBaoVugJ9ZuSM>clo83vI-uk`uW3Hg(*pvJiLjz6U z%ht!5+M!Arrt}4Ctp4|?)Vib9n9WG~F>&luZiGGMYx0Ypb2Qot1zlBR1R{$8ASSTk zb(Vn3@SmLO0q$;YUs@fEl$gem-Thi=Y`N~jAN>?3l z>OqRIrFz_F8|!Y&X6(VEk_1fj?^OIrd5>Sd#YBkC zU82Gi1^3(rOWrCo2`<@{VK5djYNwK%wVsYtlm+S)7UcdUhF%Revw2y(EpIe_VS5)+ z7a@Q0jQb3GKQ*Gq;;2(0={eW2W)PsMG?`CwS58kEyY!=`aaylR!+z~9I2wVSc@DF` z+wS0gmAmXAC_<~oTXC)zYB4haW%~MgF?j3*cF^Q57kyzcUjFq8A#bD6X(d&xM=8cR zj$g#OM>)T=9*B+MIe$=}@qMs$-~?2&`JWZ;ML$6Mzl`p1Sbm?eFd?%)(=)?LAnsvv zH@04=b(yI1RGm!gG}2CZzdGxlt0f`*U^mpMP{+O`+!fU`b*=`jW6+qrYqbqAs+pT- z)%s!BipO3;v_(6tA&lKRRZQn2m|e`es6ia#iX+-Ss8qBrl(WTC`%OjsRJzt^bK|sX+Iy3IdJrFooEiW0uY$AIh_qFk zlULPutugC)Z;$SBJzEV$iYLB*t`)K6OU1zlr6Y`{C~8irndDgeItL&f*WVxA-Yev` z{hah#&L7yan(LLUsnfp36jTduqJJ~@ZdR|^PW^4i+UERi z)>h3%!GjLO69&Q`C)MN`mRwD`iJME|n}xrLs~4z)tT9KGsFjOK?b~$px|uZ3Qm<56 zr|Nf92vd)KS}Vkt_D}%XU@);2D#FhcPlLmiDi6DDjHF5*Th~X`kBuZ?v61*yt-Gp! zRc;)?sYut<)%?|`hbQghYxgJct-8LsYd8Ppy{*=vJF0d$rt%XyQ3e`6i=U?tel3(H ztA82LUqh>81P(33Rh?34GNJjoN%gJCcv@eM)2qGbqSI*ry^|b_T`$Tcn&t)sl-0@e zkKq?_zufB?KTvJH0$Yfjx-sdm(I8#_MHL{`OTp91Rz@_M(ac&QE=*{XrH@n z5G@&3=R&^9EjXm!tAk70>G;vMPH!5QvV*U@_iMAab|XQJ_X=9sX;aOk!YY_=orhhS zfgUN*>m;-Jmp=cqU2rIR@`6iOtdS@8(_Uz6hQ_F=RC)$=F^${8CFy{e)c0DaGk&P& zKt~ea#~PpemsMsVy>--3c1x@RH4@8rIHa;&t`ZCXNgKb^goQ0zHxkCFT{ergp>3y5 zvQ~E!t$SAqkzWe+)@Jr;P5sDWq6l3D;R8BtO{lHg;+u}$WA7%eKNnQ|oBW!g{XO$` z_C+0^eGW`8=-T{#9Fs4gpSKZqdy}mWI4roDm1ly+bq{{eUf|6}Z-dN#9xl>EKu|}x zv`3*swt%PI)M_!0h~SYh;nIn{NA>tzT+Qx_ZAP}6Vk}aZ-y)0I{m%0~(XtgaK$O%A zG{urV{L^kz?E1+JE9qShu0&xY5RU)Q77c--l=4X=z^ z+takUxX^kWkq&B6ZoC@lk{^hN?7tMfOA(0wY*c{pU&OCZ?0-?KIlC9}USB_MK3xuN zom_NqKPU8?ALp!0L*Qc~VHxhp&^Bz)|S;+F(8cQj~ZVNb#$ zP3C?#0QFxc^(Vb8d!O>B^-F_}Af2CXI?~~~t9y`(tUNgP_A+-4ppvk0%Nbqy_x4Ua z3-*z^X_;TKaZd>xS#)`U>I&uSD?Y_%Z2^A6di67lD)QqE8<*S!G}_-g=N(#-xYq3} z%6S(2YTXXtW)>dd>VK`)zc11Mo36BP3~LJq^p>a2h2DBoAW{Hag62lmJ+6*S&gK(- z?%y^uxJ?pu`BLxq$(z|D@ka1|{c?-RVo%c_5k2 z-`t>o^BsD|spa0zL7kDB-aS$~E`jtDYEY@E|K5o}QFbU=kDS=u5&i%9$y_)mWhi_wX28S#HIb%Anr5 bkzWKrY$hoRsRUPnf&Sh|DM;3e8wUSBrp`KE literal 0 HcmV?d00001 diff --git a/docs/zh/08-operation/pic/backup-08-files.png b/docs/zh/08-operation/pic/backup-08-files.png new file mode 100644 index 0000000000000000000000000000000000000000..07f2184d4f6a53466120ac322592e583cd0f66b7 GIT binary patch literal 51071 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