AsyncParametersClient and get_parameter not working as expected
Open
@alsora is already working on this.
Since Feb 27, 2025.
- Dominant language
- C++
- Stars
- 805
- Forks
- 564
- Avg merge
- 1d 17h
- Merged PRs (30d)
- 27
Description
AsyncParametersClient and get_parameter Synchronization Issues
Description
There are synchronization issues between AsyncParametersClient::load_parameters() and Node::get_parameter() that make it difficult to reliably load and read parameters.
Problem
When loading parameters from a YAML file:
// Load parameters
parameters_client_->load_parameters(yaml_filepath_);
// Try to get updated values
get_parameter("number_particles", num_particles); // Still returns old value
Attempted solutions that don't work:
- Using futures:
auto future = parameters_client_->load_parameters(yaml_filepath_);
future.wait(); // Hangs indefinitely
- Using delays:
parameters_client_->load_parameters(yaml_filepath_);
std::this_thread::sleep_for(std::chrono::seconds(5)); // Even long delays don't help
get_parameter("number_particles", num_particles); // Still returns old value
- Double loading:
parameters_client_->load_parameters(yaml_filepath_);
parameters_client_->load_parameters(yaml_filepath_); // Try to force an update
The only way to get the updated values is to wait for another parameter event to trigger, suggesting the parameter cache isn't being properly updated.
Expected Behavior
load_parameters()should complete and ensure parameters are updatedget_parameter()should return the latest values immediately after loading
Actual Behavior
get_parameter()returns stale values until another parameter event occurs- Futures from
load_parameters()hang indefinitely - No reliable way to synchronize parameter loading and reading
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.