diff --git a/source/libs/function/src/tudf.c b/source/libs/function/src/tudf.c index 5f7764f342..3c5e4014b3 100644 --- a/source/libs/function/src/tudf.c +++ b/source/libs/function/src/tudf.c @@ -143,14 +143,29 @@ static int32_t udfSpawnUdfd(SUdfdData *pData) { udfdPathLdLib[udfdLdLibPathLen] = ':'; strncpy(udfdPathLdLib + udfdLdLibPathLen + 1, pathTaosdLdLib, sizeof(udfdPathLdLib) - udfdLdLibPathLen - 1); if (udfdLdLibPathLen + taosdLdLibPathLen < 1024) { - fnInfo("udfd LD_LIBRARY_PATH: %s", udfdPathLdLib); + fnInfo("[UDFD]udfd LD_LIBRARY_PATH: %s", udfdPathLdLib); } else { - fnError("can not set correct udfd LD_LIBRARY_PATH"); + fnError("[UDFD]can not set correct udfd LD_LIBRARY_PATH"); } char ldLibPathEnvItem[1024 + 32] = {0}; snprintf(ldLibPathEnvItem, 1024 + 32, "%s=%s", "LD_LIBRARY_PATH", udfdPathLdLib); - char *envUdfd[] = {dnodeIdEnvItem, thrdPoolSizeEnvItem, ldLibPathEnvItem, NULL}; + char *taosFqdnEnvItem = NULL; + char *taosFqdn = getenv("TAOS_FQDN"); + if (taosFqdn != NULL) { + taosFqdnEnvItem = taosMemoryMalloc(strlen("TAOS_FQDN=") + strlen(taosFqdn) + 1); + if (taosFqdnEnvItem != NULL) { + strcpy(taosFqdnEnvItem, "TAOS_FQDN="); + strcat(taosFqdnEnvItem, taosFqdn); + fnInfo("[UDFD]Succsess to set TAOS_FQDN:%s", taosFqdn); + } else { + fnError("[UDFD]Failed to allocate memory for TAOS_FQDN"); + return TSDB_CODE_OUT_OF_MEMORY; + } + } + + char *envUdfd[] = {dnodeIdEnvItem, thrdPoolSizeEnvItem, ldLibPathEnvItem,taosFqdnEnvItem, NULL}; + options.env = envUdfd; int err = uv_spawn(&pData->loop, &pData->process, &options); @@ -180,6 +195,7 @@ static int32_t udfSpawnUdfd(SUdfdData *pData) { } else { fnInfo("udfd is initialized"); } + if(taosFqdnEnvItem) taosMemoryFree(taosFqdnEnvItem); return err; } diff --git a/source/libs/function/src/udfd.c b/source/libs/function/src/udfd.c index df97e873aa..75bed73bb3 100644 --- a/source/libs/function/src/udfd.c +++ b/source/libs/function/src/udfd.c @@ -1421,22 +1421,26 @@ int main(int argc, char *argv[]) { if (taosInitCfg(configDir, NULL, NULL, NULL, NULL, 0) != 0) { fnError("failed to start since read config error"); + taosCloseLog(); return -2; } initEpSetFromCfg(tsFirst, tsSecond, &global.mgmtEp); if (udfdOpenClientRpc() != 0) { fnError("open rpc connection to mnode failed"); + taosCloseLog(); return -3; } if (udfdCreateUdfSourceDir() != 0) { fnError("create udf source directory failed"); + taosCloseLog(); return -4; } if (udfdUvInit() != 0) { fnError("uv init failure"); + taosCloseLog(); return -5; } @@ -1452,6 +1456,7 @@ int main(int argc, char *argv[]) { udfdDeinitScriptPlugins(); + taosCloseLog(); udfdCleanup(); return 0; }