-
Notifications
You must be signed in to change notification settings - Fork 9.9k
Open
Description
在进行主机A与主机B间的跨主机通信时,若在主机A开启cyber_monitor订阅主机A、主机B全部数据(数据量较大),一段时间后主机B的模块全部停止输出,且关闭cyber_monitor后无法恢复。排查发现原因为主机B上cyber的void TopologyManager::OnParticipantChange(const PartInfo& info)会根据eprosima::fastrtps::rtps::DISCOVERY_STATUS进行处理,当DISCOVERY_STATUS为REMOVED_RTPSPARTICIPANT或DROPPED_RTPSPARTICIPANT时,导致主机指定进程上所有的reader、writer被disable,且在DISCOVERY_STATUS恢复为DISCOVERED_RTPSPARTICIPANT后无法被恢复!(需要重启cyber)
目前发现可行的处理方式是:
1)当DISCOVERY_STATUS为REMOVED_RTPSPARTICIPANT或DROPPED_RTPSPARTICIPANT时不做任何处理,简单粗暴
2)应该也可行:当DISCOVERY_STATUS为REMOVED_RTPSPARTICIPANT或DROPPED_RTPSPARTICIPANT时保留reader、writer的注册信息,在DISCOVERY_STATUS恢复为DISCOVERED_RTPSPARTICIPANT后重新enable reader、writer
System information
- Linux Ubuntu 20.04
- Apollo version v8.0
Metadata
Metadata
Assignees
Labels
No labels