diff -Nru neutron-2014.1.5/debian/changelog neutron-2014.1.5/debian/changelog --- neutron-2014.1.5/debian/changelog 2016-01-20 22:37:50.000000000 +0800 +++ neutron-2014.1.5/debian/changelog 2016-01-25 15:26:18.000000000 +0800 @@ -1,3 +1,12 @@ +neutron (1:2014.1.5-0ubuntu3) trusty; urgency=medium + + * neutron-openvswitch-agent stuck on 'q-agent-notifier-port-update_fanout-x' + is NOT_FOUND exception, this bug caused RabbitMQ HA(active + active) failover + in Icehouse not work with large scaled nova compute nodes. (LP: #1393391): + - d/p/fix-neutron-agent-fanout-queue-not-found-loop.patch + + -- Hui Xiang Mon, 25 Jan 2016 15:25:13 +0800 + neutron (1:2014.1.5-0ubuntu2) trusty; urgency=medium * Backport upstream proposed fix (LP: #1318721): diff -Nru neutron-2014.1.5/debian/patches/fix-neutron-agent-fanout-queue-not-found-loop.patch neutron-2014.1.5/debian/patches/fix-neutron-agent-fanout-queue-not-found-loop.patch --- neutron-2014.1.5/debian/patches/fix-neutron-agent-fanout-queue-not-found-loop.patch 1970-01-01 08:00:00.000000000 +0800 +++ neutron-2014.1.5/debian/patches/fix-neutron-agent-fanout-queue-not-found-loop.patch 2016-01-25 15:24:39.000000000 +0800 @@ -0,0 +1,29 @@ +Description: Fix-neutron-agent-fanout-queue-not-found-loop + + neutron-openvswitch-agent stuck on 'q-agent-notifier-port-update_fanout-x' + is NOT_FOUND exception, this bug caused RabbitMQ HA(active + active) failover + in Icehouse not work with large scaled nova compute nodes. + +Author: hui.xiang@canonical.com +Origin: other +Bug: https://bugs.launchpad.net/neutron/+bug/1393391 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +--- a/neutron/openstack/common/rpc/impl_kombu.py ++++ b/neutron/openstack/common/rpc/impl_kombu.py +@@ -792,6 +792,15 @@ + self.consume() + except greenlet.GreenletExit: + return ++ except Exception as e: ++ if e.code == 404: ++ # Redeclare queue if it is deleted due to HA cluster ++ # disconnection, LP#1393391 ++ LOG.warn(_("Queue NOT FOUND : %s"), e) ++ self.channel = self.connection.channel() ++ for consumer in self.consumers: ++ consumer.reconnect(self.channel) ++ + if self.consumer_thread is None: + self.consumer_thread = eventlet.spawn(_consumer_thread) + return self.consumer_thread diff -Nru neutron-2014.1.5/debian/patches/series neutron-2014.1.5/debian/patches/series --- neutron-2014.1.5/debian/patches/series 2016-01-20 22:29:06.000000000 +0800 +++ neutron-2014.1.5/debian/patches/series 2016-01-25 15:08:07.000000000 +0800 @@ -3,3 +3,4 @@ skip-ipv6-tests.patch use-concurrency.patch fix-reconnect-race-condition-with-rabbitmq-cluster.patch +fix-neutron-agent-fanout-queue-not-found-loop.patch