Skip to content

ryu.topology.switches cannot be stopped when observing links #197

@badcodebuilder

Description

@badcodebuilder

Problem

When running ryu.topology.switches and sending Ctrl+C, it will stuck. Command is here

ryu-manager ryu.topology.switches --observe-links
loading app ryu.topology.switches
loading app ryu.controller.ofp_handler
instantiating app ryu.topology.switches of Switches
instantiating app ryu.controller.ofp_handler of OFPHandler
^C

I analysis the code and find it stuck at

self.lldp_event.wait(timeout=timeout)

timeout=None makes it wait forever.

My solution

Add event set at the end of link_loop

self.link_event.wait(timeout=self.TIMEOUT_CHECK_PERIOD)

            ...
            self.link_event.wait(timeout=self.TIMEOUT_CHECK_PERIOD)
        if not self.lldp_event.is_set():
            self.lldp_event.set()

I do not know if my solution is correct when really being used, because I only test whether it can work or not, I do not connect it to Mininet.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions