Skip to content

feat: Added new statistics interface / removed statistics publisher - #3203

Open
jmachowinski wants to merge 2 commits into
rollingfrom
jm/remove_statistics_publisher
Open

jmachowinski wants to merge 2 commits into
rollingfrom
jm/remove_statistics_publisher

Conversation

@jmachowinski

Copy link
Copy Markdown
Collaborator

Description

This removes the half backed statistics implementation and replaces it with a interface that can be implemented by a third party pkg to archive the same functionality.

Is this user-facing behavior change?

Yes, we remove an existing feature. Due to recent bug reports I believe almost nobody was using it.
But as states, this also enables community pkgs to replicate the existing behavior.

Did you use Generative AI?

Yes, SWE-1.7

@mergify

mergify Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Tick the box to add this pull request to the merge queue (same as @mergifyio queue).

  • Queue this pull request

@jmachowinski

Copy link
Copy Markdown
Collaborator Author

Pulls: #3203
Gist: https://gist.githubusercontent.com/jmachowinski/43427d9eb5ad9b3e5aff3061c21666bc/raw/e02b86c54cc2197263e6a285fba45a2077543125/ros2.repos
BUILD args:
TEST args:
ROS Distro: rolling
Job: ci_launcher
ci_launcher ran: https://ci.ros2.org/job/ci_launcher/19897

  • Linux Build Status
  • Linux-aarch64 Build Status
  • Linux-rhel Build Status
  • Windows Build Status

@jmachowinski

Copy link
Copy Markdown
Collaborator Author

This reduced the compile time of a node with 1 sub and 1 publisher from 6.32s to 4.91s on a Ryzen 9900X

@skyegalaxy
skyegalaxy self-requested a review July 23, 2026 16:47
@skyegalaxy skyegalaxy self-assigned this Jul 23, 2026

@fujitatomoya fujitatomoya left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I am not against this approach, imo old implementation clearly wasn't pulling its weight anyway. a few comments below.

  • should we not give deprecation period before removal? statistics has been there for a long time, there would be some users who might use the statistics.
  • no default implementation provided by mainline? i think user can still do enable/disable the statistics feature on the subscription, and then mainline provides the default collector?
  • this still supports rclcpp-only, so rclpy and other client libraries can't benefit. we know that this is the same limitation the old design had. probably this is next step after this PR, for longer term I think that statistics hooks is an rcl-level event/emission API, which would give all client libraries and all entity types (publishers, services, actions) a shared mechanism, with a default implementation maintained and tested in mainline.

@jmachowinski

Copy link
Copy Markdown
Collaborator Author

Note, we talked about this on roscon, and we came to the conclusion, that we would remove this completely and not even provide an interface for collecting statistics.
The reason for this, is that tooling appeared, that hooks into tracepoints. This seems to to be the better way forward for collecting statistics.

Janosch Machowinski added 2 commits September 24, 2026 16:09
This removes the half backed statistics implementation and replaces it
with a interface that can be implemented by a third party pkg to archive
the same functionality.

Signed-off-by: Janosch Machowinski <J.Machowinski@cellumation.com>
Signed-off-by: Janosch Machowinski <j.machowinski@cellumation.com>
@jmachowinski
jmachowinski force-pushed the jm/remove_statistics_publisher branch from 3072937 to 861c0dc Compare September 25, 2026 14:34
@jmachowinski

Copy link
Copy Markdown
Collaborator Author

Pulls: #3203
Gist: https://gist.githubusercontent.com/jmachowinski/2f05403a36292c1ddef5cfc3b66dc53f/raw/e02b86c54cc2197263e6a285fba45a2077543125/ros2.repos
BUILD args:
TEST args:
ROS Distro: rolling
Job: ci_launcher
ci_launcher ran: https://ci.ros2.org/job/ci_launcher/20507

  • Linux Build Status
  • Linux-aarch64 Build Status
  • Linux-rhel Build Status
  • Windows Build Status

@github-actions

Copy link
Copy Markdown

ABI Compliance Check

❌ Verdict: incompatible

Library Verdict Summary
libcomponent_manager.so ❌ incompatible ABI changed: 0 removed, 2 changed, 0 added declaration(s); removed or changed declarations break backward compatibility.
librclcpp.so ❌ incompatible ABI-incompatible changes detected.
librclcpp_action.so ✅ compatible No ABI changes detected.
librclcpp_lifecycle.so ❌ incompatible ABI changed: 0 removed, 2 changed, 0 added declaration(s); removed or changed declarations break backward compatibility.
❌ libcomponent_manager.so — full abidiff report

