Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: ros2/rclcpp
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: iron
Choose a base ref
...
head repository: cellumation/rclcpp
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: iron
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 9 commits
  • 17 files changed
  • 2 contributors

Commits on Oct 27, 2023

  1. fix: Fixed race condition in action server between is_ready and take_…

    …data and execute
    
    Some background information: is_ready, take_data and execute data
    may be called from different threads in any order. The code in the old
    state expected them to be called in series, without interruption.
    This lead to multiple race conditions, as the state of the pimpl objects
    was altered by the three functions in a non thread safe way.
    
    This commit fixed this by
     - Introducing a data queue that is filled in is_ready
     - take_data from now only pops the front element of the data queue
     - A backlog of events if held in num_unreported_events_ which will be
       reported by future calls of is_ready
    
    Signed-off-by: Janosch Machowinski <J.Machowinski@cellumation.com>
    Janosch Machowinski authored and atsogias committed Oct 27, 2023
    Configuration menu
    Copy the full SHA
    4d3ec4b View commit details
    Browse the repository at this point in the history
  2. fix(rclcpp_action): Fixed race condition in Client

    Some background information: is_ready, take_data and execute data
    may be called from different threads in any order. The code in the old
    state expected them to be called in series, without interruption.
    This lead to multiple race conditions, as the state of the pimpl objects
    was altered by the three functions in a non thread safe way.
    
    This commit fixed this by
     - Introducing a data queue that is filled in is_ready
     - take_data from now only pops the front element of the data queue
     - A backlog of events if held in num_unreported_events_ which will be
       reported by future calls of is_ready
    
    Signed-off-by: Janosch Machowinski <J.Machowinski@cellumation.com>
    Janosch Machowinski authored and atsogias committed Oct 27, 2023
    Configuration menu
    Copy the full SHA
    0becc43 View commit details
    Browse the repository at this point in the history
  3. chore: made race condition fix ABI and API compatible

    Signed-off-by: Janosch Machowinski <J.Machowinski@cellumation.com>
    Janosch Machowinski authored and atsogias committed Oct 27, 2023
    Configuration menu
    Copy the full SHA
    7e9680e View commit details
    Browse the repository at this point in the history
  4. fix(rcl_cpp_action) : fixed regression

    Signed-off-by: Janosch Machowinski <J.Machowinski@cellumation.com>
    Janosch Machowinski authored and atsogias committed Oct 27, 2023
    Configuration menu
    Copy the full SHA
    b5fe7f9 View commit details
    Browse the repository at this point in the history
  5. feat(Client): Added function to drop a goal handle in a thread safe way

    This function allows us to drop the handle in a locked context.
    If we do not do this within a lock, there will be a race condition between
    the deletion of the shared_ptr of the handle and the result / feedback
    callbacks.
    
    Signed-off-by: Janosch Machowinski <J.Machowinski@cellumation.com>
    Janosch Machowinski authored and atsogias committed Oct 27, 2023
    Configuration menu
    Copy the full SHA
    4a1f116 View commit details
    Browse the repository at this point in the history
  6. !fix(Client): Do not hold goal_handle ptr if result cb is set.

    The capture of the lambda held an copy of the shared_ptr to the
    goal handle. This lead to the behavior that the goal callbacks
    would be called, even though the user dropped the handle.
    
    Note, this will break the current tutorial, as it restores the documented
    behavior that a goal will be invalidated as soon as one drops the handle.
    
    Signed-off-by: Janosch Machowinski <J.Machowinski@cellumation.com>
    Janosch Machowinski authored and atsogias committed Oct 27, 2023
    Configuration menu
    Copy the full SHA
    a8a2cc3 View commit details
    Browse the repository at this point in the history
  7. Use rcl_timer_call_with_info instead if rcl_timer_call in Timer and a…

    …dd interface for a callback with TimerInfo argument
    
    Signed-off-by: Alexis Tsogias <a.tsogias@cellumation.com>
    atsogias committed Oct 27, 2023
    Configuration menu
    Copy the full SHA
    fb7c28b View commit details
    Browse the repository at this point in the history
  8. fix: Make passing of timer data thread safe

    Janosch Machowinski authored and Janosch Machowinski committed Oct 27, 2023
    Configuration menu
    Copy the full SHA
    49b1f15 View commit details
    Browse the repository at this point in the history

Commits on Dec 7, 2023

  1. feat(MultiThreadedExecutor): Added ability to handle exceptions from …

    …threads
    
    This commit adds external exception handling for the worker threads,
    allowing application code to implement custom exception handling.
    Janosch Machowinski authored and acschroeder committed Dec 7, 2023
    Configuration menu
    Copy the full SHA
    5696e97 View commit details
    Browse the repository at this point in the history
Loading