Rate-limit while loop in SystemdService.is_active().

Previously is_active() was frenetically calling systemctl is_active in
tight loop which in fact made the process slower.

Reviewed-By: Martin Basti <mbasti@redhat.com>
This commit is contained in:
Petr Spacek
2015-06-26 15:55:12 +02:00
committed by Tomas Babej
parent 29c01e5ef4
commit ee84c6ae78

View File

@@ -25,6 +25,7 @@ interacting with system services.
import os
import json
import time
import ipalib
from ipapython import ipautil
@@ -53,6 +54,8 @@ wellknownports = {
'pki-tomcatd': [8080, 8443], # used if the incoming instance name is blank
}
SERVICE_POLL_INTERVAL = 0.1 # seconds
class KnownServices(MagicDict):
"""
@@ -303,11 +306,13 @@ class SystemdService(PlatformService):
)
except ipautil.CalledProcessError as e:
if e.returncode == 3 and 'activating' in str(e.output):
time.sleep(SERVICE_POLL_INTERVAL)
continue
return False
else:
# activating
if rcode == 3 and 'activating' in str(sout):
time.sleep(SERVICE_POLL_INTERVAL)
continue
# active
if rcode == 0: