From 1a90b285d2bdc1545e4432e1e0b2d1afad1c21e8 Mon Sep 17 00:00:00 2001 From: Luka Vandervelden Date: Mon, 11 Nov 2019 20:52:15 +0100 Subject: [PATCH] Non-runnables are being setup automatically. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In practice, they’re being setup after their last token provider has been started. --- src/service/service.cr | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/service/service.cr b/src/service/service.cr index 4acf186..7ec544a 100644 --- a/src/service/service.cr +++ b/src/service/service.cr @@ -373,6 +373,31 @@ class Service now = Time.local end end + + provides.each do |token_definition| + reverse_dependencies = get_consumers(token_definition.token) + .map(&.id) + .compact_map do |id| + context.get_service_by_id id + end + + reverse_dependencies.each do |service| + next unless service.non_runnable + + should_start = service + .dependency_tree.flatten + .select(&.!=(self)) + .map(&.status(context)) + .map do |status| + status.running? || status.non_runnable? + end + .reduce do |a, b| a && b end + + if should_start + service.start context + end + end + end end # TODO: