Skip to content

Commit 2c99a6a

Browse files
author
Sam Stelle
committed
Reworked service.restart() to remove race condition.
1 parent fb27bca commit 2c99a6a

File tree

1 file changed

+10
-13
lines changed

1 file changed

+10
-13
lines changed

splunklib/client.py

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -494,24 +494,21 @@ def restart(self, timeout=None):
494494
:type timeout: ``integer``
495495
"""
496496
result = self.post("server/control/restart")
497-
if timeout is None: return result
498-
start = datetime.now()
499-
diff = timedelta(seconds=10)
500-
while datetime.now() - start < diff:
501-
try:
502-
self.login() # Has the server gone down yet?
503-
sleep(0.3)
504-
except Exception:
505-
break # Server is down. Move on.
497+
if timeout is None:
498+
return result
499+
500+
# This message will be deleted once the server actually restarts.
501+
self.messages.create(name="restart_required", **{"value":"Python SDK"})
506502
start = datetime.now()
507503
diff = timedelta(seconds=timeout)
508504
while datetime.now() - start < diff:
509505
try:
510-
self.login() # Awake yet?
511-
return result
506+
self.login()
507+
if not self.restart_required:
508+
return result
512509
except Exception, e:
513-
sleep(2)
514-
raise Exception, "Operation timed out."
510+
sleep(1)
511+
raise Exception, "Operation time out."
515512

516513
@property
517514
def restart_required(self):

0 commit comments

Comments
 (0)