Public bug reported: In case when during spawning of the setup of dhcp agent, there will be iptabls error "Another app is currently holding the xtables lock" tests like neutron.tests.functional.agent.test_dhcp_agent.DHCPAgentOVSTestCase.test_enable_isolated_metadata_for_subnet_create_delete and neutron.tests.functional.agent.test_dhcp_agent.DHCPAgentOVSTestCase.test_force_metadata_for_subnet_create_delete may fail with error like below:
2021-03-30 20:57:01.829 61168 DEBUG neutron.agent.linux.dhcp [req-1d14cf38-d8a8-4f3a-858d-4ab6e9b888da - - - - -] Previous DHCP port information: <MagicMock name='DhcpPluginApi().create_dhcp_port()' id='139833378414448'>. Updated DHCP port information: <Mock name='DhcpPluginApi().get_dhcp_port()' id='139833360938464'>. _check_dhcp_port_subnet /home/zuul/src/opendev.org/openstack/neutron/neutron/agent/linux/dhcp.py:1582 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent [req-1d14cf38-d8a8-4f3a-858d-4ab6e9b888da - - - - -] Unable to enable dhcp for 24e1cf2a-a60d-41a9-9666-a38a90117cf9.: TypeError: can not serialize 'MagicMock' object 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent Traceback (most recent call last): 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/neutron/agent/dhcp/agent.py", line 227, in call_driver 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent rv = getattr(driver, action)(**action_kwargs) 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/neutron/agent/linux/dhcp.py", line 266, in enable 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent common_utils.wait_until_true(self._enable, timeout=300) 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/neutron/common/utils.py", line 707, in wait_until_true 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent while not predicate(): 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/neutron/agent/linux/dhcp.py", line 278, in _enable 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent interface_name = self.device_manager.setup(self.network) 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/neutron/agent/linux/dhcp.py", line 1692, in setup 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent if ip_lib.ensure_device_is_ready(interface_name, 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/neutron/agent/linux/ip_lib.py", line 963, in ensure_device_is_ready 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent if not dev.link.exists or not dev.link.address: 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/neutron/agent/linux/ip_lib.py", line 500, in exists 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent return privileged.interface_exists(self.name, self._parent.namespace) 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/.tox/dsvm-functional/lib/python3.8/site-packages/oslo_privsep/priv_context.py", line 247, in _wrap 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent return self.channel.remote_call(name, args, kwargs) 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/.tox/dsvm-functional/lib/python3.8/site-packages/oslo_privsep/daemon.py", line 214, in remote_call 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent result = self.send_recv((Message.CALL.value, name, args, kwargs)) 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/.tox/dsvm-functional/lib/python3.8/site-packages/oslo_privsep/comm.py", line 170, in send_recv 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent self.writer.send((myid, msg)) 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/.tox/dsvm-functional/lib/python3.8/site-packages/oslo_privsep/comm.py", line 54, in send 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent buf = msgpack.packb(msg, use_bin_type=True, 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/.tox/dsvm-functional/lib/python3.8/site-packages/msgpack/__init__.py", line 35, in packb 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent return Packer(**kwargs).pack(o) 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "msgpack/_packer.pyx", line 292, in msgpack._cmsgpack.Packer.pack 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "msgpack/_packer.pyx", line 298, in msgpack._cmsgpack.Packer.pack 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "msgpack/_packer.pyx", line 295, in msgpack._cmsgpack.Packer.pack 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "msgpack/_packer.pyx", line 264, in msgpack._cmsgpack.Packer._pack 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "msgpack/_packer.pyx", line 264, in msgpack._cmsgpack.Packer._pack 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "msgpack/_packer.pyx", line 264, in msgpack._cmsgpack.Packer._pack 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "msgpack/_packer.pyx", line 289, in msgpack._cmsgpack.Packer._pack 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent TypeError: can not serialize 'MagicMock' object Example of such error https://e9a79c0822aeb557489f-25bbaed08360ac14bb61b985414d524a.ssl.cf2.rackcdn.com/783743/1/check/neutron-functional-with-uwsgi/6f0aa76/controller/logs/dsvm-functional-logs/neutron.tests.functional.agent.test_dhcp_agent.DHCPAgentOVSTestCase.test_enable_isolated_metadata_for_subnet_create_delete.txt It happens like that because in that test there is no mock of neutron.agent.linux.dhcp.DeviceManager._update_dhcp_port() method. Workflow of such test is like below: 1. Call DeviceManager.setup() method 2. This method as one of the first steps will call _update_dhcp_port which will replace dhcp port prepared for test with some other mock, 3. During first run "port" variable in DeviceManager.setup() method is correct so all will work fine but if we hit iptables xlock error, setup() method will be called again and 4. Now "port" local variable is already update by _update_dhcp_port method thus test setup() method will fail as interface_name is now wrong. ** Affects: neutron Importance: High Assignee: Slawek Kaplonski (slaweq) Status: Confirmed ** Tags: functional-tests gate-failure l3-ipam-dhcp -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to neutron. https://bugs.launchpad.net/bugs/1922684 Title: Functional dhcp agent tests fails to spawn metadata proxy Status in neutron: Confirmed Bug description: In case when during spawning of the setup of dhcp agent, there will be iptabls error "Another app is currently holding the xtables lock" tests like neutron.tests.functional.agent.test_dhcp_agent.DHCPAgentOVSTestCase.test_enable_isolated_metadata_for_subnet_create_delete and neutron.tests.functional.agent.test_dhcp_agent.DHCPAgentOVSTestCase.test_force_metadata_for_subnet_create_delete may fail with error like below: 2021-03-30 20:57:01.829 61168 DEBUG neutron.agent.linux.dhcp [req-1d14cf38-d8a8-4f3a-858d-4ab6e9b888da - - - - -] Previous DHCP port information: <MagicMock name='DhcpPluginApi().create_dhcp_port()' id='139833378414448'>. Updated DHCP port information: <Mock name='DhcpPluginApi().get_dhcp_port()' id='139833360938464'>. _check_dhcp_port_subnet /home/zuul/src/opendev.org/openstack/neutron/neutron/agent/linux/dhcp.py:1582 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent [req-1d14cf38-d8a8-4f3a-858d-4ab6e9b888da - - - - -] Unable to enable dhcp for 24e1cf2a-a60d-41a9-9666-a38a90117cf9.: TypeError: can not serialize 'MagicMock' object 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent Traceback (most recent call last): 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/neutron/agent/dhcp/agent.py", line 227, in call_driver 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent rv = getattr(driver, action)(**action_kwargs) 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/neutron/agent/linux/dhcp.py", line 266, in enable 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent common_utils.wait_until_true(self._enable, timeout=300) 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/neutron/common/utils.py", line 707, in wait_until_true 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent while not predicate(): 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/neutron/agent/linux/dhcp.py", line 278, in _enable 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent interface_name = self.device_manager.setup(self.network) 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/neutron/agent/linux/dhcp.py", line 1692, in setup 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent if ip_lib.ensure_device_is_ready(interface_name, 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/neutron/agent/linux/ip_lib.py", line 963, in ensure_device_is_ready 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent if not dev.link.exists or not dev.link.address: 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/neutron/agent/linux/ip_lib.py", line 500, in exists 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent return privileged.interface_exists(self.name, self._parent.namespace) 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/.tox/dsvm-functional/lib/python3.8/site-packages/oslo_privsep/priv_context.py", line 247, in _wrap 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent return self.channel.remote_call(name, args, kwargs) 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/.tox/dsvm-functional/lib/python3.8/site-packages/oslo_privsep/daemon.py", line 214, in remote_call 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent result = self.send_recv((Message.CALL.value, name, args, kwargs)) 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/.tox/dsvm-functional/lib/python3.8/site-packages/oslo_privsep/comm.py", line 170, in send_recv 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent self.writer.send((myid, msg)) 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/.tox/dsvm-functional/lib/python3.8/site-packages/oslo_privsep/comm.py", line 54, in send 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent buf = msgpack.packb(msg, use_bin_type=True, 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "/home/zuul/src/opendev.org/openstack/neutron/.tox/dsvm-functional/lib/python3.8/site-packages/msgpack/__init__.py", line 35, in packb 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent return Packer(**kwargs).pack(o) 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "msgpack/_packer.pyx", line 292, in msgpack._cmsgpack.Packer.pack 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "msgpack/_packer.pyx", line 298, in msgpack._cmsgpack.Packer.pack 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "msgpack/_packer.pyx", line 295, in msgpack._cmsgpack.Packer.pack 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "msgpack/_packer.pyx", line 264, in msgpack._cmsgpack.Packer._pack 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "msgpack/_packer.pyx", line 264, in msgpack._cmsgpack.Packer._pack 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "msgpack/_packer.pyx", line 264, in msgpack._cmsgpack.Packer._pack 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent File "msgpack/_packer.pyx", line 289, in msgpack._cmsgpack.Packer._pack 2021-03-30 20:57:01.852 61168 ERROR neutron.agent.dhcp.agent TypeError: can not serialize 'MagicMock' object Example of such error https://e9a79c0822aeb557489f-25bbaed08360ac14bb61b985414d524a.ssl.cf2.rackcdn.com/783743/1/check/neutron-functional-with-uwsgi/6f0aa76/controller/logs/dsvm-functional-logs/neutron.tests.functional.agent.test_dhcp_agent.DHCPAgentOVSTestCase.test_enable_isolated_metadata_for_subnet_create_delete.txt It happens like that because in that test there is no mock of neutron.agent.linux.dhcp.DeviceManager._update_dhcp_port() method. Workflow of such test is like below: 1. Call DeviceManager.setup() method 2. This method as one of the first steps will call _update_dhcp_port which will replace dhcp port prepared for test with some other mock, 3. During first run "port" variable in DeviceManager.setup() method is correct so all will work fine but if we hit iptables xlock error, setup() method will be called again and 4. Now "port" local variable is already update by _update_dhcp_port method thus test setup() method will fail as interface_name is now wrong. To manage notifications about this bug go to: https://bugs.launchpad.net/neutron/+bug/1922684/+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

