Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Fixed expiring of goals if events executor is used #2674

Open
wants to merge 1 commit into
base: jazzy
Choose a base branch
from

Conversation

jmachowinski
Copy link
Contributor

This commit is only relevant if the events executor is used.

This commit adds a background thread, to create events for the expire timer of the action.
Without this the action server will not expire old goal results leading to memory and performance issues.

For now, this commit is a draft. There is still a (minor) issue, that the clock used in the background
thread does not work correct in the use_sim_time case (it still runs on system time).

This is an alternative to #2661

In contrast to #2661, it reuses the rcl internal timer and therefore existing code to recompute the
expire times.

@alsora @mauropasse @mjcarroll thoughts ?

This commit is only relevant if the events executor is used.

This commit starts a background thread, to create events
for the expire timer of the action. Without this the action
server will not expire old goal results leading to memory and
performance issues.
@mauropasse
Copy link
Collaborator

I don't think creating a new thread per ActionServer is good solution, the TimersManager of the EventsExecutor is already creating a thread to handle timers, so I think that approach should be used.
Threads can be expensive on resource-constrained platforms.
It has been discussed here that maybe the best approach is removing the need for goals to expire, by not having servers storing results.

@jmachowinski
Copy link
Contributor Author

@mauropasse Note, this is a backport to jazzy. The timer interface is not exposed, therefore there is no way to register a timer at the executor without breaking ABI/API.

@ros-discourse
Copy link

This pull request has been mentioned on ROS Discourse. There might be relevant details there:

https://discourse.ros.org/t/next-client-library-wg-meeting-friday-22nd-november-2024/40703/1

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.

3 participants