[Title] Made automatic job has lower priority than user job
authordonghee yang <donghee.yang@samsung.com>
Tue, 27 Nov 2012 12:51:57 +0000 (21:51 +0900)
committerdonghee yang <donghee.yang@samsung.com>
Tue, 27 Nov 2012 12:51:57 +0000 (21:51 +0900)
src/build_server/CommonJob.rb
src/build_server/JobManager.rb
src/build_server/PackageSync.rb

index 5def3f0835cfdd4ef8be28462779e1ce0e6e0de0..72624c084df7e45f2d63b030cddda0cf59a98616 100644 (file)
@@ -33,7 +33,9 @@ require "utils.rb"
 
 class CommonJob
 
-       attr_accessor :id, :server, :log, :status
+       attr_accessor :id, :server, :log, :status, :priority
+       USER_JOB_PRIORITY = 100
+       AUTO_JOB_PRIORITY = 0
 
        # initialize
        public
@@ -47,7 +49,7 @@ class CommonJob
 
                @parent = nil
                @sub_jobs = []
-
+               @priority = USER_JOB_PRIORITY # higher numbered job get priority
                @status = "JUST_CREATED"
                @log = nil
 
index 5247d6106a8a98823dad6b60faf19cf9d6f6f9cf..05cb875872a5b74f1259241c9901ab38da1b4237 100644 (file)
@@ -443,7 +443,8 @@ class JobManager
                        end
                end
 
-               # for waiting jobs
+               # get candidates for waiting jobs
+               candidate_jobs = []
                jobs.each do |job|
                        if job.cancel_state != "NONE" then next end
                        if job.status != "WAITING" then next end
@@ -493,11 +494,22 @@ class JobManager
 
                        # no pre-requisite jobs, return its job
                        if job.pre_jobs.count == 0  then
-                               return job
+                               candidate_jobs.push job
                        end
                end
 
-               return nil
+               # select a job by priority
+               if candidate_jobs.count == 0 then return nil end
+               max_priority = -1
+               max_priority_job = nil
+               candidate_jobs.each do |job|
+                       if max_priority < job.priority then
+                               max_priority = job.priority 
+                               max_priority_job = job
+                       end
+               end
+
+               return max_priority_job 
        end
 
 end
index 7655ccc83411e604c2843c41055779cdee21490a..c0df1e65bae1f09e7b7112faf1a4e754ab6f459b 100644 (file)
@@ -102,6 +102,7 @@ class PackageSyncAction < Action
                downloaded_files.each do  |file_path|
                        @server.log.info "Creating new job for registering \"#{file_path}\""
                        new_job = @server.jobmgr.create_new_register_job( file_path, @dist_name )
+                       new_job.priority = CommonJob::AUTO_JOB_PRIORITY
                        logger = JobLog.new( new_job, nil )
                        new_job.set_logger(logger)
                        logger.init