# HG changeset patch # User Bernhard Herzog # Date 1259771508 0 # Node ID 2d6915bce473acde532c830f0b31cdf356de2871 # Parent d0acc0614de5b58517c73ce9ad0ba481bcfc4021 Rework the packager mainloop. it's a bit simpler now and stopping should be more reliable. diff -r d0acc0614de5 -r 2d6915bce473 treepkg/packager.py --- a/treepkg/packager.py Wed Dec 02 15:37:46 2009 +0000 +++ b/treepkg/packager.py Wed Dec 02 16:31:48 2009 +0000 @@ -617,30 +617,29 @@ logging.info("binary packages needed as build dependencies: %s", " ".join(self.needed_binaries)) - def run(self): """Runs the packager group indefinitely""" logging.info("Starting in periodic check mode." " Will check every %d seconds", self.check_interval) - last_check = -1 + next_check = time.time() while 1: - now = time.time() - if now > last_check + self.check_interval: + if self.should_stop(): + logging.info("Received stop instruction. Stopping.") + return + + this_check = time.time() + if this_check >= next_check: + logging.info("Next check is now") if self.check_package_tracks(): break - last_check = now - next_check = now + self.check_interval - to_sleep = next_check - time.time() - if to_sleep > 0: - logging.info("Next check at %s", - time.strftime("%Y-%m-%d %H:%M:%S", - time.localtime(next_check))) - time.sleep(to_sleep) - else: - logging.info("Next check now") - if self.should_stop(): - logging.info("Received stop instruction. Stopping.") - return + last_check = this_check + next_check = this_check + self.check_interval + else: + to_sleep = next_check - this_check + logging.info("Next check at %s", + time.strftime("%Y-%m-%d %H:%M:%S", + time.localtime(next_check))) + time.sleep(to_sleep) def check_package_tracks(self): logging.info("Checking package tracks")