Open omertal88 opened 1 year ago
Hey there! Could you upload a minimal example so we can look into this issue?
Edit: Note-to-self: It could be that this line is shallow copying the env dict.
I actually just ran into this, but the problem seems a little more subtle... Please use the following to reproduce.
First a simple executable:
#!/usr/bin/env python3
import os
print(os.environ.get("FOO", "There is no foo"))
Place it somewhere on your path, I named it print_env.py
.
Then the following launch file:
import launch
def generate_launch_description():
ld = launch.LaunchDescription()
ld.add_action(
launch.actions.ExecuteProcess(
cmd=["print_env.py"], additional_env={"FOO": "BAR"}, output="screen"
)
)
ld.add_action(launch.actions.ExecuteProcess(cmd=["print_env.py"], output="screen"))
ld.add_action(
launch.actions.ExecuteProcess(
cmd=["print_env.py"],
output="screen",
additional_env={
"FOO": launch.substitutions.Command(
[
"print_env.py",
]
)
},
)
)
return ld
This launches three "printenv" processes:
additional_env
set to FOO=BAR
FOO
value to the contents of the environment variable, using a substitutions.Command
So I expect:
BAR
There is no foo
There is no foo
What I get:
BAR
There is no foo
BAR
!So it seems that additional_env
leaks into the command substitution, but maybe not to other nodes / processes? Note that this is not exactly the same behaviour as exposed above, but maybe my MWE will help in resolving this?
Bug report
Required Info:
Steps to reproduce issue
CYCLONEDDS_URI=file://<profile-path>
.additional_env
e.g.:{"CYCLONEDDS_URI": "file://<path-to-other-profile>}
Expected behavior
The composable node container should match the ports of the second profile (step 5), while the ROS2 node which send the LoadNode requests use the ports matching the ports of the first profile (step 2).
Actual behavior
You will get the same error as in step 4, but this time the ports match the ports of the second profile. This actually means that you can't run a composable node container with pre-defined participant ID.
Additional information
This worked fine in galactic, and when we try to port to humble, we stumbled upon this issue
Thank you Omer