Reviewed: https://review.openstack.org/633618 Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=21cddc47b446fdfb5535b347c1d7825a04e02c62 Submitter: Zuul Branch: master
commit 21cddc47b446fdfb5535b347c1d7825a04e02c62 Author: Slawek Kaplonski <[email protected]> Date: Mon Jan 28 23:53:04 2019 +0100 Fix update of ports cache in router_info class RouterInfo class has got internal_ports cache which is updated in _process_internal_ports() method. There was an issue in this updates logic because it was iterating through enumerate local variable "internal_ports" which represents current router ports and if such current port was found in updated_ports list it was storred in RouterInfo().internal_ports variable under same index as was found in "internal_ports" local variable. This sometimes leads to an issue because same port can be stored under different index in internal_ports and RouterInfo().internal_ports lists thus wrong port in RouterInfo().internal_ports was overwritten. Such issue leads to problem with generating radvd config file because in ports cache list there was duplicate info about same port so radvd config file contained duplicate interface definitions too. This should be properly fixed by changing RouterInfo.internal_ports to be a dict instead of list of ports but such patch would be much bigger and (possibly) harded to backport to stable branches. Change-Id: I2e38457942518c8a3e07e606091bb6720317b77e Closes-Bug: #1813279 ** Changed in: neutron Status: In Progress => Fix Released -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to neutron. https://bugs.launchpad.net/bugs/1813279 Title: Race during adding and updating same port in L3 agent's info can generate wrong radvd config file Status in neutron: Fix Released Bug description: There is possibility that because of some race in processing adding/updating internal ports info in RouterInfo class, same port, with 2 different revisions and different subnets configured will be added to RouterInfo.internal_ports twice in RouterInfo._process_internal_ports method (https://github.com/openstack/neutron/blob/master/neutron/agent/l3/router_info.py#L544). If ports have got IPv6 gateway configured and radvd daemon should be started for such router, this may lead to generate radvd config file with duplicate interfaces, like: interface qr-29c030a8-26 { AdvSendAdvert on; MinRtrAdvInterval 30; MaxRtrAdvInterval 100; AdvLinkMTU 1500; AdvOtherConfigFlag on; prefix 2003:0:0:1::/64 { AdvOnLink on; AdvAutonomous on; }; prefix 2003::/64 { AdvOnLink on; AdvAutonomous on; }; };interface qr-29c030a8-26 { AdvSendAdvert on; MinRtrAdvInterval 30; MaxRtrAdvInterval 100; AdvLinkMTU 1500; AdvOtherConfigFlag on; prefix 2003::/64 { AdvOnLink on; AdvAutonomous on; }; }; In some cases this may lead to crash radvd daemon. See also https://bugzilla.redhat.com/show_bug.cgi?id=1630167 for more details. To manage notifications about this bug go to: https://bugs.launchpad.net/neutron/+bug/1813279/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : [email protected] Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp

