You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by ro...@apache.org on 2020/12/29 13:30:25 UTC

[buildstream] 27/32: scheduler.py: Remove Job rules

This is an automated email from the ASF dual-hosted git repository.

root pushed a commit to branch testing/local-cache-expiry
in repository https://gitbox.apache.org/repos/asf/buildstream.git

commit 7e56b788be151f29e81768b35509e72e6a9c47ec
Author: Tristan Maat <tm...@tlater.net>
AuthorDate: Wed Jul 11 10:52:53 2018 +0100

    scheduler.py: Remove Job rules
---
 buildstream/_scheduler/scheduler.py | 72 -------------------------------------
 1 file changed, 72 deletions(-)

diff --git a/buildstream/_scheduler/scheduler.py b/buildstream/_scheduler/scheduler.py
index ec73620..7e4b985 100644
--- a/buildstream/_scheduler/scheduler.py
+++ b/buildstream/_scheduler/scheduler.py
@@ -27,8 +27,6 @@ import datetime
 from contextlib import contextmanager
 
 # Local imports
-from .jobs import JobType
-from .queues import QueueType
 
 
 # A decent return code for Scheduler.run()
@@ -38,59 +36,6 @@ class SchedStatus():
     TERMINATED = 1
 
 
-# A set of rules that dictates in which order jobs should run.
-#
-# The first tuple defines jobs that are not allowed to be executed
-# before the current job completes (even if the job is still waiting
-# to be executed).
-#
-# The second tuple defines jobs that the current job is not allowed to
-# be run in parallel with.
-#
-# Note that this is very different from the element job
-# dependencies. Both a build and fetch job can be ready at the same
-# time, this has nothing to do with the requirement to fetch sources
-# before building. These rules are purely in place to maintain cache
-# consistency.
-#
-JOB_RULES = {
-    JobType.CLEAN: {
-        # Build and pull jobs are not allowed to run when we are about
-        # to start a cleanup job, because they will add more data to
-        # the artifact cache.
-        'priority': (JobType.BUILD, JobType.PULL),
-        # Cleanup jobs are not allowed to run in parallel with any
-        # jobs that might need to access the artifact cache, because
-        # we cannot guarantee atomicity otherwise.
-        'exclusive': (JobType.BUILD, JobType.PULL, JobType.PUSH)
-    },
-    JobType.BUILD: {
-        'priority': (),
-        'exclusive': ()
-    },
-    JobType.FETCH: {
-        'priority': (),
-        'exclusive': ()
-    },
-    JobType.PULL: {
-        'priority': (),
-        'exclusive': ()
-    },
-    JobType.PUSH: {
-        'priority': (),
-        'exclusive': ()
-    },
-    JobType.SIZE: {
-        'priority': (),
-        'exclusive': ()
-    },
-    JobType.TRACK: {
-        'priority': (),
-        'exclusive': ()
-    }
-}
-
-
 # Scheduler()
 #
 # The scheduler operates on a list queues, each of which is meant to accomplish
@@ -146,15 +91,7 @@ class Scheduler():
         self._starttime = start_time
         self._suspendtime = None
         self._queue_jobs = True      # Whether we should continue to queue jobs
-        self._start_cleanup = False  # Whether we would like to launch a cleanup job
 
-        # Initialize task tokens with the number allowed by
-        # the user configuration
-        self._job_tokens = {
-            QueueType.FETCH: context.sched_fetchers,
-            QueueType.BUILD: context.sched_builders,
-            QueueType.PUSH: context.sched_pushers
-        }
 
     # run()
     #
@@ -279,16 +216,7 @@ class Scheduler():
     #
     def sched(self):
         for job in self.waiting_jobs:
-            # If our job is not allowed to run with any job currently
-            # running, we don't start it.
-            if any(running_job.job_type in JOB_RULES[job.job_type]['exclusive']
-                   for running_job in self.active_jobs):
-                continue
 
-            # If any job currently waiting has priority over this one,
-            # we don't start it.
-            if any(job.job_type in JOB_RULES[waiting_job.job_type]['priority']
-                   for waiting_job in self.waiting_jobs):
                 continue
 
             job.spawn()