From d1449f148c603506e76ad6e1261ad7cc527f37c0 Mon Sep 17 00:00:00 2001 From: Tom Clegg Date: Wed, 22 May 2013 12:14:52 -0700 Subject: [PATCH] move queue and system user logic out of dispatch_jobs --- services/api/app/models/job.rb | 6 +++++ services/api/script/dispatch_jobs.rb | 33 ++++------------------------ 2 files changed, 10 insertions(+), 29 deletions(-) diff --git a/services/api/app/models/job.rb b/services/api/app/models/job.rb index a50c43c3e0..79c6e47fed 100644 --- a/services/api/app/models/job.rb +++ b/services/api/app/models/job.rb @@ -40,6 +40,12 @@ class Job < ArvadosModel running: false) end + def self.queue + self.where('started_at is ? and is_locked_by is ? and cancelled_at is ?', + nil, nil, nil). + order('priority desc, created_at') + end + protected def ensure_script_version_is_commit diff --git a/services/api/script/dispatch_jobs.rb b/services/api/script/dispatch_jobs.rb index c22f651711..f937747303 100755 --- a/services/api/script/dispatch_jobs.rb +++ b/services/api/script/dispatch_jobs.rb @@ -18,39 +18,14 @@ require File.dirname(__FILE__) + '/../config/environment' require 'open3' class Dispatcher + include ApplicationHelper def sysuser - return @sysuser if @sysuser - Thread.current[:user] = User.new(is_admin: true) - sysuser_id = [Server::Application.config.uuid_prefix, - User.uuid_prefix, - '000000000000000'].join('-') - @sysuser = User.where('uuid=?', sysuser_id).first - if !@sysuser - @sysuser = User.new(uuid: sysuser_id, - is_admin: true, - email: 'root', - first_name: 'root', - last_name: '') - @sysuser.save! - @sysuser.reload - end - Thread.current[:user] = @sysuser - - auth = ApiClientAuthorization.new(api_client_id: 0, - user_id: @sysuser.id) - auth.save! - auth_token = auth.api_token - $stderr.puts "dispatch: sysuser.uuid = #{@sysuser.uuid}" - $stderr.puts "dispatch: api_client_authorization.api_token = #{auth_token}" - @sysuser + return act_as_system_user end def refresh_todo - @todo = Job. - where('started_at is ? and is_locked_by is ? and cancelled_at is ?', - nil, nil, nil). - order('priority desc, created_at') + @todo = Job.queue end def start_jobs @@ -311,7 +286,7 @@ class Dispatcher end def run - sysuser + act_as_system_user @running ||= {} $stderr.puts "dispatch: ready" while !$signal[:term] or @running.size > 0 -- 2.30.2