Compared:

  • Base: lib-base/libcomponent_manager.so
  • Head: lib-pr/libcomponent_manager.so @ 861c0dc
Functions changes summary: 0 Removed, 2 Changed (51 filtered out), 0 Added functions
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable

2 functions with some indirect sub-type change:

  [C] 'method rclcpp_components::NodeFactory* class_loader::ClassLoader::createRawInstance<rclcpp_components::NodeFactory>(const std::string&, bool)' at class_loader.hpp:319:1 has some indirect sub-type changes:
    return type changed:
      in pointed to type 'class rclcpp_components::NodeFactory' at node_factory.hpp:30:1:
        type size hasn't changed
        1 member function changes (1 filtered):
          'method virtual rclcpp_components::NodeInstanceWrapper rclcpp_components::NodeFactory::create_node_instance(const rclcpp::NodeOptions&)' has some sub-type changes:
            parameter 1 of type 'const rclcpp::NodeOptions&' has sub-type changes:
              in referenced type 'const rclcpp::NodeOptions':
                in unqualified underlying type 'class rclcpp::NodeOptions' at node_options.hpp:36:1:
                  type size hasn't changed
                  no member function changes (3 filtered);
                  1 data member deletion:
                    'bool enable_topic_statistics_', at offset 728 (in bits) at node_options.hpp:458:1
                  2 data member changes:
                    'bool start_parameter_services_' offset changed from 736 to 728 (in bits) (by -8 bits)
                    'bool start_parameter_event_publisher_' offset changed from 744 to 736 (in bits) (by -8 bits)

  [C] 'method rclcpp_components::ComponentManager::ComponentManager(std::weak_ptr<rclcpp::Executor>, std::string, const rclcpp::NodeOptions&)' at component_manager.cpp:52:1 has some indirect sub-type changes:
    implicit parameter 0 of type 'rclcpp_components::ComponentManager*' has sub-type changes:
      in pointed to type 'class rclcpp_components::ComponentManager' at component_manager.hpp:81:1:
        type size hasn't changed
        1 member function changes (11 filtered):
          'method virtual rclcpp::NodeOptions rclcpp_components::ComponentManager::create_node_options(std::shared_ptr<composition_interfaces::srv::LoadNode_Request_<std::allocator<void> > >)' has some sub-type changes:


❌ librclcpp.so — full abidiff report

Compared:

  • Base: lib-base/librclcpp.so
  • Head: lib-pr/librclcpp.so @ 861c0dc
Functions changes summary: 103 Removed (216 filtered out), 5 Changed (1125 filtered out), 4 Added (16 filtered out) functions
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
Function symbols changes summary: 34 Removed, 14 Added function symbols not referenced by debug info
Variable symbols changes summary: 88 Removed, 2 Added variable symbols not referenced by debug info

