-
Notifications
You must be signed in to change notification settings - Fork 9.8k
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