From 40a82ce58d51608bb46487a8bbc32a0f59674010 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 21 Oct 2017 15:10:03 +0100 Subject: [PATCH] jobs: Mark them as deleted instead of removing them instantly Signed-off-by: Michael Tremer --- src/buildservice/jobs.py | 30 ++++++++++++++++++------------ src/database.sql | 8 ++++---- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/buildservice/jobs.py b/src/buildservice/jobs.py index 62effd5..08c1ed5 100644 --- a/src/buildservice/jobs.py +++ b/src/buildservice/jobs.py @@ -251,27 +251,33 @@ class Job(base.DataObject): superseeded_by = lazy_property(get_superseeded_by, set_superseeded_by) def delete(self): - self.__delete_buildroots() - self.__delete_history() - self.__delete_packages() - self.__delete_logfiles() + self._set_attribute("delete", True) + + def remove(self): + """ + Removes a job from the database + """ + self.__remove_buildroots() + self.__remove_history() + self.__remove_packages() + self.__remove_logfiles() # Delete the job itself. self.db.execute("DELETE FROM jobs WHERE id = %s", self.id) - def __delete_buildroots(self): + def __remove_buildroots(self): """ Removes all buildroots. """ self.db.execute("DELETE FROM jobs_buildroots WHERE job_id = %s", self.id) - def __delete_history(self): + def __remove_history(self): """ Removes all references in the history to this build job. """ self.db.execute("DELETE FROM jobs_history WHERE job_id = %s", self.id) - def __delete_packages(self): + def __remove_packages(self): """ Deletes all uploaded files from the job. """ @@ -280,15 +286,15 @@ class Job(base.DataObject): self.db.execute("DELETE FROM jobs_packages WHERE job_id = %s", self.id) - def __delete_logfiles(self): + def __remove_logfiles(self): for logfile in self.logfiles: self.db.execute("INSERT INTO queue_delete(path) VALUES(%s)", logfile.path) def reset(self, user=None): - self.__delete_buildroots() - self.__delete_packages() - self.__delete_history() - self.__delete_logfiles() + self.__remove_buildroots() + self.__remove_packages() + self.__remove_history() + self.__remove_logfiles() self.state = "new" self.log("reset", user=user) diff --git a/src/database.sql b/src/database.sql index bf53277..1199576 100644 --- a/src/database.sql +++ b/src/database.sql @@ -867,7 +867,7 @@ CREATE TABLE jobs ( message text, test boolean DEFAULT true NOT NULL, superseeded_by integer, - deleted boolean DEFAULT false NOT NULL + deleted_at timestamp without time zone ); @@ -882,7 +882,7 @@ CREATE VIEW builds_times AS jobs.arch, (jobs.time_finished - jobs.time_started) AS duration FROM jobs - WHERE (((jobs.deleted IS FALSE) AND (jobs.test IS FALSE)) AND (jobs.state = 'finished'::jobs_state)); + WHERE (((jobs.deleted_at IS NULL) AND (jobs.test IS FALSE)) AND (jobs.state = 'finished'::jobs_state)); ALTER TABLE builds_times OWNER TO pakfire; @@ -2886,10 +2886,10 @@ CREATE INDEX jobs_buildroots_pkg_uuid ON jobs_buildroots USING btree (pkg_uuid); -- --- Name: jobs_type; Type: INDEX; Schema: public; Owner: pakfire; Tablespace: +-- Name: jobs_test; Type: INDEX; Schema: public; Owner: pakfire; Tablespace: -- -CREATE INDEX jobs_type ON jobs USING btree (test) WHERE (deleted IS FALSE); +CREATE INDEX jobs_test ON jobs USING btree (test) WHERE (deleted_at IS NULL); -- -- 2.39.2