Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better co-ordination of multiple controllers #3933

Merged
merged 4 commits into from
Aug 12, 2021

Conversation

mwutzke
Copy link
Contributor

@mwutzke mwutzke commented Aug 11, 2021

  • Ensure individual controllers start the first time, but using unique resources were required
  • Change the setup sequencing to ensure all controllers are running at the time the network is started

This will stop multiple Faucet instances trying to create
the same listening sockets, of which only instance 1 will succeed.
All the others will fail, causing a timeout / retry to occur.
Recent failures with some of the CI testing has highlighted
startup sequencing concerns with multiple Faucet controllers.

Taking a fresh look at the implementation, some optimizations
and consolidations can be made:

- ensure unique Event and Prometheus sockets (previous commit)
- perform all the loop-invariant setup outside of the loop
- ensure the Faucet/Gauge controllers are only started once
    for each instance required
- re-use these controllers within the test suite if there is
    a problem creating the Mininet environment
- ensure that all the controllers are started before starting
    the Mininet environment so that they all see the same
    sequence of events, when Mininet hosts start to join

This involves some refactoring of the existing logic, so that
operations / data structures local to _start_faucet() are all
managed within the method.
…aucetsdn#3925)"

This reverts commit c80441a.

Now that multiple controllers are starting up in sequence once more,
the test work-around can be removed.
The location where this is invoked has changed, and the details
about the Mininet topology are no longer known. Generally these
overloaded methods can be refactored to:

- perform the operation during the test phase, or
- use the pre_start_net() hook
@mwutzke mwutzke changed the title Better co-ordiation of multiplel controllers Better co-ordiation of multiple controllers Aug 11, 2021
@mwutzke mwutzke changed the title Better co-ordiation of multiple controllers Better co-ordination of multiple controllers Aug 11, 2021
@anarkiwi anarkiwi merged commit 256b4b3 into faucetsdn:master Aug 12, 2021
@mwutzke mwutzke deleted the multiControllers branch August 12, 2021 01:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants