Properly wait for the component.shutdown deferred on shutdown. This should prevent the daemon from exiting before all the state has been saved.

This commit is contained in:
Andrew Resch 2012-03-02 09:15:35 -08:00
parent 5d0dace131
commit 0676aaf918
1 changed files with 10 additions and 11 deletions

View File

@ -110,7 +110,7 @@ class Daemon(object):
# Twisted catches signals to terminate, so just have it call the shutdown
# method.
reactor.addSystemEventTrigger("after", "shutdown", self.shutdown)
reactor.addSystemEventTrigger("before", "shutdown", self._shutdown)
# Catch some Windows specific signals
if deluge.common.windows_check():
@ -182,17 +182,16 @@ class Daemon(object):
reactor.callLater(0, reactor.stop)
def _shutdown(self, *args, **kwargs):
try:
os.remove(deluge.configmanager.get_config_dir("deluged.pid"))
except Exception, e:
log.exception(e)
log.error("Error removing deluged.pid!")
if os.path.exists(deluge.configmanager.get_config_dir("deluged.pid")):
try:
os.remove(deluge.configmanager.get_config_dir("deluged.pid"))
except Exception, e:
log.exception(e)
log.error("Error removing deluged.pid!")
component.shutdown()
try:
reactor.stop()
except twisted.internet.error.ReactorNotRunning:
log.debug("Tried to stop the reactor but it is not running..")
log.info("Waiting for components to shutdown..")
d = component.shutdown()
return d
@export()
def info(self):