Skip to content

[foxy backport] Refactor launch service run_async loop to wait on futures and queued events (#449)#455

Merged
jacobperron merged 1 commit intofoxyfrom
jacob/foxy_backport_449
Aug 27, 2020
Merged

[foxy backport] Refactor launch service run_async loop to wait on futures and queued events (#449)#455
jacobperron merged 1 commit intofoxyfrom
jacob/foxy_backport_449

Conversation

@jacobperron
Copy link
Copy Markdown
Member

Backport #449 to Foxy.

…events (#449)

Fixes ros2/launch_ros#169

Otherwise, it's possible to get into a hung state where we wait for an event,
even though there are no more events. This is because the check for an "idle"
state evaluates to "True" as we wait for some futures to complete.

By waiting for futures and events concurrently, we can avoid this problem.
Further, we don't have to wait for an event if there's nothing in the queue.

Signed-off-by: Jacob Perron <jacob@openrobotics.org>

* Wait until one event is processed or nothing done (timeout)

Signed-off-by: Jacob Perron <jacob@openrobotics.org>

* Fix bugs

Always create a task to wait on and cancel it if there is a timeout.

Signed-off-by: Jacob Perron <jacob@openrobotics.org>

* Avoid canceling an event mid-processing

Signed-off-by: Jacob Perron <jacob@openrobotics.org>

* minor refactor

Signed-off-by: Jacob Perron <jacob@openrobotics.org>

* Guard against leaving a task pending

Signed-off-by: Jacob Perron <jacob@openrobotics.org>

* Further refactoring

We don't need to have an inner loop or timeout when waiting on futures.

Signed-off-by: Jacob Perron <jacob@openrobotics.org>

* Only wait on futures if there are no events in the queue

This prevents spurious wake-ups when we're waiting for an event to finish processing.

Signed-off-by: Jacob Perron <jacob@openrobotics.org>
Copy link
Copy Markdown
Member

@ivanpauno ivanpauno left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@jacobperron jacobperron merged commit 325d2b7 into foxy Aug 27, 2020
@delete-merged-branch delete-merged-branch bot deleted the jacob/foxy_backport_449 branch August 27, 2020 19:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants