diff --git a/source/libs/executor/src/executor.c b/source/libs/executor/src/executor.c index 0dda403f9b..b2d4a5fc68 100644 --- a/source/libs/executor/src/executor.c +++ b/source/libs/executor/src/executor.c @@ -442,7 +442,7 @@ int32_t qExecTask(qTaskInfo_t tinfo, SSDataBlock** pRes, uint64_t* useconds) { *useconds = pTaskInfo->cost.elapsedTime; } - //cleanUpUdfs(); + cleanUpUdfs(); int32_t current = (*pRes != NULL) ? (*pRes)->info.rows : 0; uint64_t total = pTaskInfo->pRoot->resultInfo.totalRows; diff --git a/source/libs/function/src/tudf.c b/source/libs/function/src/tudf.c index afacb50d35..d5a3e91eea 100644 --- a/source/libs/function/src/tudf.c +++ b/source/libs/function/src/tudf.c @@ -976,8 +976,12 @@ int32_t cleanUpUdfs() { } uv_mutex_lock(&gUdfdProxy.udfStubsMutex); - int32_t i = 0; + if (gUdfdProxy.udfStubs == NULL || taosArrayGetSize(gUdfdProxy.udfStubs) == 0) { + uv_mutex_unlock(&gUdfdProxy.udfStubsMutex); + return TSDB_CODE_SUCCESS; + } SArray* udfStubs = taosArrayInit(16, sizeof(SUdfcFuncStub)); + int32_t i = 0; while (i < taosArrayGetSize(gUdfdProxy.udfStubs)) { SUdfcFuncStub *stub = taosArrayGet(gUdfdProxy.udfStubs, i); if (stub->refCount == 0) {