diff --git a/misc/dbus/interfaces/org.entropy.Client.xml b/misc/dbus/interfaces/org.entropy.Client.xml
index 21c6d89ad..a1b5c2926 100644
--- a/misc/dbus/interfaces/org.entropy.Client.xml
+++ b/misc/dbus/interfaces/org.entropy.Client.xml
@@ -4,6 +4,7 @@
+
diff --git a/services/client-updates-daemon b/services/client-updates-daemon
index 6219597b2..77da5f030 100644
--- a/services/client-updates-daemon
+++ b/services/client-updates-daemon
@@ -154,6 +154,7 @@ class UpdatesDaemon(dbus.service.Object):
self.__quit_service_wd = None
self.__quit_service_trigger = False
self.__trigger_oncall_updater = False
+ self.__trigger_startup_check = False
self.__fetch_mutex = Lock()
self.__updates = []
self.__updates_atoms = None
@@ -180,7 +181,7 @@ class UpdatesDaemon(dbus.service.Object):
self.__updater = gobject.timeout_add(
CHECK_DELAY_SECS*1000, self.run_fetcher)
self.__oncall_updater = gobject.timeout_add(
- 1000, self.run_oncall_fetcher)
+ 3000, self.run_oncall_fetcher)
self.__quit_service_wd = gobject.timeout_add(
60*1000, self.quit_service_watchdog)
self.__system_changes_checker = gobject.timeout_add(
@@ -260,8 +261,9 @@ class UpdatesDaemon(dbus.service.Object):
def quit_service_watchdog(self):
if self.__quit_service_trigger:
- self.__alive = False
+ self.stop()
with self.__is_working_mutex:
+ entropy.tools.kill_threads()
raise SystemExit(0)
return self.__alive
@@ -375,14 +377,21 @@ class UpdatesDaemon(dbus.service.Object):
urgency = 'critical'
)
- gobject.timeout_add(0, self.signal_updating)
- repos = repos_to_up.keys()
- rc_fetch = self.__run_sync(repos, entropy)
- if rc_fetch != 0:
- return rc_fetch
- if DAEMON_DEBUG:
- write_output("__run_fetcher: sync closed, rc: %s" % (
- rc_fetch,))
+ if not self.__trigger_startup_check:
+ gobject.timeout_add(0, self.signal_updating)
+ repos = repos_to_up.keys()
+ rc_fetch = self.__run_sync(repos, entropy)
+ if rc_fetch != 0:
+ return rc_fetch
+ if DAEMON_DEBUG:
+ write_output("__run_fetcher: sync closed, rc: %s" % (
+ rc_fetch,))
+ else:
+ self.__trigger_startup_check = False
+ if DAEMON_DEBUG:
+ write_output("__run_fetcher: not syncing atm, "
+ "trigger startup check is ON, waiting next "
+ "round, repos: %s" % (repos_to_up,))
try:
update, remove, fine, spm_fine = \
@@ -480,6 +489,12 @@ class UpdatesDaemon(dbus.service.Object):
def trigger_check(self):
self.__trigger_oncall_updater = True
+ @dbus.service.method ( "org.entropy.Client", in_signature = '',
+ out_signature = '')
+ def trigger_startup_check(self):
+ self.__trigger_oncall_updater = True
+ self.__trigger_startup_check = True
+
@dbus.service.method ( "org.entropy.Client", in_signature = '',
out_signature = 'av')
def get_updates(self):