From e67c0fc70c2cc3fdf986a223278d3b9932e78745 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 23 Oct 2017 02:17:02 +0100 Subject: [PATCH] Force repository update after a build has been removed Signed-off-by: Michael Tremer --- src/buildservice/repository.py | 22 ++++++++++++++++++---- src/database.sql | 3 ++- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/buildservice/repository.py b/src/buildservice/repository.py index db43580..8815b96 100644 --- a/src/buildservice/repository.py +++ b/src/buildservice/repository.py @@ -255,6 +255,11 @@ class Repository(base.DataObject): def time_max(self): return self.data.time_max + def set_update_forced(self, update_forced): + self._set_attribute("update_forced", update_forced) + + update_forced = property(lambda s: s.data.update_forced, set_update_forced) + def _log_build(self, action, build, from_repo=None, to_repo=None, user=None): user_id = None if user: @@ -285,6 +290,9 @@ class Repository(base.DataObject): self.db.execute("DELETE FROM repositories_builds \ WHERE repo_id = %s AND build_id = %s", self.id, build.id) + # Force regenerating the index + self.update_forced = True + if log: self._log_build("removed", build, from_repo=self, user=user) @@ -292,6 +300,9 @@ class Repository(base.DataObject): self.db.execute("UPDATE repositories_builds SET repo_id = %s, time_added = NOW() \ WHERE repo_id = %s AND build_id = %s", to_repo.id, self.id, build.id) + # Force regenerating the index + self.update_forced = True + # Update bug status. build._update_bugs_helper(to_repo) @@ -360,6 +371,9 @@ class Repository(base.DataObject): self.db.execute("UPDATE repositories SET last_update = NOW() \ WHERE id = %s", self.id) + # Reset forced update flag + self.update_forced = False + def remaster(self): log.info("Going to update repository %s..." % self.name) @@ -392,12 +406,9 @@ class Repository(base.DataObject): changed = True # No need to regenerate the index if the repository hasn't changed - if not changed: + if not changed and not self.update_forced: continue - # Update the timestamp when we started at last - self.updated() - # Find the key to sign the package. key_id = None if self.key: @@ -409,6 +420,9 @@ class Repository(base.DataObject): name="%s - %s.%s" % (self.distro.name, self.name, arch), key_id=key_id) + # Update the timestamp when we started at last + self.updated() + def cleanup(self): log.info("Cleaning up repository %s..." % self.name) diff --git a/src/database.sql b/src/database.sql index d489ce6..bb400d5 100644 --- a/src/database.sql +++ b/src/database.sql @@ -1563,7 +1563,8 @@ CREATE TABLE repositories ( time_max integer DEFAULT 0 NOT NULL, deleted boolean DEFAULT false NOT NULL, priority integer, - user_id integer + user_id integer, + update_forced boolean DEFAULT false NOT NULL ); -- 2.47.3