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