Comment 7 for bug 1933234

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (master)

Reviewed: https://review.opendev.org/c/openstack/neutron/+/799781
Committed: https://opendev.org/openstack/neutron/commit/6ce48c30bdc153e75c4b9b409203f472b065c11b
Submitter: "Zuul (22348)"
Branch: master

commit 6ce48c30bdc153e75c4b9b409203f472b065c11b
Author: Slawek Kaplonski <email address hidden>
Date: Wed Jul 7 12:00:14 2021 +0200

    [L3] Use processing queue for network update events

    Router_info's _process_internal_ports() method is the one which is
    manipulating router_info.internal_ports cache and network_update()
    method from the L3 agent is relying on that Router_info's cache to
    check if updated network is connected to the router or not.
    So they shouldn't be run together as that may cause some race conditions
    and unexpected issues, like e.g. described in the related bug.

    Until now, network_update event was the only one which was processed
    without using queue of events. And because of that such race condition
    as described above were possible.
    To fix that, this patch changes network_update method in the way that it
    now adds update events for each router hosted by agent to the queue.
    Those events for single routers are then processed, checks if network is
    actually connected to the router and if yes, schedules router update to
    be processed.

    Closes-Bug: #1933234
    Change-Id: I2efe66a7415f7a18fb85bd2536a1901e751d6203