From fb166e8f5c0a959f0f1dd9ceb5d9cc8ddd3e7ef6 Mon Sep 17 00:00:00 2001 From: Ana Krivokapic Date: Thu, 20 Jun 2013 17:04:49 +0200 Subject: [PATCH] Avoid systemd service deadlock during shutdown https://fedorahosted.org/freeipa/ticket/3729 --- ipapython/platform/base/systemd.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/ipapython/platform/base/systemd.py b/ipapython/platform/base/systemd.py index 9721ac1a9..84287e388 100644 --- a/ipapython/platform/base/systemd.py +++ b/ipapython/platform/base/systemd.py @@ -97,7 +97,17 @@ class SystemdService(base.PlatformService): ipautil.wait_for_open_ports('localhost', ports, api.env.startup_timeout) def stop(self, instance_name="", capture_output=True): - ipautil.run(["/bin/systemctl", "stop", self.service_instance(instance_name)], capture_output=capture_output) + instance = self.service_instance(instance_name) + + # The --ignore-dependencies switch is used to avoid possible + # deadlock during the shutdown transaction. For more details, see + # https://fedorahosted.org/freeipa/ticket/3729#comment:1 and + # https://bugzilla.redhat.com/show_bug.cgi?id=973331#c11 + ipautil.run( + ["/bin/systemctl", "stop", instance, "--ignore-dependencies"], + capture_output=capture_output + ) + if 'context' in api.env and api.env.context in ['ipactl', 'installer']: update_service_list = True else: