From 54d235dad09af75f88adc5299354f8b0b7dadf8e Mon Sep 17 00:00:00 2001 From: dmchen Date: Wed, 15 Nov 2023 10:13:00 +0000 Subject: [PATCH 1/3] fix/TD-27336 --- source/dnode/mnode/impl/src/mndStb.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/source/dnode/mnode/impl/src/mndStb.c b/source/dnode/mnode/impl/src/mndStb.c index 82d0074fbd..eb2f9dcbe3 100644 --- a/source/dnode/mnode/impl/src/mndStb.c +++ b/source/dnode/mnode/impl/src/mndStb.c @@ -1178,8 +1178,16 @@ static int32_t mndProcessCreateStbReq(SRpcMsg *pReq) { SName name = {0}; tNameFromString(&name, createReq.name, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE); - auditRecord(pReq, pMnode->clusterId, "createStb", name.dbname, name.tname, createReq.sql, createReq.sqlLen); + if(createReq.sql == NULL && createReq.sqlLen == 0){ + char detail[1000] = {0}; + sprintf(detail, "dbname:%s, stable name:%s", name.dbname, name.tname); + + auditRecord(pReq, pMnode->clusterId, "createStb", name.dbname, name.tname, detail, strlen(detail)); + } + else{ + auditRecord(pReq, pMnode->clusterId, "createStb", name.dbname, name.tname, createReq.sql, createReq.sqlLen); + } _OVER: if (code != 0 && code != TSDB_CODE_ACTION_IN_PROGRESS) { mError("stb:%s, failed to create since %s", createReq.name, terrstr()); From 9e37fd8fc6ade5e43f166cc1d30e8d08c5871e3c Mon Sep 17 00:00:00 2001 From: dmchen Date: Wed, 15 Nov 2023 10:44:53 +0000 Subject: [PATCH 2/3] create stream --- source/dnode/mnode/impl/src/mndStream.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/source/dnode/mnode/impl/src/mndStream.c b/source/dnode/mnode/impl/src/mndStream.c index 6899a08602..ab5f2d1ebb 100644 --- a/source/dnode/mnode/impl/src/mndStream.c +++ b/source/dnode/mnode/impl/src/mndStream.c @@ -861,15 +861,22 @@ static int32_t mndProcessCreateStreamReq(SRpcMsg *pReq) { code = TSDB_CODE_ACTION_IN_PROGRESS; + SName dbname = {0}; + tNameFromString(&dbname, createStreamReq.sourceDB, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE); + SName name = {0}; tNameFromString(&name, createStreamReq.name, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE); // reuse this function for stream - // TODO if (createStreamReq.sql != NULL) { - auditRecord(pReq, pMnode->clusterId, "createStream", name.dbname, name.tname, createStreamReq.sql, + auditRecord(pReq, pMnode->clusterId, "createStream", dbname.dbname, name.dbname, createStreamReq.sql, strlen(createStreamReq.sql)); } + else{ + char detail[1000] = {0}; + sprintf(detail, "dbname:%s, stream name:%s", dbname.dbname, name.dbname); + auditRecord(pReq, pMnode->clusterId, "createStream", dbname.dbname, name.dbname, detail, strlen(detail)); + } _OVER: if (code != 0 && code != TSDB_CODE_ACTION_IN_PROGRESS) { mError("stream:%s, failed to create since %s", createStreamReq.name, terrstr()); From 8dbb7ff2d4d6e724f9cf2df50ff88b9750cf0704 Mon Sep 17 00:00:00 2001 From: dmchen Date: Thu, 16 Nov 2023 02:22:01 +0000 Subject: [PATCH 3/3] copy sql before destroy --- source/dnode/mnode/impl/src/mndStream.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/source/dnode/mnode/impl/src/mndStream.c b/source/dnode/mnode/impl/src/mndStream.c index ab5f2d1ebb..f54c9d75f5 100644 --- a/source/dnode/mnode/impl/src/mndStream.c +++ b/source/dnode/mnode/impl/src/mndStream.c @@ -26,6 +26,7 @@ #include "mndTrans.h" #include "mndUser.h" #include "mndVgroup.h" +#include "osMemory.h" #include "parser.h" #include "tmisce.h" #include "tname.h" @@ -756,6 +757,15 @@ static int32_t mndProcessCreateStreamReq(SRpcMsg *pReq) { goto _OVER; } + char* sql = NULL; + int32_t sqlLen = 0; + if(createStreamReq.sql != NULL){ + sqlLen = strlen(createStreamReq.sql); + sql = taosMemoryMalloc(sqlLen + 1); + memset(sql, 0, sqlLen + 1); + memcpy(sql, createStreamReq.sql, sqlLen); + } + // build stream obj from request if (mndBuildStreamObjFromCreateReq(pMnode, &streamObj, &createStreamReq) < 0) { mError("stream:%s, failed to create since %s", createStreamReq.name, terrstr()); @@ -868,9 +878,9 @@ static int32_t mndProcessCreateStreamReq(SRpcMsg *pReq) { tNameFromString(&name, createStreamReq.name, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE); // reuse this function for stream - if (createStreamReq.sql != NULL) { - auditRecord(pReq, pMnode->clusterId, "createStream", dbname.dbname, name.dbname, createStreamReq.sql, - strlen(createStreamReq.sql)); + if (sql != NULL && sqlLen > 0) { + auditRecord(pReq, pMnode->clusterId, "createStream", dbname.dbname, name.dbname, sql, + sqlLen); } else{ char detail[1000] = {0}; @@ -886,6 +896,9 @@ _OVER: tFreeSCMCreateStreamReq(&createStreamReq); tFreeStreamObj(&streamObj); + if(sql != NULL){ + taosMemoryFreeClear(sql); + } return code; }