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 \
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:
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"):
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 \
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
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):
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:
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,
jobs.time_finished,
jobs.start_not_before,
jobs.builder_id,
- jobs.tries,
jobs.aborted_state,
jobs.message
FROM jobs
CREATE TABLE jobs_buildroots (
job_id integer NOT NULL,
- tries integer NOT NULL,
pkg_uuid text NOT NULL,
pkg_name text NOT NULL
);
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)
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:
--
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:
--