From 766aba722b508dbb7956e066b2946a48359f1500 Mon Sep 17 00:00:00 2001
From: Piotr Maslanka <piotr.maslanka@henrietta.com.pl>
Date: Sun, 8 Oct 2017 04:47:37 +0200
Subject: [PATCH] o

---
 coolamqp/clustering/cluster.py | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/coolamqp/clustering/cluster.py b/coolamqp/clustering/cluster.py
index 5d77c96..741efb4 100644
--- a/coolamqp/clustering/cluster.py
+++ b/coolamqp/clustering/cluster.py
@@ -51,7 +51,14 @@ class Cluster(object):
             raise NotImplementedError(u'Multiple nodes not supported yet')
 
         self.node, = nodes
-        self.on_fail = on_fail
+
+        if self.on_fail is not None:
+            def decorated():
+                if not self.listener.terminating:
+                    on_fail()
+            self.on_fail = decorated
+        else:
+            self.on_fail = on_fail
 
     def declare(self, obj, persistent=False):
         """
@@ -176,10 +183,7 @@ class Cluster(object):
         self.snr = SingleNodeReconnector(self.node, self.attache_group, self.listener)
         self.snr.on_fail.add(lambda: self.events.put_nowait(ConnectionLost()))
         if self.on_fail is not None:
-            self.snr.on_fail.add(
-                (lambda snr, of: lambda: of() if not snr.terminating else None)(
-                    self.listener, self.on_fail)
-            )
+            self.snr.on_fail.add(self.on_fail)
 
         # Spawn a transactional publisher and a noack publisher
         self.pub_tr = Publisher(Publisher.MODE_CNPUB)
-- 
GitLab