From c3dcc1a34775de707f638c03419c6ca687e4ff6c Mon Sep 17 00:00:00 2001
From: Manuela Kuhn <manuela.kuhn@desy.de>
Date: Thu, 30 Jul 2015 11:37:30 +0200
Subject: [PATCH] Set linger=0 on zmq socket close

---
 ZeroMQTunnel/fileMover.py      | 12 ++++++------
 ZeroMQTunnel/receiver.py       | 13 ++++---------
 ZeroMQTunnel/watcher_lsyncd.py |  4 ++--
 3 files changed, 12 insertions(+), 17 deletions(-)

diff --git a/ZeroMQTunnel/fileMover.py b/ZeroMQTunnel/fileMover.py
index adbc5283..17dd869a 100644
--- a/ZeroMQTunnel/fileMover.py
+++ b/ZeroMQTunnel/fileMover.py
@@ -92,9 +92,9 @@ class WorkerProcess():
             self.log.debug("Error was: " + str(trace))
 
         self.log.info("Closing sockets")
-        self.zmqDataStreamSocket.close()
-        self.routerSocket.close()
-        self.cleanerSocket.close()
+        self.zmqDataStreamSocket.close(0)
+        self.routerSocket.close(0)
+        self.cleanerSocket.close(0)
         self.zmqContextForWorker.destroy()
 
 
@@ -553,8 +553,8 @@ class FileMover():
 
 
     def stop(self):
-        self.messageSocket.close()
-        self.routerSocket.close()
+        self.messageSocket.close(0)
+        self.routerSocket.close(0)
 
 
 
@@ -606,7 +606,7 @@ class Cleaner():
             self.log.error("Stopping cleanerProcess due to unknown error condition.")
             self.log.debug("Error was: " + str(trace))
 
-        self.zmqCleanerSocket.close()
+        self.zmqCleanerSocket.close(0)
         self.zmqContextForCleaner.destroy()
 
 
diff --git a/ZeroMQTunnel/receiver.py b/ZeroMQTunnel/receiver.py
index 084c726a..48e369f2 100644
--- a/ZeroMQTunnel/receiver.py
+++ b/ZeroMQTunnel/receiver.py
@@ -255,7 +255,7 @@ class FileReceiver:
 
         self.log.debug("stopReceiving...")
         try:
-            zmqSocket.close()
+            zmqSocket.close(0)
             self.log.debug("closing zmqSocket...done.")
         except:
             self.log.error("closing zmqSocket...failed.")
@@ -265,7 +265,7 @@ class FileReceiver:
         self.exchangeSocket.send("Exit")
         # give the signal time to arrive
         time.sleep(0.1)
-        self.exchangeSocket.close()
+        self.exchangeSocket.close(0)
         self.log.debug("sending exit signal to thread...done")
 
         try:
@@ -406,14 +406,9 @@ class Coordinator:
                 except zmq.error.ContextTerminated:
                     break
 
-        self.log.debug("sending exit signal to thread...")
-        self.zmqliveViewerSocket.send("Exit")
-        # give the signal time to arrive
-        time.sleep(0.1)
-
         self.log.debug("Closing socket")
-        self.receiverExchangeSocket.close()
-        self.zmqliveViewerSocket.close()
+        self.receiverExchangeSocket.close(0)
+        self.zmqliveViewerSocket.close(0)
 
 
     def addFileToRingBuffer(self, filename, fileModTime):
diff --git a/ZeroMQTunnel/watcher_lsyncd.py b/ZeroMQTunnel/watcher_lsyncd.py
index 080c2c59..29700a83 100644
--- a/ZeroMQTunnel/watcher_lsyncd.py
+++ b/ZeroMQTunnel/watcher_lsyncd.py
@@ -129,7 +129,7 @@ class DirectoryWatcherHandler():
             raise Exception(e)
 
     def shuttingDown(self):
-        self.messageSocket.close()
+        self.messageSocket.close(0)
 
 
 def getDefaultConfig_logfilePath():
@@ -323,7 +323,7 @@ if __name__ == '__main__':
     except KeyboardInterrupt:
         logging.info("Keyboard interruption detected. Shuting down")
 
-    workers.close()
+    workers.close(0)
     directoryWatcher.shuttingDown()
     zmqContext.destroy()
 
-- 
GitLab