fix restart without cfg
restart did not work when no cfg was given and process was in zombie state + fix restart 'all'
This commit is contained in:
parent
91cf31dde5
commit
42125b9887
11
base.py
11
base.py
@ -170,7 +170,9 @@ class ServiceManager:
|
|||||||
def get_procs(self, groups=None, cfginfo=None):
|
def get_procs(self, groups=None, cfginfo=None):
|
||||||
"""return processes
|
"""return processes
|
||||||
|
|
||||||
result is a dict[ins] of dict[service] of list of tuples (process, cfg)
|
:param groups: group to look for or None for all groups
|
||||||
|
:param cfginfo: cfginfo dict to be populated
|
||||||
|
:result: a dict[ins] of dict[service] of list of tuples (process, cfg)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
result = {}
|
result = {}
|
||||||
@ -240,8 +242,7 @@ class ServiceManager:
|
|||||||
try:
|
try:
|
||||||
p.wait(0.1 * i)
|
p.wait(0.1 * i)
|
||||||
except psutil.TimeoutExpired:
|
except psutil.TimeoutExpired:
|
||||||
if p.status() == psutil.STATUS_ZOMBIE:
|
if p.status() != psutil.STATUS_ZOMBIE:
|
||||||
break
|
|
||||||
if print_wait and i > 4:
|
if print_wait and i > 4:
|
||||||
print('wait for %s %s' % (ins, service))
|
print('wait for %s %s' % (ins, service))
|
||||||
print_wait = False
|
print_wait = False
|
||||||
@ -368,8 +369,12 @@ class ServiceManager:
|
|||||||
os.chdir(wd)
|
os.chdir(wd)
|
||||||
|
|
||||||
def do_restart(self, ins, service=None, cfg=None, logger=None):
|
def do_restart(self, ins, service=None, cfg=None, logger=None):
|
||||||
|
if ins is None:
|
||||||
|
raise UsageError("need instance or 'all' or wildcard")
|
||||||
ins_list = self.wildcard(ins)
|
ins_list = self.wildcard(ins)
|
||||||
if ins_list is not None:
|
if ins_list is not None:
|
||||||
|
if cfg is not None:
|
||||||
|
raise UsageError('can not restart several instances with %s' % cfg)
|
||||||
return ins_list
|
return ins_list
|
||||||
self.do_start(ins, service, cfg, True, logger=logger)
|
self.do_start(ins, service, cfg, True, logger=logger)
|
||||||
|
|
||||||
|
@ -94,6 +94,15 @@ class FrappyManager(ServiceManager):
|
|||||||
raise UsageError('need service to start (one of %s)' % ', '.join(self.services))
|
raise UsageError('need service to start (one of %s)' % ', '.join(self.services))
|
||||||
super().do_start(ins, service, cfg, restart, wait, logger)
|
super().do_start(ins, service, cfg, restart, wait, logger)
|
||||||
|
|
||||||
|
def do_restart(self, ins, service=None, cfg=None, logger=None):
|
||||||
|
ins_list = super().do_restart(ins, service, cfg, logger)
|
||||||
|
if ins_list: # wildcard used
|
||||||
|
# determine running processes with cfg
|
||||||
|
cfginfo = {}
|
||||||
|
self.get_procs(None, cfginfo)
|
||||||
|
cfgs = {i for i, s in cfginfo if s == service or service is None}
|
||||||
|
return [i for i in ins_list if i in cfgs]
|
||||||
|
|
||||||
def check_server(self, ins='', service='main'):
|
def check_server(self, ins='', service='main'):
|
||||||
start_dir, env = self.prepare_start(ins, service)
|
start_dir, env = self.prepare_start(ins, service)
|
||||||
sys.path.insert(0, start_dir)
|
sys.path.insert(0, start_dir)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user