103 Removed functions:

  [D] 'method libstatistics_collector::collector::Collector::Collector()'    {_ZN23libstatistics_collector9collector9CollectorC2Ev, aliases _ZN23libstatistics_collector9collector9CollectorC1Ev}
  [D] 'method virtual std::string libstatistics_collector::topic_statistics_collector::ReceivedMessageAgeCollector<rmw_message_info_s, void>::GetMetricName() const'    {_ZNK23libstatistics_collector26topic_statistics_collector27ReceivedMessageAgeCollectorI18rmw_message_info_svE13GetMetricNameB5cxx11Ev}
    note that this removes an entry from the vtable of class libstatistics_collector::topic_statistics_collector::ReceivedMessageAgeCollector<rmw_message_info_s, void>
  [D] 'method virtual std::string libstatistics_collector::topic_statistics_collector::ReceivedMessageAgeCollector<rmw_message_info_s, void>::GetMetricUnit() const'    {_ZNK23libstatistics_collector26topic_statistics_collector27ReceivedMessageAgeCollectorI18rmw_message_info_svE13GetMetricUnitB5cxx11Ev}
    note that this removes an entry from the vtable of class libstatistics_collector::topic_statistics_collector::ReceivedMessageAgeCollector<rmw_message_info_s, void>
  [D] 'method virtual void libstatistics_collector::topic_statistics_collector::ReceivedMessageAgeCollector<rmw_message_info_s, void>::OnMessageReceived(const rmw_message_info_t&, rcl_time_point_value_t)'    {_ZN23libstatistics_collector26topic_statistics_collector27ReceivedMessageAgeCollectorI18rmw_message_info_svE17OnMessageReceivedERKS2_l}
    note that this removes an entry from the vtable of class libstatistics_collector::topic_statistics_collector::ReceivedMessageAgeCollector<rmw_message_info_s, void>
  [D] 'method virtual bool libstatistics_collector::topic_statistics_collector::ReceivedMessageAgeCollector<rmw_message_info_s, void>::SetupStart()'    {_ZN23libstatistics_collector26topic_statistics_collector27ReceivedMessageAgeCollectorI18rmw_message_info_svE10SetupStartEv}
    note that this removes an entry from the vtable of class libstatistics_collector::topic_statistics_collector::ReceivedMessageAgeCollector<rmw_message_info_s, void>
  [D] 'method virtual bool libstatistics_collector::topic_statistics_collector::ReceivedMessageAgeCollector<rmw_message_info_s, void>::SetupStop()'    {_ZN23libstatistics_collector26topic_statistics_collector27ReceivedMessageAgeCollectorI18rmw_message_info_svE9SetupStopEv}
    note that this removes an entry from the vtable of class libstatistics_collector::topic_statistics_collector::ReceivedMessageAgeCollector<rmw_message_info_s, void>
  [D] 'method virtual libstatistics_collector::topic_statistics_collector::ReceivedMessageAgeCollector<rmw_message_info_s, void>::~ReceivedMessageAgeCollector()'    {_ZN23libstatistics_collector26topic_statistics_collector27ReceivedMessageAgeCollectorI18rmw_message_info_svED0Ev}
    note that this removes an entry from the vtable of class libstatistics_collector::topic_statistics_collector::ReceivedMessageAgeCollector<rmw_message_info_s, void>
  [D] 'method virtual libstatistics_collector::topic_statistics_collector::ReceivedMessageAgeCollector<rmw_message_info_s, void>::~ReceivedMessageAgeCollector()'    {_ZN23libstatistics_collector26topic_statistics_collector27ReceivedMessageAgeCollectorI18rmw_message_info_svED2Ev, aliases _ZN23libstatistics_collector26topic_statistics_collector27ReceivedMessageAgeCollectorI18rmw_message_info_svED1Ev}
    note that this removes an entry from the vtable of class libstatistics_collector::topic_statistics_collector::ReceivedMessageAgeCollector<rmw_message_info_s, void>
  [D] 'method virtual std::string libstatistics_collector::topic_statistics_collector::ReceivedMessagePeriodCollector<rmw_message_info_s, void>::GetMetricName() const'    {_ZNK23libstatistics_collector26topic_statistics_collector30ReceivedMessagePeriodCollectorI18rmw_message_info_svE13GetMetricNameB5cxx11Ev}
    note that this removes an entry from the vtable of class libstatistics_collector::topic_statistics_collector::ReceivedMessagePeriodCollector<rmw_message_info_s, void>
  [D] 'method virtual std::string libstatistics_collector::topic_statistics_collector::ReceivedMessagePeriodCollector<rmw_message_info_s, void>::GetMetricUnit() const'    {_ZNK23libstatistics_collector26topic_statistics_collector30ReceivedMessagePeriodCollectorI18rmw_message_info_svE13GetMetricUnitB5cxx11Ev}
    note that this removes an entry from the vtable of class libstatistics_collector::topic_statistics_collector::ReceivedMessagePeriodCollector<rmw_message_info_s, void>
  [D] 'method virtual void libstatistics_collector::topic_statistics_collector::ReceivedMessagePeriodCollector<rmw_message_info_s, void>::OnMessageReceived(const rmw_message_info_t&, rcl_time_point_value_t)'    {_ZN23libstatistics_collector26topic_statistics_collector30ReceivedMessagePeriodCollectorI18rmw_message_info_svE17OnMessageReceivedERKS2_l}
    note that this removes an entry from the vtable of class libstatistics_collector::topic_statistics_collector::ReceivedMessagePeriodCollector<rmw_message_info_s, void>
  [D] 'method void libstatistics_collector::topic_statistics_collector::ReceivedMessagePeriodCollector<rmw_message_info_s, void>::ReceivedMessagePeriodCollector()'    {_ZN23libstatistics_collector26topic_statistics_collector30ReceivedMessagePeriodCollectorI18rmw_message_info_svEC2Ev, aliases _ZN23libstatistics_collector26topic_statistics_collector30ReceivedMessagePeriodCollectorI18rmw_message_info_svEC1Ev}
  [D] 'method virtual bool libstatistics_collector::topic_statistics_collector::ReceivedMessagePeriodCollector<rmw_message_info_s, void>::SetupStart()'    {_ZN23libstatistics_collector26topic_statistics_collector30ReceivedMessagePeriodCollectorI18rmw_message_info_svE10SetupStartEv}
    note that this removes an entry from the vtable of class libstatistics_collector::topic_statistics_collector::ReceivedMessagePeriodCollector<rmw_message_info_s, void>
  [D] 'method virtual bool libstatistics_collector::topic_statistics_collector::ReceivedMessagePeriodCollector<rmw_message_info_s, void>::SetupStop()'    {_ZN23libstatistics_collector26topic_statistics_collector30ReceivedMessagePeriodCollectorI18rmw_message_info_svE9SetupStopEv}
    note that this removes an entry from the vtable of class libstatistics_collector::topic_statistics_collector::ReceivedMessagePeriodCollector<rmw_message_info_s, void>
  [D] 'method virtual libstatistics_collector::topic_statistics_collector::ReceivedMessagePeriodCollector<rmw_message_info_s, void>::~ReceivedMessagePeriodCollector()'    {_ZN23libstatistics_collector26topic_statistics_collector30ReceivedMessagePeriodCollectorI18rmw_message_info_svED0Ev}
    note that this removes an entry from the vtable of class libstatistics_collector::topic_statistics_collector::ReceivedMessagePeriodCollector<rmw_message_info_s, void>
  [D] 'method virtual libstatistics_collector::topic_statistics_collector::ReceivedMessagePeriodCollector<rmw_message_info_s, void>::~ReceivedMessagePeriodCollector()'    {_ZN23libstatistics_collector26topic_statistics_collector30ReceivedMessagePeriodCollectorI18rmw_message_info_svED2Ev, aliases _ZN23libstatistics_collector26topic_statistics_collector30ReceivedMessagePeriodCollectorI18rmw_message_info_svED1Ev}
    note that this removes an entry from the vtable of class libstatistics_collector::topic_statistics_collector::ReceivedMessagePeriodCollector<rmw_message_info_s, void>
  [D] 'method bool rclcpp::NodeOptions::enable_topic_statistics() const'    {_ZNK6rclcpp11NodeOptions23enable_topic_statisticsEv}
  [D] 'method rclcpp::NodeOptions& rclcpp::NodeOptions::enable_topic_statistics(bool)'    {_ZN6rclcpp11NodeOptions23enable_topic_statisticsEb}
  [D] 'method void rclcpp::Publisher<statistics_msgs::msg::MetricsMessage_<std::allocator<void> >, std::allocator<void> >::Publisher(rclcpp::node_interfaces::NodeBaseInterface*, const std::string&, const rclcpp::QoS&, const rclcpp::PublisherOptionsWithAllocator<std::allocator<void> >&)'    {_ZN6rclcpp9PublisherIN15statistics_msgs3msg15MetricsMessage_ISaIvEEES4_EC2EPNS_15node_interfaces17NodeBaseInterfaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_3QoSERKNS_29PublisherOptionsWithAllocatorIS4_EE, aliases _ZN6rclcpp9PublisherIN15statistics_msgs3msg15MetricsMessage_ISaIvEEES4_EC1EPNS_15node_interfaces17NodeBaseInterfaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_3QoSERKNS_29PublisherOptionsWithAllocatorIS4_EE}
  [D] 'method void rclcpp::Publisher<statistics_msgs::msg::MetricsMessage_<std::allocator<void> >, std::allocator<void> >::do_inter_process_publish(const rclcpp::Publisher<statistics_msgs::msg::MetricsMessage_<std::allocator<void> >, std::allocator<void> >::ROSMessageType&)'    {_ZN6rclcpp9PublisherIN15statistics_msgs3msg15MetricsMessage_ISaIvEEES4_E24do_inter_process_publishERKS5_}
  [D] 'method void rclcpp::Publisher<statistics_msgs::msg::MetricsMessage_<std::allocator<void> >, std::allocator<void> >::do_intra_process_ros_message_publish(std::unique_ptr<statistics_msgs::msg::MetricsMessage_<std::allocator<void> >, std::default_delete<statistics_msgs::msg::MetricsMessage_<std::allocator<void> > > >)'    {_ZN6rclcpp9PublisherIN15statistics_msgs3msg15MetricsMessage_ISaIvEEES4_E36do_intra_process_ros_message_publishESt10unique_ptrIS5_St14default_deleteIS5_EE}
  [D] 'method std::shared_ptr<const statistics_msgs::msg::MetricsMessage_<std::allocator<void> > > rclcpp::Publisher<statistics_msgs::msg::MetricsMessage_<std::allocator<void> >, std::allocator<void> >::do_intra_process_ros_message_publish_and_return_shared(std::unique_ptr<statistics_msgs::msg::MetricsMessage_<std::allocator<void> >, std::default_delete<statistics_msgs::msg::MetricsMessage_<std::allocator<void> > > >)'    {_ZN6rclcpp9PublisherIN15statistics_msgs3msg15MetricsMessage_ISaIvEEES4_E54do_intra_process_ros_message_publish_and_return_sharedESt10unique_ptrIS5_St14default_deleteIS5_EE}
  [D] 'method std::unique_ptr<statistics_msgs::msg::MetricsMessage_<std::allocator<void> >, std::default_delete<statistics_msgs::msg::MetricsMessage_<std::allocator<void> > > > rclcpp::Publisher<statistics_msgs::msg::MetricsMessage_<std::allocator<void> >, std::allocator<void> >::duplicate_ros_message_as_unique_ptr(const rclcpp::Publisher<statistics_msgs::msg::MetricsMessage_<std::allocator<void> >, std::allocator<void> >::ROSMessageType&)'    {_ZN6rclcpp9PublisherIN15statistics_msgs3msg15MetricsMessage_ISaIvEEES4_E35duplicate_ros_message_as_unique_ptrERKS5_}
  [D] 'method virtual void rclcpp::Publisher<statistics_msgs::msg::MetricsMessage_<std::allocator<void> >, std::allocator<void> >::post_init_setup(rclcpp::node_interfaces::NodeBaseInterface*, const std::string&, const rclcpp::QoS&, const rclcpp::PublisherOptionsWithAllocator<std::allocator<void> >&)'    {_ZN6rclcpp9PublisherIN15statistics_msgs3msg15MetricsMessage_ISaIvEEES4_E15post_init_setupEPNS_15node_interfaces17NodeBaseInterfaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_3QoSERKNS_29PublisherOptionsWithAllocatorIS4_EE}
    note that this removes an entry from the vtable of class rclcpp::Publisher<statistics_msgs::msg::MetricsMessage_<std::allocator<void> >, std::allocator<void> >
  [D] 'method void rclcpp::Publisher<statistics_msgs::msg::MetricsMessage_<std::allocator<void> >, std::allocator<void> >::publish<statistics_msgs::msg::MetricsMessage_<std::allocator<void> > >(const statistics_msgs::msg::MetricsMessage_<std::allocator<void> >&)'    {_ZN6rclcpp9PublisherIN15statistics_msgs3msg15MetricsMessage_ISaIvEEES4_E7publishIS5_EENSt9enable_ifIXaasrN23rosidl_generator_traits10is_messageIT_EE5valuesrSt7is_sameISB_S5_E5valueEvE4typeERKSB_}
  [D] 'method void rclcpp::Publisher<statistics_msgs::msg::MetricsMessage_<std::allocator<void> >, std::allocator<void> >::publish<statistics_msgs::msg::MetricsMessage_<std::allocator<void> > >(std::unique_ptr<statistics_msgs::msg::MetricsMessage_<std::allocator<void> >, std::default_delete<statistics_msgs::msg::MetricsMessage_<std::allocator<void> > > >)'    {_ZN6rclcpp9PublisherIN15statistics_msgs3msg15MetricsMessage_ISaIvEEES4_E7publishIS5_EENSt9enable_ifIXaasrN23rosidl_generator_traits10is_messageIT_EE5valuesrSt7is_sameISB_S5_E5valueEvE4typeESt10unique_ptrISB_St14default_deleteIS5_EE}
  [D] 'method virtual rclcpp::Publisher<statistics_msgs::msg::MetricsMessage_<std::allocator<void> >, std::allocator<void> >::~Publisher()'    {_ZN6rclcpp9PublisherIN15statistics_msgs3msg15MetricsMessage_ISaIvEEES4_ED0Ev}
    note that this removes an entry from the vtable of class rclcpp::Publisher<statistics_msgs::msg::MetricsMessage_<std::allocator<void> >, std::allocator<void> >
  [D] 'method virtual rclcpp::Publisher<statistics_msgs::msg::MetricsMessage_<std::allocator<void> >, std::allocator<void> >::~Publisher()'    {_ZN6rclcpp9PublisherIN15statistics_msgs3msg15MetricsMessage_ISaIvEEES4_ED2Ev, aliases _ZN6rclcpp9PublisherIN15statistics_msgs3msg15MetricsMessage_ISaIvEEES4_ED1Ev}
    note that this removes an entry from the vtable of class rclcpp::Publisher<statistics_msgs::msg::MetricsMessage_<std::allocator<void> >, std::allocator<void> >
  [D] 'method rcl_publisher_options_t rclcpp::PublisherOptionsWithAllocator<std::allocator<void> >::to_rcl_publisher_options<statistics_msgs::msg::MetricsMessage_<std::allocator<void> > >(const rclcpp::QoS&) const'    {_ZNK6rclcpp29PublisherOptionsWithAllocatorISaIvEE24to_rcl_publisher_optionsIN15statistics_msgs3msg15MetricsMessage_IS1_EEEE23rcl_publisher_options_sRKNS_3QoSE}
  [D] 'method void rclcpp::Subscription<rosgraph_msgs::msg::Clock_<std::allocator<void> >, std::allocator<void>, rosgra
