apollo icon indicating copy to clipboard operation
apollo copied to clipboard

跨主机通信时,存在情况下导致cyber reader、writer被disable且无法恢复

Open JinYiKang opened this issue 6 months ago • 0 comments

在进行主机A与主机B间的跨主机通信时,若在主机A开启cyber_monitor订阅主机A、主机B全部数据(数据量较大),一段时间后主机B的模块全部停止输出,且关闭cyber_monitor后无法恢复。排查发现原因为主机B上cyber的void TopologyManager::OnParticipantChange(const PartInfo& info)会根据eprosima::fastrtps::rtps::DISCOVERY_STATUS进行处理,当DISCOVERY_STATUSREMOVED_RTPSPARTICIPANTDROPPED_RTPSPARTICIPANT时,导致主机指定进程上所有的reader、writer被disable,且在DISCOVERY_STATUS恢复为DISCOVERED_RTPSPARTICIPANT后无法被恢复!(需要重启cyber)

Image

目前发现可行的处理方式是: 1)当DISCOVERY_STATUSREMOVED_RTPSPARTICIPANTDROPPED_RTPSPARTICIPANT时不做任何处理,简单粗暴

Image

2)应该也可行:当DISCOVERY_STATUSREMOVED_RTPSPARTICIPANTDROPPED_RTPSPARTICIPANT时保留reader、writer的注册信息,在DISCOVERY_STATUS恢复为DISCOVERED_RTPSPARTICIPANT后重新enable reader、writer

System information

  • Linux Ubuntu 20.04
  • Apollo version v8.0

JinYiKang avatar Jul 11 '25 07:07 JinYiKang