yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #82146
[Bug 1870313] [NEW] "send_ip_addr_adv_notif" can't use eventlet when called from "keepalived_state_change"
Public bug reported:
"keepalived_state_change" monitor does not use eventlet but normal
Python threads. When "send_ip_addr_adv_notif" is called from inside the
monitor, the arping command is never sent because the eventlet thread
does not start. In order to be able to be called from this process, this
method should also have an alternative implementation using "threading".
This should have been captured by
"TestMonitorDaemon.test_new_fip_sends_garp", but there is a problem in
the implementation of this test. This test created two namespaces with a
veth interface connecting both. The "keepalived_state_change" monitor is
set to capture the events in the first namespace and the interface
created inside. The test expects the monitor to send a GARP when a new
IP address is added to the monitored interface. But this agent does not
send a GARP from the monitored interface if a new IP address is set but
from any other interface in this namespace [1].
This test use to pass because when the "ip neigh" is checked the second time, the "expected_ip" address is in the second namespace ARP table. This is because when the test asserts there is no ping and then sets the IP address on the interface, the last ping is replied by the interface:
http://paste.openstack.org/show/791516/
This will, not intentionally, populate the ARP table in the second
namespace but the GARP was not sent by the "keepalived_state_change"
monitor.
[1]
https://github.com/openstack/neutron/blob/8ee34655b8757086c03feecfda100333f47ed810/neutron/agent/l3/keepalived_state_change.py#L90
** Affects: neutron
Importance: Undecided
Assignee: Rodolfo Alonso (rodolfo-alonso-hernandez)
Status: New
** Changed in: neutron
Assignee: (unassigned) => Rodolfo Alonso (rodolfo-alonso-hernandez)
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1870313
Title:
"send_ip_addr_adv_notif" can't use eventlet when called from
"keepalived_state_change"
Status in neutron:
New
Bug description:
"keepalived_state_change" monitor does not use eventlet but normal
Python threads. When "send_ip_addr_adv_notif" is called from inside
the monitor, the arping command is never sent because the eventlet
thread does not start. In order to be able to be called from this
process, this method should also have an alternative implementation
using "threading".
This should have been captured by
"TestMonitorDaemon.test_new_fip_sends_garp", but there is a problem in
the implementation of this test. This test created two namespaces with
a veth interface connecting both. The "keepalived_state_change"
monitor is set to capture the events in the first namespace and the
interface created inside. The test expects the monitor to send a GARP
when a new IP address is added to the monitored interface. But this
agent does not send a GARP from the monitored interface if a new IP
address is set but from any other interface in this namespace [1].
This test use to pass because when the "ip neigh" is checked the second time, the "expected_ip" address is in the second namespace ARP table. This is because when the test asserts there is no ping and then sets the IP address on the interface, the last ping is replied by the interface:
http://paste.openstack.org/show/791516/
This will, not intentionally, populate the ARP table in the second
namespace but the GARP was not sent by the "keepalived_state_change"
monitor.
[1]
https://github.com/openstack/neutron/blob/8ee34655b8757086c03feecfda100333f47ed810/neutron/agent/l3/keepalived_state_change.py#L90
To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1870313/+subscriptions
Follow ups