Author: stsp Date: Wed Sep 19 22:17:07 2012 New Revision: 1387798 URL: http://svn.apache.org/viewvc?rev=1387798&view=rev Log: * subversion/tests/cmdline/svntest/main.py (TestSpawningThread): Protect access to the tests job queue with a mutex. This will hopefully fix misaligned progress bars observed on the Windows build bot since r1387534. The best explanation I can think of is that race conditions could cause an incorrect queue size passed to progress_func().
Modified: subversion/trunk/subversion/tests/cmdline/svntest/main.py Modified: subversion/trunk/subversion/tests/cmdline/svntest/main.py URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/svntest/main.py?rev=1387798&r1=1387797&r2=1387798&view=diff ============================================================================== --- subversion/trunk/subversion/tests/cmdline/svntest/main.py (original) +++ subversion/trunk/subversion/tests/cmdline/svntest/main.py Wed Sep 19 22:17:07 2012 @@ -1232,6 +1232,7 @@ class TestSpawningThread(threading.Threa def __init__(self, queue, progress_func, tests_total): threading.Thread.__init__(self) self.queue = queue + self.queue_lock = threading.Lock() self.results = [] self.progress_func = progress_func self.tests_total = tests_total @@ -1239,16 +1240,21 @@ class TestSpawningThread(threading.Threa def run(self): while True: try: + self.queue_lock.acquire() next_index = self.queue.get_nowait() except queue.Empty: return + finally: + self.queue_lock.release() self.run_one(next_index) # signal progress if self.progress_func: - self.progress_func(self.tests_total - self.queue.qsize(), - self.tests_total) + self.queue_lock.acquire() + qsize = self.queue.qsize() + self.queue_lock.release() + self.progress_func(self.tests_total - qsize, self.tests_total) def run_one(self, index): command = os.path.abspath(sys.argv[0])