Hard Reboot VM with multiple port lost QoS

Bug #1864630 reported by Nguyen Thanh Cong on 2020-02-25
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
neutron
Undecided
Nguyen Thanh Cong

Bug Description

I have a VM with multiple ports, assume port_one and port_two. Both port have QoS. When i hard reboot my VM, port_two still has QoS, port_one loses.

https://review.opendev.org/#/c/690098/11
https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py#L1630
It because both ports are located in ports_re_added. It will loop through the ports. port_one is iterated first, events ['re_added'] is assigned port_one, events ['removed'] is assigned port_two. In the second loop, events ['re_added'] is set to port_two instead of adding port_two to list. So after the loop, only port_two is left in events ['re_added'].

Reproduce:
- Create VM with multi port
- Hard Reboot Server
- Check QoS with command ovs-vsctl list interface <port>

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

Fix proposed to branch: master
Review: https://review.opendev.org/709687

Changed in neutron:
assignee: nobody → Nguyen Thanh Cong (congnt95)
status: New → In Progress
tags: added: qos
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (master)

Reviewed: https://review.opendev.org/709687
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=5600163e9b4fb89b1525e9e415b1fedbe9526501
Submitter: Zuul
Branch: master

commit 5600163e9b4fb89b1525e9e415b1fedbe9526501
Author: Nguyen Thanh Cong <email address hidden>
Date: Tue Feb 25 17:25:36 2020 +0700

    [OvS] Handle re_added multi ports

    Multiple ports are located in ports_re_added. Assume we have port_one
    and port_two. It will loop through the ports. Port_one is iterated
    first, events ['re_added'] is assigned port_one, events ['removed']
    is assigned port_two. In the second loop, events ['re_added'] is set
    to port_two instead of adding port_two to list. So after the loop,
    only port_two is left in events ['re_added'].

    Change-Id: If8edd29dd741f1688ffcac341fd58173539ba000
    Closes-Bug: #1864630

Changed in neutron:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron (stable/train)

Fix proposed to branch: stable/train
Review: https://review.opendev.org/714049

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

Reviewed: https://review.opendev.org/714049
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=22df4695049b8ee7b19859e5b0633bec29afc9a7
Submitter: Zuul
Branch: stable/train

commit 22df4695049b8ee7b19859e5b0633bec29afc9a7
Author: Nguyen Thanh Cong <email address hidden>
Date: Tue Feb 25 17:25:36 2020 +0700

    [OvS] Handle re_added multi ports

    Multiple ports are located in ports_re_added. Assume we have port_one
    and port_two. It will loop through the ports. Port_one is iterated
    first, events ['re_added'] is assigned port_one, events ['removed']
    is assigned port_two. In the second loop, events ['re_added'] is set
    to port_two instead of adding port_two to list. So after the loop,
    only port_two is left in events ['re_added'].

    Change-Id: If8edd29dd741f1688ffcac341fd58173539ba000
    Closes-Bug: #1864630
    (cherry picked from commit 5600163e9b4fb89b1525e9e415b1fedbe9526501)

tags: added: in-stable-train
tags: added: neutron-proactive-backport-potential
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron (stable/stein)

Fix proposed to branch: stable/stein
Review: https://review.opendev.org/751220

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron (stable/rocky)

Fix proposed to branch: stable/rocky
Review: https://review.opendev.org/751223

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron (stable/queens)

Fix proposed to branch: stable/queens
Review: https://review.opendev.org/751224

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

Reviewed: https://review.opendev.org/751220
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=2711ad5819d97146528ef94fccc61ae58915409b
Submitter: Zuul
Branch: stable/stein

commit 2711ad5819d97146528ef94fccc61ae58915409b
Author: Nguyen Thanh Cong <email address hidden>
Date: Tue Feb 25 17:25:36 2020 +0700

    [OvS] Handle re_added multi ports

    Multiple ports are located in ports_re_added. Assume we have port_one
    and port_two. It will loop through the ports. Port_one is iterated
    first, events ['re_added'] is assigned port_one, events ['removed']
    is assigned port_two. In the second loop, events ['re_added'] is set
    to port_two instead of adding port_two to list. So after the loop,
    only port_two is left in events ['re_added'].

    Change-Id: If8edd29dd741f1688ffcac341fd58173539ba000
    Closes-Bug: #1864630
    (cherry picked from commit 5600163e9b4fb89b1525e9e415b1fedbe9526501)
    (cherry picked from commit 22df4695049b8ee7b19859e5b0633bec29afc9a7)

tags: added: in-stable-stein
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (stable/queens)

Reviewed: https://review.opendev.org/751224
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=1b148c6839dfc0120ba17d6bb278f7399c873c5f
Submitter: Zuul
Branch: stable/queens

commit 1b148c6839dfc0120ba17d6bb278f7399c873c5f
Author: Nguyen Thanh Cong <email address hidden>
Date: Tue Feb 25 17:25:36 2020 +0700

    [OvS] Handle re_added multi ports

    Multiple ports are located in ports_re_added. Assume we have port_one
    and port_two. It will loop through the ports. Port_one is iterated
    first, events ['re_added'] is assigned port_one, events ['removed']
    is assigned port_two. In the second loop, events ['re_added'] is set
    to port_two instead of adding port_two to list. So after the loop,
    only port_two is left in events ['re_added'].

    Conflicts:
        neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py

    Change-Id: If8edd29dd741f1688ffcac341fd58173539ba000
    Closes-Bug: #1864630
    (cherry picked from commit 5600163e9b4fb89b1525e9e415b1fedbe9526501)
    (cherry picked from commit 22df4695049b8ee7b19859e5b0633bec29afc9a7)

tags: added: in-stable-queens
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (stable/rocky)

Reviewed: https://review.opendev.org/751223
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=489ec55094dafa1f151afbfac8fe5ff34fde99c1
Submitter: Zuul
Branch: stable/rocky

commit 489ec55094dafa1f151afbfac8fe5ff34fde99c1
Author: Nguyen Thanh Cong <email address hidden>
Date: Tue Feb 25 17:25:36 2020 +0700

    [OvS] Handle re_added multi ports

    Multiple ports are located in ports_re_added. Assume we have port_one
    and port_two. It will loop through the ports. Port_one is iterated
    first, events ['re_added'] is assigned port_one, events ['removed']
    is assigned port_two. In the second loop, events ['re_added'] is set
    to port_two instead of adding port_two to list. So after the loop,
    only port_two is left in events ['re_added'].

    Conflicts:
        neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/test_ovs_neutron_agent.py

    Change-Id: If8edd29dd741f1688ffcac341fd58173539ba000
    Closes-Bug: #1864630
    (cherry picked from commit 5600163e9b4fb89b1525e9e415b1fedbe9526501)
    (cherry picked from commit 22df4695049b8ee7b19859e5b0633bec29afc9a7)

tags: added: in-stable-rocky
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers