** Also affects: python-ovsdbapp (Ubuntu)
   Importance: Undecided
       Status: New

** Also affects: python-ovsdbapp (Ubuntu Hirsute)
   Importance: Undecided
       Status: New

** Also affects: python-ovsdbapp (Ubuntu Groovy)
   Importance: Undecided
       Status: New

** Also affects: python-ovsdbapp (Ubuntu Focal)
   Importance: Undecided
       Status: New

** Description changed:

  If ovsdb-server is down for a while and we are connecting via SSL,
  python-ovs will raise
  
  OpenSSL.SSL.SysCallError: (111, 'ECONNREFUSED')
  
  instead of just returning an error type. If this goes on for a bit, then
  the Connection thread will exit and be unrecoverable without restarting
  neutron-server.
+ 
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 
+ SRU:
+ 
+ [Impact]
+ Any intermittent connection issues between neutron-server and ovsdb nb/sb 
resulted in neutron-server not handling any more ovsdb transactions due to 
improper exception handling during reconnections. This further creates failures 
in post commit updates of resources and results in neutron/ovn db 
inconsistencies.
+ This fix catches the exceptions and retries to connect to ovsdb.
+ 
+ [Test plan]
+ * Deploy bionic-ussuri with neutron-server and ovn-central as HA using juju 
charms.
+ * Launch few instances and check if instances are in active state
+ * Simulated the network communication issues by modifying iptables related to 
ports 6641 6643 6644 16642
+ 
+   - On ovn-central/0, Dropping packets from ovn-central/2 and neutron-server/2
+   - On ovn-central/1, Dropping packets from ovn-central/2 and neutron-server/2
+   - On ovn-central/2, Dropping packets from ovn-central/0, ovn-central/1, 
neutron-server/0, neutron-server/1
+ 
+ DROP_PKTS_FROM_OVN_CENTRAL=
+ DROP_PKTS_FROM_NEUTRON_SERVER=
+ for ip in $DROP_PKTS_FROM_OVN_CENTRAL; do for port in 6641 6643 6644 16642; 
do iptables -I ufw-before-input 1 -s $ip -p tcp --dport $port -j REJECT; done; 
done
+ for ip in $DROP_PKTS_FROM_NEUTRON_SERVER; do for port in 6641 16642; do 
iptables -I ufw-before-input 1 -s $ip -p tcp --dport $port -j REJECT; done; done
+ 
+ * After a minute, drop the new REJECT rules added.
+ * Launch around 5 new VMs (5 to ensure some post creations to be landed on 
neutron-server/2) and look for Timeout Exceptions on neutron-server/2
+   If there are any Timeout exceptions, the neutron-server ovsdb connections 
are stale and not handling any more ovsdb transactions.
+   No Timeout exceptions and any port status updates from ovsdb implies 
neutron-server is successful in reconnection and started handling updates.
+ 
+ [Where problems could occur]
+ 
+ The fix passed the upstream zuul gates (tempest tests etc) and the patch
+ just adds reconnection tries to ovsdbapp. So not expecting to introduce
+ any regressions.

** Tags added: sts

** Changed in: python-ovsdbapp (Ubuntu Hirsute)
       Status: New => Fix Released

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1895727

Title:
  OpenSSL.SSL.SysCallError: (111, 'ECONNREFUSED') and Connection thread
  stops

To manage notifications about this bug go to:
https://bugs.launchpad.net/ovsdbapp/+bug/1895727/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to