set parent environ to udfd
This commit is contained in:
parent
3986f392b5
commit
739acf425a
|
@ -49,6 +49,8 @@ SUdfdData udfdGlobal = {0};
|
||||||
int32_t udfStartUdfd(int32_t startDnodeId);
|
int32_t udfStartUdfd(int32_t startDnodeId);
|
||||||
int32_t udfStopUdfd();
|
int32_t udfStopUdfd();
|
||||||
|
|
||||||
|
extern char **environ;
|
||||||
|
|
||||||
static int32_t udfSpawnUdfd(SUdfdData *pData);
|
static int32_t udfSpawnUdfd(SUdfdData *pData);
|
||||||
void udfUdfdExit(uv_process_t *process, int64_t exitStatus, int termSignal);
|
void udfUdfdExit(uv_process_t *process, int64_t exitStatus, int termSignal);
|
||||||
static int32_t udfSpawnUdfd(SUdfdData *pData);
|
static int32_t udfSpawnUdfd(SUdfdData *pData);
|
||||||
|
@ -147,7 +149,33 @@ static int32_t udfSpawnUdfd(SUdfdData *pData) {
|
||||||
snprintf(ldLibPathEnvItem, 1024 + 32, "%s=%s", "LD_LIBRARY_PATH", udfdPathLdLib);
|
snprintf(ldLibPathEnvItem, 1024 + 32, "%s=%s", "LD_LIBRARY_PATH", udfdPathLdLib);
|
||||||
|
|
||||||
char *envUdfd[] = {dnodeIdEnvItem, thrdPoolSizeEnvItem, ldLibPathEnvItem, NULL};
|
char *envUdfd[] = {dnodeIdEnvItem, thrdPoolSizeEnvItem, ldLibPathEnvItem, NULL};
|
||||||
options.env = envUdfd;
|
char **envUdfdWithPEnv = NULL;
|
||||||
|
if (environ != NULL) {
|
||||||
|
int numEnviron = 0;
|
||||||
|
while (environ[numEnviron] != NULL) {
|
||||||
|
numEnviron++;
|
||||||
|
}
|
||||||
|
int lenEnvUdfd = ARRAY_SIZE(envUdfd);
|
||||||
|
|
||||||
|
envUdfdWithPEnv = (char**) taosMemoryMalloc((numEnviron + lenEnvUdfd) * sizeof(char*));
|
||||||
|
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < numEnviron; i++) {
|
||||||
|
envUdfdWithPEnv[i] = (char*) taosMemoryMalloc(strlen(environ[i]) + 1);
|
||||||
|
strcpy(envUdfdWithPEnv[i], environ[i]);
|
||||||
|
}
|
||||||
|
for (i = 0; i < lenEnvUdfd; i++) {
|
||||||
|
if (envUdfd[i] != NULL) {
|
||||||
|
envUdfdWithPEnv[numEnviron + i] = (char*) taosMemoryMalloc(strlen(envUdfd[i]) + 1);
|
||||||
|
strcpy(envUdfdWithPEnv[numEnviron + i], envUdfd[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
envUdfdWithPEnv[numEnviron + lenEnvUdfd - 1] = NULL;
|
||||||
|
|
||||||
|
options.env = envUdfdWithPEnv;
|
||||||
|
} else {
|
||||||
|
options.env = envUdfd;
|
||||||
|
}
|
||||||
|
|
||||||
int err = uv_spawn(&pData->loop, &pData->process, &options);
|
int err = uv_spawn(&pData->loop, &pData->process, &options);
|
||||||
pData->process.data = (void *)pData;
|
pData->process.data = (void *)pData;
|
||||||
|
@ -176,6 +204,16 @@ static int32_t udfSpawnUdfd(SUdfdData *pData) {
|
||||||
} else {
|
} else {
|
||||||
fnInfo("udfd is initialized");
|
fnInfo("udfd is initialized");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (envUdfdWithPEnv != NULL) {
|
||||||
|
int i = 0;
|
||||||
|
while (envUdfdWithPEnv[i] != NULL) {
|
||||||
|
taosMemoryFree(envUdfdWithPEnv[i]);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
taosMemoryFree(envUdfdWithPEnv);
|
||||||
|
}
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1941,7 +1979,7 @@ int32_t doCallUdfScalarFunc(UdfcFuncHandle handle, SScalarParam *input, int32_t
|
||||||
convertDataBlockToScalarParm(&resultBlock, output);
|
convertDataBlockToScalarParm(&resultBlock, output);
|
||||||
taosArrayDestroy(resultBlock.pDataBlock);
|
taosArrayDestroy(resultBlock.pDataBlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
blockDataFreeRes(&inputBlock);
|
blockDataFreeRes(&inputBlock);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue