ros2 / demos

Apache License 2.0
515 stars 333 forks source link

talker/listener nodes with different DDS implementations are emitting warnings/errors #293

Open thomas-moulard opened 5 years ago

thomas-moulard commented 5 years ago

Bug report

Required Info:

fastrtps -> opensplice

When terminating the listener node by pressing CTRL+C, some errors appear in the publisher node.

No error appear if the publisher node terminates first.

$ RMW_IMPLEMENTATION=rmw_fastrtps_cpp ros2 run demo_nodes_cpp talker 
[...]
[INFO] [talker]: Publishing: 'Hello World: 26'
[INFO] [talker]: Publishing: 'Hello World: 27'
[INFO] [talker]: Publishing: 'Hello World: 28'
[INFO] [talker]: Publishing: 'Hello World: 29'
[INFO] [talker]: Publishing: 'Hello World: 30'
[INFO] [talker]: Publishing: 'Hello World: 31'
[INFO] [talker]: Publishing: 'Hello World: 32'

**** those messages appear when terminating the listener node
2018-12-11 22:37:51.465 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.466 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.467 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.467 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.467 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.467 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.467 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.467 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.467 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.468 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.468 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.468 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.468 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.468 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.468 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.469 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.469 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.469 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.469 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.470 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.470 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.470 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.470 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.470 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.471 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.471 [RTPS_MSG_IN Error] (ID:140439302366976) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
2018-12-11 22:37:51.472 [RTPS_MSG_IN Error] (ID:140439310759680) Bad encapsulation for KeyHash and status parameter list -> Function proc_Submsg_Data
[INFO] [talker]: Publishing: 'Hello World: 33'
$ RMW_IMPLEMENTATION=rmw_opensplice_cpp ros2 run demo_nodes_cpp listener
[INFO] [listener]: I heard: [Hello World: 25]
[INFO] [listener]: I heard: [Hello World: 26]
[INFO] [listener]: I heard: [Hello World: 27]
[INFO] [listener]: I heard: [Hello World: 28]
[INFO] [listener]: I heard: [Hello World: 29]
[INFO] [listener]: I heard: [Hello World: 30]
[INFO] [listener]: I heard: [Hello World: 31]
[INFO] [listener]: I heard: [Hello World: 32]
^C[INFO] [rclcpp]: signal_handler(signal_value=2)

fastrtps -> connext

When terminating the talker or listener node, some log messages appear in the listener node.

Terminating the talker or listener first does not make any difference. Similar output is always printed out in the listener node.

$ RMW_IMPLEMENTATION=rmw_fastrtps_cpp ros2 run demo_nodes_cpp talker
[INFO] [talker]: Publishing: 'Hello World: 1'
[INFO] [talker]: Publishing: 'Hello World: 2'
[INFO] [talker]: Publishing: 'Hello World: 3'
[INFO] [talker]: Publishing: 'Hello World: 4'
[INFO] [talker]: Publishing: 'Hello World: 5'
[INFO] [talker]: Publishing: 'Hello World: 6'
[INFO] [talker]: Publishing: 'Hello World: 7'
[INFO] [talker]: Publishing: 'Hello World: 8'
[INFO] [talker]: Publishing: 'Hello World: 9'
^C[INFO] [rclcpp]: signal_handler(signal_value=2)
$ RMW_IMPLEMENTATION=rmw_connext_cpp ros2 run demo_nodes_cpp listener 
RTI Data Distribution Service Non-commercial license is for academic, research, evaluation and personal us
e only. USE FOR COMMERCIAL PURPOSES IS PROHIBITED. See RTI_LICENSE.TXT for terms. Download free tools at r
ti.com/ncl. License issued to Non-Commercial User license@rti.com For non-production use only.
Expires on 00-jan-00 See www.rti.com for more information.
[INFO] [listener]: I heard: [Hello World: 2]
[INFO] [listener]: I heard: [Hello World: 3]
[INFO] [listener]: I heard: [Hello World: 4]
^C[INFO] [rclcpp]: signal_handler(signal_value=2)
PRESInterParticipant_removeRemoteParticipant:[Local Participant: ac1f17c3 8051 1] [Remote Participant: 1c1
 10f17c3 48800000 | Remote Endpoint: 0] Could not remove remote endpoint
