From 6b5e50186b0e65858407c3ca8576c5d1d1f13e06 Mon Sep 17 00:00:00 2001
From: Guido Trotter <ultrotter@google.com>
Date: Wed, 19 Aug 2009 10:20:34 +0200
Subject: [PATCH] Convert ganeti-masterd to @utils.SignalHandled

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>
---
 daemons/ganeti-masterd | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/daemons/ganeti-masterd b/daemons/ganeti-masterd
index 57fa9ec8b..d2da39e93 100755
--- a/daemons/ganeti-masterd
+++ b/daemons/ganeti-masterd
@@ -108,14 +108,17 @@ class IOServer(SocketServer.UnixStreamServer):
     """
     self.request_workers.AddTask(self, request, client_address)
 
-  def serve_forever(self):
+  @utils.SignalHandled([signal.SIGINT, signal.SIGTERM])
+  def serve_forever(self, signal_handlers=None):
     """Handle one request at a time until told to quit."""
-    sighandler = utils.SignalHandler([signal.SIGINT, signal.SIGTERM])
-    try:
-      while not sighandler.called:
-        self.handle_request()
-    finally:
-      sighandler.Reset()
+    assert isinstance(signal_handlers, dict) and \
+           len(signal_handlers) > 0, \
+           "Broken SignalHandled decorator"
+    # Since we use SignalHandled only once, the resulting dict will map all
+    # signals to the same handler. We'll just use the first one.
+    sighandler = signal_handlers.values()[0]
+    while not sighandler.called:
+      self.handle_request()
 
   def server_cleanup(self):
     """Cleanup the server.
-- 
GitLab