... (report truncated; see the full report in the workflow run artifacts)
✅ librclcpp_action.so — full abidiff report

Compared:

  • Base: lib-base/librclcpp_action.so
  • Head: lib-pr/librclcpp_action.so @ 861c0dc
(empty report — no differences printed by abidiff)
❌ librclcpp_lifecycle.so — full abidiff report

Compared:

  • Base: lib-base/librclcpp_lifecycle.so
  • Head: lib-pr/librclcpp_lifecycle.so @ 861c0dc
Functions changes summary: 0 Removed, 2 Changed (91 filtered out), 0 Added functions
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable

2 functions with some indirect sub-type change:

  [C] 'method virtual rclcpp::NodeOptions::~NodeOptions()' at node_options.hpp:73:1 has some indirect sub-type changes:
    implicit parameter 0 of type 'rclcpp::NodeOptions*' has sub-type changes:
      in pointed to type 'class rclcpp::NodeOptions' at node_options.hpp:36:1:
        type size hasn't changed
        no member function changes (3 filtered);
        1 data member deletion:
          'bool enable_topic_statistics_', at offset 728 (in bits) at node_options.hpp:458:1
        2 data member changes:
          'bool start_parameter_services_' offset changed from 736 to 728 (in bits) (by -8 bits)
          'bool start_parameter_event_publisher_' offset changed from 744 to 736 (in bits) (by -8 bits)

  [C] 'method rclcpp_lifecycle::LifecycleNode::LifecycleNode(const std::string&, const rclcpp::NodeOptions&, bool)' at lifecycle_node.cpp:56:1 has some indirect sub-type changes:
    implicit parameter 0 of type 'rclcpp_lifecycle::LifecycleNode*' has sub-type changes:
      in pointed to type 'class rclcpp_lifecycle::LifecycleNode' at lifecycle_node.hpp:125:1:
        type size hasn't changed
        no base class change (1 filtered);
        no member function changes (5 filtered);
        no data member change (1 filtered);


Updated for commit 861c0dc · suppressions: /home/runner/work/_temp/ros2-abi-suppressions.txt

@sloretz

sloretz commented Sep 25, 2026

Copy link
Copy Markdown
Contributor

Don't forget to update https://github.com/ros2/ros2_documentation/blob/rolling/source/ROS-Framework/interfaces/topics/About-Topic-Statistics.rst !

@mjcarroll

Copy link
Copy Markdown
Member

I think that we should probably also make a discourse post about this after we remove it. I don't think anyone will be impacted, but better to be overly-communicative.

@jmachowinski

Copy link
Copy Markdown
Collaborator Author

Pulls: #3203, ros2/demos#812, ros2/ros2#1878
Gist: https://gist.githubusercontent.com/jmachowinski/e49d75da4194669775c6a8399d3cbc0b/raw/f2813877601fd006882ba79606edd49b3eb01d0b/ros2.repos
BUILD args:
TEST args:
ROS Distro: rolling
Job: ci_launcher
ci_launcher ran: https://ci.ros2.org/job/ci_launcher/20538

  • Linux Build Status
  • Linux-aarch64 Build Status
  • Linux-rhel Build Status
  • Windows Build Status

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants