From: Michael Tremer Date: Sat, 21 Oct 2017 14:47:58 +0000 (+0100) Subject: jobs: Drop tries field X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6990cac2a4df93efc70911016667ae04cc06a624;p=pbs.git jobs: Drop tries field Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/jobs.py b/src/buildservice/jobs.py index 08c1ed59..cb4931ed 100644 --- a/src/buildservice/jobs.py +++ b/src/buildservice/jobs.py @@ -176,13 +176,12 @@ class Jobs(base.Object): if jobs: return jobs.count - def restart_failed(self, max_tries=9): + def restart_failed(self): jobs = self._get_jobs("SELECT jobs.* FROM jobs \ JOIN builds ON builds.id = jobs.build_id \ WHERE \ jobs.type = 'build' AND \ jobs.state = 'failed' AND \ - jobs.tries <= %s AND \ NOT builds.state = 'broken' AND \ jobs.time_finished < NOW() - '72 hours'::interval \ ORDER BY \ @@ -190,8 +189,7 @@ class Jobs(base.Object): WHEN jobs.type = 'build' THEN 0 \ WHEN jobs.type = 'test' THEN 1 \ END, \ - builds.priority DESC, jobs.time_created ASC", - max_tries) + builds.priority DESC, jobs.time_created ASC") # Restart the job for job in jobs: @@ -433,7 +431,7 @@ class Job(base.DataObject): WHERE id = %s", self.id) elif state == "pending": - self.db.execute("UPDATE jobs SET tries = tries + 1, time_started = NULL, \ + self.db.execute("UPDATE jobs SET time_started = NULL, \ time_finished = NULL WHERE id = %s", self.id) elif state in ("aborted", "dependency_error", "finished", "failed"): @@ -537,10 +535,6 @@ class Job(base.DataObject): if expected_runtime: return expected_runtime - int(self.duration), stddev - @property - def tries(self): - return self.data.tries - def get_pkg_by_uuid(self, uuid): pkg = self.backend.packages._get_package("SELECT packages.id FROM packages \ JOIN jobs_packages ON jobs_packages.pkg_id = packages.id \ @@ -591,7 +585,7 @@ class Job(base.DataObject): i = 1 while True: target_filename = os.path.join(target_dirname, - "test.%s.%s.%s.log" % (self.arch, i, self.tries)) + "test.%s.%s.%s.log" % (self.arch, i, self.uuid)) if os.path.exists(target_filename): i += 1 @@ -599,7 +593,7 @@ class Job(base.DataObject): break else: target_filename = os.path.join(target_dirname, - "build.%s.%s.log" % (self.arch, self.tries)) + "build.%s.%s.log" % (self.arch, self.uuid)) # Make sure the target directory exists. if not os.path.exists(target_dirname): @@ -669,39 +663,17 @@ class Job(base.DataObject): return set(l) def save_buildroot(self, pkgs): - rows = [] + # Cleanup old stuff first (for rebuilding packages) + self.db.execute("DELETE FROM jobs_buildroots WHERE job_id = %s", self.id) for pkg_name, pkg_uuid in pkgs: - rows.append((self.id, self.tries, pkg_uuid, pkg_name)) - - # Cleanup old stuff first (for rebuilding packages). - self.db.execute("DELETE FROM jobs_buildroots WHERE job_id = %s AND tries = %s", - self.id, self.tries) - - self.db.executemany("INSERT INTO \ - jobs_buildroots(job_id, tries, pkg_uuid, pkg_name) \ - VALUES(%s, %s, %s, %s)", rows) - - def has_buildroot(self, tries=None): - if tries is None: - tries = self.tries - - res = self.db.get("SELECT COUNT(*) AS num FROM jobs_buildroots \ - WHERE jobs_buildroots.job_id = %s AND jobs_buildroots.tries = %s", - self.id, tries) - - if res: - return res.num - - return 0 - - def get_buildroot(self, tries=None): - if tries is None: - tries = self.tries + self.db.execute("INSERT INTO jobs_buildroots(job_id, pkg_uuid, pkg_name) \ + VALUES(%s, %s, %s)", self.id, pkg_name, pkg_uuid) + @lazy_property + def buildroot(self): rows = self.db.query("SELECT * FROM jobs_buildroots \ - WHERE jobs_buildroots.job_id = %s AND jobs_buildroots.tries = %s \ - ORDER BY pkg_name", self.id, tries) + WHERE jobs_buildroots.job_id = %s ORDER BY pkg_name", self.id) pkgs = [] for row in rows: diff --git a/src/database.sql b/src/database.sql index 11995762..7465f642 100644 --- a/src/database.sql +++ b/src/database.sql @@ -862,7 +862,6 @@ CREATE TABLE jobs ( time_finished timestamp without time zone, start_not_before timestamp without time zone, builder_id integer, - tries integer DEFAULT 0 NOT NULL, aborted_state integer DEFAULT 0 NOT NULL, message text, test boolean DEFAULT true NOT NULL, @@ -1064,7 +1063,6 @@ CREATE VIEW jobs_active AS jobs.time_finished, jobs.start_not_before, jobs.builder_id, - jobs.tries, jobs.aborted_state, jobs.message FROM jobs @@ -1080,7 +1078,6 @@ ALTER TABLE jobs_active OWNER TO pakfire; CREATE TABLE jobs_buildroots ( job_id integer NOT NULL, - tries integer NOT NULL, pkg_uuid text NOT NULL, pkg_name text NOT NULL ); @@ -1167,7 +1164,7 @@ ALTER SEQUENCE jobs_packages_id_seq OWNED BY jobs_packages.id; CREATE VIEW jobs_queue AS WITH queue AS ( SELECT jobs.id, - rank() OVER (ORDER BY jobs.type, builds.priority DESC, jobs.tries, jobs.time_created) AS rank + rank() OVER (ORDER BY jobs.type, builds.priority DESC, jobs.time_created) AS rank FROM (jobs LEFT JOIN builds ON ((jobs.build_id = builds.id))) WHERE (jobs.state = 'pending'::jobs_state) @@ -2745,13 +2742,6 @@ CREATE INDEX idx_2198063_time_finished ON jobs USING btree (time_finished); CREATE UNIQUE INDEX idx_2198063_uuid ON jobs USING btree (uuid); --- --- Name: idx_2198074_job_id; Type: INDEX; Schema: public; Owner: pakfire; Tablespace: --- - -CREATE INDEX idx_2198074_job_id ON jobs_buildroots USING btree (job_id); - - -- -- Name: idx_2198080_job_id; Type: INDEX; Schema: public; Owner: pakfire; Tablespace: -- @@ -2878,6 +2868,15 @@ CREATE INDEX idx_2198256_user_id ON users_emails USING btree (user_id); CREATE INDEX jobs_arch ON jobs USING btree (arch); +-- +-- Name: jobs_buildroots_job_id; Type: INDEX; Schema: public; Owner: pakfire; Tablespace: +-- + +CREATE INDEX jobs_buildroots_job_id ON jobs_buildroots USING btree (job_id); + +ALTER TABLE jobs_buildroots CLUSTER ON jobs_buildroots_job_id; + + -- -- Name: jobs_buildroots_pkg_uuid; Type: INDEX; Schema: public; Owner: pakfire; Tablespace: -- diff --git a/src/templates/jobs-detail.html b/src/templates/jobs-detail.html index 3402c6ce..9a6fb14a 100644 --- a/src/templates/jobs-detail.html +++ b/src/templates/jobs-detail.html @@ -154,11 +154,11 @@

{{ _("No logs available, yet.") }}

{% end %} - {% if job.has_buildroot() %} + {% if job.buildroot %}

- {{ _("Buildroot") }} - ({{ _("%s package", "%s packages", job.has_buildroot()) % job.has_buildroot() }}) + {{ _("Buildroot") }} + ({{ _("%s package", "%s packages", len(job.buildroot)) % len(job.buildroot) }})

{% end %} diff --git a/src/web/handlers_jobs.py b/src/web/handlers_jobs.py index 7d797bf3..a8614477 100644 --- a/src/web/handlers_jobs.py +++ b/src/web/handlers_jobs.py @@ -54,14 +54,11 @@ class JobBuildrootHandler(BaseHandler): if not job: raise tornado.web.HTTPError(404, "Job not found: %s" % uuid) - tries = self.get_argument("tries", None) - buildroot = job.get_buildroot(tries) - # Calculate the download size and buildroot size. download_size = 0 buildroot_size = 0 - for name, uuid, pkg in buildroot: + for name, uuid, pkg in job.buildroot: if not pkg: continue