Race condition in Ha router updating port status
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
Fix Released
|
Medium
|
Kyle Mestery | ||
Juno |
Fix Released
|
Undecided
|
Unassigned | ||
Kilo |
Fix Released
|
Medium
|
Unassigned |
Bug Description
When L2 agent call 'get_devices_
reproduce progress(not always happen, but much time):
1. 'router-
2. 'router-
the gateway port status sometimes will always be BUILD
in 'get_device_
def get_device_
......
......
new_status = (q_const.
if port['status'] != new_status:
Changed in neutron: | |
assignee: | nobody → shihanzhang (shihanzhang) |
tags: | added: l3-ha |
Changed in neutron: | |
importance: | Undecided → Medium |
status: | New → Confirmed |
Changed in neutron: | |
assignee: | shihanzhang (shihanzhang) → Mathieu Rohon (mathieu-rohon) |
status: | Confirmed → In Progress |
tags: | added: kilo-rc-potential |
Changed in neutron: | |
assignee: | Mathieu Rohon (mathieu-rohon) → Kyle Mestery (mestery) |
Changed in neutron: | |
milestone: | none → liberty-1 |
status: | Fix Committed → Fix Released |
Changed in neutron: | |
milestone: | liberty-1 → 7.0.0 |
Hi,
I'm copy/pasting the description that mike kolesnik did on bug 1274160, since it seems to describe what's happening here.
I think this bug report will be a better place to track the faulty behavior of the status of HA ports.
Mike's description :
I saw a manifestation of the bug using HA router ports.
For me it happened in a 2 net node setup where the sequence of events was as such:
1. Port is bound to net node A
2. Port is bound to net node B (overwriting A's binding info)
3. B requests the port info
3.1. Port's status updated to BUILD
4. A requests the port info (port status not changed since it's already BUILD)
5. B reports port as UP
5.1. Port status updated to ACTIVE
6. B requests the port info (ancillary port treatment)
6.1. Port's status updated to BUILD
7. B reports port as UP (ancillary port treatment)
7.1. Port status updated to ACTIVE
8. A reports port as UP (ignored since it's "bound" on B)
9. A requests the port info (ancillary port treatment)
9.1. Port's status updated to BUILD
10. A reports port as UP (ancillary port treatment, ignored since it's "bound" on B)