OpenStack Networking (Neutron)
Go to file
Rodolfo Alonso Hernandez e753dad6bf Process DHCP events in order if related
When processing port events (create, update, delete), the port
provisioning (port creation) has priority over the other events [1].
As reported in the related bug, if a port deletion with an IP
address and another port creation with the same IP address arrive
to the DHCP agent, those events can be processed in the same queue.

Because of the creation event priority, even when this event arrived
after the deletion event, it will be processed first. That will
clash with the DHCP agent cache, that contains a port (not deleted
yet) with the same IP address. That will trigger an unwanted resync.

This patch implements a specific logic to store the events in
"ResourceProcessingQueue" (that uses "PriorityQueue" [2]). When
a port event arrives, the event comparison method checks the
(subnet, fixed_ips) tuple set of both elements. If there is a
coincidence, that means those ports are the same or are using
the same IP addreses (the race condition explained in the bug).
In this case, the priority is defined only by the timestamp;
that means the events are processed in order of arrival.

Because the Neutron server do not allow to have two ports in the
same subnet with the same IP address, the order of the events is
guaranteed. In the case explained in the bug, the deletion event
will be processed first.

[1]https://review.opendev.org/c/openstack/neutron/+/626830
[2]https://docs.python.org/3/library/queue.html#queue.PriorityQueue

Closes-Bug: #1913723

Conflicts:
      neutron/agent/dhcp/agent.py
      neutron/tests/unit/agent/dhcp/test_agent.py

Change-Id: I89438feae3c0244f6da5e6a2a035d45b956ac247
(cherry picked from commit f3c229b9cc)
2021-02-10 08:52:47 +00:00
api-ref Fix some typos 2016-06-28 22:46:19 +02:00
bin Use os-xenapi for neutron when XenServer as hypervisor 2017-03-30 18:33:37 +00:00
devstack Add l3 conntrack helper to devstack plugin 2019-09-16 12:23:35 +00:00
doc Remove "vf_management" and "vf_extended_management" checks 2020-09-17 08:07:24 +00:00
etc Drop invalid rootwrap filters 2020-10-01 14:59:18 +00:00
neutron Process DHCP events in order if related 2021-02-10 08:52:47 +00:00
playbooks Add ensure-tox in functional job 2020-06-22 16:32:21 +00:00
rally-jobs Rally task definition for port binding scenario 2019-07-08 13:25:46 +02:00
releasenotes Merge "ovs firewall: fix mac learning on the ingress rule table when ovs offload enabled" into stable/train 2020-11-01 11:33:21 +00:00
roles Fix log directory permissions for functional job 2019-08-03 12:06:32 +00:00
tools Set rootwrap daemon timeout for fullstack and functional tests 2019-11-04 09:51:09 +00:00
.coveragerc Cleanup coverage configuration 2016-10-17 17:06:19 +05:30
.gitignore Removing existing dirs from .gitignore 2019-05-31 13:35:30 +00:00
.gitreview Update .gitreview for stable/train 2019-09-26 09:44:06 +00:00
.mailmap Add mailmap entry 2014-05-16 13:40:04 -04:00
.pylintrc Fix pylint R1717 (consider-using-dict-comprehension) refactor messages 2019-03-14 23:19:58 +00:00
.stestr.conf Fix post gate hook to accommodate for new os-testr 2017-09-12 14:20:12 -06:00
.zuul.yaml Merge "Limit usage of resources in the fullstack tests job" into stable/train 2021-02-04 16:13:56 +00:00
CONTRIBUTING.rst Update link for contribution 2017-08-31 16:44:51 +02:00
HACKING.rst Update the documentation link for doc migration 2017-07-22 18:46:13 +09:00
LICENSE Adding Apache Version 2.0 license file. This is the official license agreement under which Quantum code is available to 2011-08-08 12:31:04 -07:00
README.rst Update mailinglist from dev to discuss 2018-12-12 12:44:12 +08:00
TESTING.rst Dropping lower constraints testing (stable Train) 2021-01-12 15:49:54 +00:00
babel.cfg Use babel to generate translation file 2013-01-24 00:20:32 +08:00
bindep.txt Add libffi-dev to bindep.txt 2017-06-13 19:26:49 +00:00
requirements.txt [train] Fix tests with new pip resolver 2021-01-05 12:20:12 +01:00
setup.cfg Merge "Agent - Conntrack Helper" 2019-09-15 01:39:25 +00:00
setup.py Updated from global requirements 2017-03-04 11:19:58 +00:00
test-requirements.txt [train] Fix tests with new pip resolver 2021-01-05 12:20:12 +01:00
tox.ini Merge "Limit usage of resources in the fullstack tests job" into stable/train 2021-02-04 16:13:56 +00:00

README.rst

Team and repository tags

image

Welcome!

To learn more about neutron:

Get in touch via email. Use [Neutron] in your subject.

To learn how to contribute:

CONTRIBUTING.rst