-
Notifications
You must be signed in to change notification settings - Fork 165
Closed
Description
Bug report
Required Info:
- Operating System:
- Ubuntu 18.04
- Installation type:
- source
- Version or commit hash:
- master
- DDS implementation:
- n/a
- Client library (if applicable):
- n/a
Steps to reproduce issue
Start with a trivial launch file called bad.launch.py containing the following:
import launch
import launch.event_handlers
def generate_launch_description():
return launch.LaunchDescription([
launch.event_handlers.OnProcessIO()
])
Attempting to launch the launch file gives a stack trace
ros2 launch -d bad.launch.p
. . .
[DEBUG] [launch]: Traceback (most recent call last):
File "/opt/ros/foxy/lib/python3.6/site-packages/launch/launch_service.py", line 385, in run_async
await process_one_event_task
File "/usr/lib/python3.6/asyncio/coroutines.py", line 126, in send
return self.gen.send(value)
File "/opt/ros/foxy/lib/python3.6/site-packages/launch/launch_service.py", line 295, in _process_one_event
await self.__process_event(next_event)
File "/usr/lib/python3.6/asyncio/coroutines.py", line 110, in __next__
return self.gen.send(None)
File "/opt/ros/foxy/lib/python3.6/site-packages/launch/launch_service.py", line 315, in __process_event
visit_all_entities_and_collect_futures(entity, self.__context))
File "/opt/ros/foxy/lib/python3.6/site-packages/launch/utilities/visit_all_entities_and_collect_futures_impl.py", line 45, in visit_all_entities_and_collect_futures
futures_to_return += visit_all_entities_and_collect_futures(sub_entity, context)
File "/opt/ros/foxy/lib/python3.6/site-packages/launch/utilities/visit_all_entities_and_collect_futures_impl.py", line 45, in visit_all_entities_and_collect_futures
futures_to_return += visit_all_entities_and_collect_futures(sub_entity, context)
File "/opt/ros/foxy/lib/python3.6/site-packages/launch/utilities/visit_all_entities_and_collect_futures_impl.py", line 38, in visit_all_entities_and_collect_futures
sub_entities = entity.visit(context)
File "/opt/ros/foxy/lib/python3.6/site-packages/launch/action.py", line 108, in visit
return self.execute(context)
File "/opt/ros/foxy/lib/python3.6/site-packages/launch/actions/include_launch_description.py", line 140, in execute
declared_launch_arguments = launch_description.get_launch_arguments()
File "/opt/ros/foxy/lib/python3.6/site-packages/launch/launch_description.py", line 126, in get_launch_arguments
process_entities(self.entities, _conditional_inclusion=conditional_inclusion)
File "/opt/ros/foxy/lib/python3.6/site-packages/launch/launch_description.py", line 120, in process_entities
entity.describe_sub_entities(), _conditional_inclusion=False)
AttributeError: 'OnProcessIO' object has no attribute 'describe_sub_entities'
Expected behavior
Should not throw a stack trace
Actual behavior
Throws a stack trace. This will happen in a non-trivial example too when an EventHandler is found by the process_entities function.
Additional information
I can fix this - but I'd like some input on 'how' It seems like event_handlers should be refactored to use describe_sub_entities and describe_conditional_sub_entities (like actions) instead of a differently named describe method
The alternative is to have different handling for event_handlers vs actions when attempting to introspect. That seems fragile.
@wjwwood You've had opinions about introspection in the past. What do you think?
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels