mirror of
https://github.com/docker/compose.git
synced 2025-07-23 21:54:40 +02:00
Fix a race condition in ParallelStreamWriter.
Signed-off-by: Matthieu Nottale <matthieu.nottale@docker.com>
This commit is contained in:
parent
4ceeaad089
commit
17610e8d19
@ -4,6 +4,7 @@ from __future__ import unicode_literals
|
|||||||
import logging
|
import logging
|
||||||
import operator
|
import operator
|
||||||
import sys
|
import sys
|
||||||
|
from threading import Lock
|
||||||
from threading import Semaphore
|
from threading import Semaphore
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
|
|
||||||
@ -251,6 +252,7 @@ class ParallelStreamWriter(object):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
noansi = False
|
noansi = False
|
||||||
|
lock = Lock()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def set_noansi(cls, value=True):
|
def set_noansi(cls, value=True):
|
||||||
@ -274,6 +276,7 @@ class ParallelStreamWriter(object):
|
|||||||
self.stream.flush()
|
self.stream.flush()
|
||||||
|
|
||||||
def _write_ansi(self, obj_index, status):
|
def _write_ansi(self, obj_index, status):
|
||||||
|
self.lock.acquire()
|
||||||
position = self.lines.index(obj_index)
|
position = self.lines.index(obj_index)
|
||||||
diff = len(self.lines) - position
|
diff = len(self.lines) - position
|
||||||
# move up
|
# move up
|
||||||
@ -285,6 +288,7 @@ class ParallelStreamWriter(object):
|
|||||||
# move back down
|
# move back down
|
||||||
self.stream.write("%c[%dB" % (27, diff))
|
self.stream.write("%c[%dB" % (27, diff))
|
||||||
self.stream.flush()
|
self.stream.flush()
|
||||||
|
self.lock.release()
|
||||||
|
|
||||||
def _write_noansi(self, obj_index, status):
|
def _write_noansi(self, obj_index, status):
|
||||||
self.stream.write("{} {:<{width}} ... {}\r\n".format(self.msg, obj_index,
|
self.stream.write("{} {:<{width}} ... {}\r\n".format(self.msg, obj_index,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user