You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2012/09/19 20:43:27 UTC

[18/50] git commit: [#4914] add TRAP signal to show the current task

[#4914] add TRAP signal to show the current task


Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/1c8c7011
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/1c8c7011
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/1c8c7011

Branch: refs/heads/master
Commit: 1c8c701177ee24329279e8c61f36a9eac8583f5e
Parents: 696ecd3
Author: Dave Brondsema <db...@geek.net>
Authored: Fri Sep 14 18:37:36 2012 +0000
Committer: Cory Johns <jo...@geek.net>
Committed: Fri Sep 14 19:45:26 2012 +0000

----------------------------------------------------------------------
 Allura/allura/command/taskd.py |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/1c8c7011/Allura/allura/command/taskd.py
----------------------------------------------------------------------
diff --git a/Allura/allura/command/taskd.py b/Allura/allura/command/taskd.py
index 70d1326..1a51719 100644
--- a/Allura/allura/command/taskd.py
+++ b/Allura/allura/command/taskd.py
@@ -31,6 +31,7 @@ class TaskdCommand(base.Command):
         base.log.info('Starting taskd, pid %s' % os.getpid())
         signal.signal(signal.SIGUSR1, self.graceful_restart)
         signal.signal(signal.SIGUSR2, self.graceful_stop)
+        signal.signal(signal.SIGTRAP, self.log_current_task)
         self.worker()
 
     def graceful_restart(self, signum, frame):
@@ -42,6 +43,9 @@ class TaskdCommand(base.Command):
         base.log.info('taskd pid %s recieved signal %s preparing to do a graceful stop' % (os.getpid(), signum))
         self.keep_running = False
 
+    def log_current_task(self, signum, frame):
+        base.log.info('taskd pid %s is currently handling task %s' % (os.getpid(), getattr(self, 'task', None)))
+
     def worker(self):
         from allura import model as M
         name = '%s pid %s' % (os.uname()[1], os.getpid())
@@ -82,15 +86,16 @@ class TaskdCommand(base.Command):
                 pylons.g.amq_conn.reset()
             try:
                 while self.keep_running:
-                    task = M.MonQTask.get(
+                    self.task = M.MonQTask.get(
                             process=name,
                             waitfunc=waitfunc,
                             only=only,
                             exclude=exclude)
-                    if task:
+                    if self.task:
                         # Build the (fake) request
-                        r = Request.blank('/--%s--/' % task.task_name, dict(task=task))
+                        r = Request.blank('/--%s--/' % self.task.task_name, dict(task=self.task))
                         list(wsgi_app(r.environ, start_response))
+                        self.task = None
             except Exception:
                 base.log.exception('taskd error; pausing for 10s before taking more tasks')
                 time.sleep(10)