eclipse-cyclonedds / cyclonedds

Eclipse Cyclone DDS project
https://projects.eclipse.org/projects/iot.cyclonedds
Other
798 stars 349 forks source link

Errors occur during high-load communication. #2022

Open xygyo77 opened 4 weeks ago

xygyo77 commented 4 weeks ago

Hello. I am validating an application using ros2 humble + cyclonedds. I was doing a high load (3-5subscriptions each for 250-300publishers,) communication test, and in a few tens of seconds I get.

terminate called after throwing an instance of ‘rclcpp::exceptions::RCLError’
  what(): could not create service: failed to create topic [rr/subscriber_170_2/set_parameters_atomicallyReply] because the function was given invalid parameters, at . /src/rmw_node.cpp:1796, at . /src/rcl/service.c:124
[ros2run]: Aborted

The source seems to be at the following ‘<<<---’. ros2/rmw_cyclonedds/rmw_cyclonedds_cpp/src/rmw_node.cpp::1796 line

void set_error_message_from_create_topic(dds_entity_t topic, const std::string & topic_name)
{
  assert(topic < 0);
  if (DDS_RETCODE_BAD_PARAMETER == topic) {
    const std::string error_msg = "failed to create topic [" + topic_name +
      "] because the function was given invalid parameters";
    RMW_SET_ERROR_MSG(error_msg.c_str()); // <<<---
  } else if (DDS_RETCODE_INCONSISTENT_POLICY == topic) {

occurred using SingleThreadedExecutor. Please let me know what you find out. This event has only occurred in high-load test programmes, so there may be a problem with the usage, but we share it just in case.

    +-
    |       +-- sub
    |       |
    | pub --+-- sub
    |       |
    |       +-- sub
250 | (remove all pub/subs)
 |  |       +-- sub
300 |       |
pubs| pub --+-- sub
    |       |
    |       +-- sub
    | (remove all pub/subs)
    |  <...>
    |
    +-

When changed to MultiThreadedExecutor,

 . /src/core/ddsc/src/dds_handles.c:430: dds_handle_drop_childref_and_pin: Assertion `(cf & HDL_REFCOUNT_MASK) > 0' failed.
[ros2run]: Aborted

The following is the result. This one is mentioned at https://github.com/eclipse-cyclonedds/cyclonedds/issues/1679.