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
@parent = nil
@sub_jobs = []
-
+ @priority = USER_JOB_PRIORITY # higher numbered job get priority
@status = "JUST_CREATED"
@log = nil
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
# 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
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