from .users import generate_password_hash, check_password_hash, generate_random_string
+ACTIVE_STATES = [
+ "dispatching",
+ "running",
+]
+
class Builders(base.Object):
def _get_builder(self, query, *args):
res = self.db.get(query, *args)
return list(jobs)
+ @property
+ def num_active_jobs(self):
+ res = self.db.get("SELECT COUNT(*) AS count FROM jobs \
+ WHERE builder_id = %s AND state = ANY(%s)", self.id, ACTIVE_STATES)
+
+ return res.count
+
@property
def too_many_jobs(self):
"""
Tell if this host is already running enough or too many jobs.
"""
- return len(self.active_jobs) >= self.max_jobs
+ return self.num_active_jobs >= self.max_jobs
@lazy_property
def jobqueue(self):
CREATE INDEX jobs_arch ON jobs USING btree (arch);
+--
+-- Name: jobs_builders_active_jobs; Type: INDEX; Schema: public; Owner: pakfire; Tablespace:
+--
+
+CREATE INDEX jobs_builders_active_jobs ON jobs USING btree (builder_id) WHERE (state = ANY (ARRAY['dispatching'::text, 'running'::text]));
+
+
--
-- Name: jobs_buildroots_job_id; Type: INDEX; Schema: public; Owner: pakfire; Tablespace:
--