From 9bf5e01f1060064cd2d1e8265a99510c123f9606 Mon Sep 17 00:00:00 2001
From: Guido Trotter <ultrotter@google.com>
Date: Wed, 9 Jun 2010 17:24:15 +0100
Subject: [PATCH] _OpExecCallbacks abstract _AppendFeedback

Move some code to a decorated function rather than explicitely
acquiring/releasing the lock in AppendFeedback.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>
---
 lib/jqueue.py | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/lib/jqueue.py b/lib/jqueue.py
index 283827280..77512a984 100644
--- a/lib/jqueue.py
+++ b/lib/jqueue.py
@@ -446,6 +446,15 @@ class _OpExecCallbacks(mcpu.OpExecCbBase):
     finally:
       self._queue.release()
 
+  @locking.ssynchronized(_big_jqueue_lock)
+  def _AppendFeedback(self, timestamp, log_type, log_msg):
+    """Internal feedback append function, with locks
+
+    """
+    self._job.log_serial += 1
+    self._op.log.append((self._job.log_serial, timestamp, log_type, log_msg))
+    self._queue.UpdateJobUnlocked(self._job, replicate=False)
+
   def Feedback(self, *args):
     """Append a log entry.
 
@@ -461,14 +470,7 @@ class _OpExecCallbacks(mcpu.OpExecCbBase):
     # The time is split to make serialization easier and not lose
     # precision.
     timestamp = utils.SplitTime(time.time())
-
-    self._queue.acquire()
-    try:
-      self._job.log_serial += 1
-      self._op.log.append((self._job.log_serial, timestamp, log_type, log_msg))
-      self._queue.UpdateJobUnlocked(self._job, replicate=False)
-    finally:
-      self._queue.release()
+    self._AppendFeedback(timestamp, log_type, log_msg)
 
   def ReportLocks(self, msg):
     """Write locking information to the job.
-- 
GitLab