PRESInterParticipant_removeRemoteParticipant:[Local Participant: ac1f17c3 8051 1] [Remote Participant: 1c1
 10f17c3 48800000 | Remote Endpoint: 0] Could not remove remote endpoint
PRESParticipant_removeRemoteParticipantFromBuiltinChannels:Failed to remove remote participant 10f17c3 488
00000 0 to inter participant channel
PRESParticipant_removeRemoteParticipant:!remove remote participant from builtin channels
DISCParticipantDiscoveryPlugin_removeRemoteParticipantI:!remove remote participant: 0X10F17C3,0X48800000,0
,0X1C1
DISCParticipantDiscoveryPlugin_removeRemoteParticipantsByCookie:!remove remote participant: 0X10F17C3,0X48
800000,0,0X1C1
DISCSimpleParticipantDiscoveryPluginPDFListener_onBeforeLocalParticipantDeleted:!remove remote participant

opensplice -> fastrtps

When killing the opensplice talker first, the fastrtps node prints out the same warnings than for fastrtps -> opensplice. In either case, the fastrtps node prints out errors while the opensplice node terminates quietly.

opensplice -> connext

Sporadically, the warning message "unique topic attempted to be added twice, ignoring" when starting the node.

~/ros2-linux$ RMW_IMPLEMENTATION=rmw_connext_cpp ros2 run demo_nodes_cpp listener
RTI Data Distribution Service Non-commercial license is for academic, research, evaluation and personal us
e only. USE FOR COMMERCIAL PURPOSES IS PROHIBITED. See RTI_LICENSE.TXT for terms. Download free tools at r
ti.com/ncl. License issued to Non-Commercial User license@rti.com For non-production use only.
Expires on 00-jan-00 See www.rti.com for more information.
[WARN] [rmw_connext_shared_cpp]: unique topic attempted to be added twice, ignoring
[WARN] [rmw_connext_shared_cpp]: unique topic attempted to be added twice, ignoring
[WARN] [rmw_connext_shared_cpp]: unique topic attempted to be added twice, ignoring
[INFO] [listener]: I heard: [Hello World: 1]
[INFO] [listener]: I heard: [Hello World: 2]
[INFO] [listener]: I heard: [Hello World: 3]
[INFO] [listener]: I heard: [Hello World: 4]
[INFO] [listener]: I heard: [Hello World: 5]
[INFO] [listener]: I heard: [Hello World: 6]

connext -> fastrtps

The connext talker node is printing out the same message "Could not remove remote endpoint" than the fastrtps -> connext scenario. In this case, the talker prints out the error message.

The error message is printed out independently of whether the talker or listener is terminated first.

connext -> opensplice

Talker prints out from time to times:

[WARN] [rmw_connext_shared_cpp]: unique topic attempted to be added twice, ignoring

Behavior seems identical to opensplice -> connext scenario.

Similar behavior can be observed with demo_nodes_py nodes.

MiguelCompany commented 5 years ago

For fastrtps <-> connext cases, we found Connext could be too restrictive about part of the guidPrefix. We solved the error output problems on eProsima/Fast-RTPS#353, that has just been merged on master.

For fastrtps <-> opensplice cases, it has been reported on eProsima/Fast-RTPS#142. Fast-RTPS does not yet support key-only data submessages. Opensplice sends key-only data messages to inform its endpoints dissapeared.

MiguelCompany commented 5 years ago

For fastrtps <-> opensplice cases, this has been solved by eProsima/Fast-RTPS#371, which will be included on release 1.7.1 (eProsima/Fast-RTPS#393).