Преглед на файлове

Fix a race condition in ParallelStreamWriter.

Signed-off-by: Matthieu Nottale <[email protected]>
Matthieu Nottale преди 7 години
родител
ревизия
d36f222c7e
променени са 1 файла, в които са добавени 4 реда и са изтрити 0 реда
  1. 4 0
      compose/parallel.py

+ 4 - 0
compose/parallel.py

@@ -4,6 +4,7 @@ from __future__ import unicode_literals
 import logging
 import operator
 import sys
+from threading import Lock
 from threading import Semaphore
 from threading import Thread
 
@@ -251,6 +252,7 @@ class ParallelStreamWriter(object):
     """
 
     noansi = False
+    lock = Lock()
 
     @classmethod
     def set_noansi(cls, value=True):
@@ -274,6 +276,7 @@ class ParallelStreamWriter(object):
         self.stream.flush()
 
     def _write_ansi(self, obj_index, status):
+        self.lock.acquire()
         position = self.lines.index(obj_index)
         diff = len(self.lines) - position
         # move up
@@ -285,6 +288,7 @@ class ParallelStreamWriter(object):
         # move back down
         self.stream.write("%c[%dB" % (27, diff))
         self.stream.flush()
+        self.lock.release()
 
     def _write_noansi(self, obj_index, status):
         self.stream.write("{} {:<{width}} ... {}\r\n".format(self.msg, obj_index,