Comment 13 for bug 1936959

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to ovn-octavia-provider (stable/ussuri)

Reviewed: https://review.opendev.org/c/openstack/ovn-octavia-provider/+/827077
Committed: https://opendev.org/openstack/ovn-octavia-provider/commit/ae16e697cdbaf11af903f47ac0a5e51ce90cd6bb
Submitter: "Zuul (22348)"
Branch: stable/ussuri

commit ae16e697cdbaf11af903f47ac0a5e51ce90cd6bb
Author: Fernando Royo <email address hidden>
Date: Mon Jan 31 14:13:29 2022 +0100

    Fix race condition retrieving logical router rows

    Using rows.values() via the ovsdbapp API is inherently
    racy as if there are multiple threads an add/delete can
    interfere, triggering a RuntimeError (dictionary changed
    size during iteration).

    In one case we now directly use lookup() as we were
    looking for a specific logical router.

    In the other two cases we create a new class to do the
    operation in a transaction, making it idempotent, since
    both need to iterate the returned list.

    Also changed the IDL notify code to use a frozen row to
    similary avoid any possible race condition with there.

    Closes-bug: #1936959
    (cherry picked from commit fab03e7c6d3f61afab2fb71ef70efa603f393de2)
    DependsOn: https://review.opendev.org/c/openstack/devstack/+/827155
    Change-Id: Icd4c83b4f63a90380e8532ec68120dc200f26062