summaryrefslogtreecommitdiff
path: root/compose/parallel.py
diff options
context:
space:
mode:
authorJoffrey F <joffrey@docker.com>2016-12-19 20:20:03 -0800
committerJoffrey F <joffrey@docker.com>2017-01-04 11:28:30 -0800
commit04394b1d0a82f4507edc8863c4ab9cf64944f6d9 (patch)
treec872f8aaadc1067b839d190e1c0f2e629b42d548 /compose/parallel.py
parentf6edd610f36ec9f6ffdd16df970f3d6cefb1169d (diff)
Expand depends_on to allow different conditions (service_start, service_healthy)
Rework "up" and "start" to wait on conditional state of dependent services Add integration tests Signed-off-by: Joffrey F <joffrey@docker.com>
Diffstat (limited to 'compose/parallel.py')
-rw-r--r--compose/parallel.py7
1 files changed, 4 insertions, 3 deletions
diff --git a/compose/parallel.py b/compose/parallel.py
index 26718872..b2654dcf 100644
--- a/compose/parallel.py
+++ b/compose/parallel.py
@@ -165,13 +165,14 @@ def feed_queue(objects, func, get_deps, results, state):
for obj in pending:
deps = get_deps(obj)
- if any(dep in state.failed for dep in deps):
+ if any(dep[0] in state.failed for dep in deps):
log.debug('{} has upstream errors - not processing'.format(obj))
results.put((obj, None, UpstreamError()))
state.failed.add(obj)
elif all(
- dep not in objects or dep in state.finished
- for dep in deps
+ dep not in objects or (
+ dep in state.finished and (not ready_check or ready_check(dep))
+ ) for dep, ready_check in deps
):
log.debug('Starting producer thread for {}'.format(obj))
t = Thread(target=producer, args=(obj, func, results))