From 0a0cc78a5adb527785e27ab38f4ce5627ecfdb74 Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Mon, 24 May 2010 11:32:55 +0200 Subject: [PATCH] [client-updates-daemon] add new method "trigger_startup_check" It tells the daemon to not update repos but just return the updates list --- misc/dbus/interfaces/org.entropy.Client.xml | 1 + services/client-updates-daemon | 35 +++++++++++++++------ 2 files changed, 26 insertions(+), 10 deletions(-) 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):