Skip to content

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

@JinYiKang

Description

@JinYiKang

在进行主机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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions