# get availables server
if job.type == "MULTIBUILD" or job.type == "REGISTER" then
# if max working job is zero, check max-non-build-jobs
- if @jobmgr.max_working_jobs == 0 and local_empty_rooms >= -4 then
+ if @jobmgr.max_working_jobs == 0 and
+ local_empty_rooms >= -1 * @jobmgr.get_max_jobs() then
candidates.push self
end
else
@db_migrate[3]=["CREATE TABLE job_timestamps (id INTEGER PRIMARY KEY #{db_inc()}, job_id INTEGER, stamp_name VARCHAR(64), stamp_time DATETIME)#{db_post_fix()}",
"ALTER TABLE jobs ADD COLUMN error_code VARCHAR(32)",
"INSERT INTO users (name,email,password_hash,password_salt) VALUES ('sync-manager','sync-manager@user','$2a$10$H.w3ssI9KfuvNEXXp1qxD.b3Wm8alJG.HXviUofe4nErDn.TKUAka','$2a$10$H.w3ssI9KfuvNEXXp1qxD.')",
- "INSERT INTO user_groups (user_id, group_id) SELECT users.id,groups.id FROM users,groups WHERE users.email = 'sync-manager@user' and groups.name = 'admin'"
+ "INSERT INTO user_groups (user_id, group_id) SELECT users.id,groups.id FROM users,groups WHERE users.email = 'sync-manager@user' and groups.name = 'admin'",
+ "INSERT INTO server_configs (property,value) VALUES ('max_jobs','4')"
]
else
@db_migrate[1]=["ALTER TABLE distributions ADD pkgsvr_password VARCHAR(64)"]
@db_migrate[3]=["CREATE TABLE job_timestamps (id INTEGER PRIMARY KEY #{db_inc()}, job_id INTEGER, stamp_name VARCHAR(64), stamp_time DATETIME)#{db_post_fix()}",
"ALTER TABLE jobs ADD COLUMN error_code VARCHAR(32)",
"INSERT INTO users (name,email,password_hash,password_salt) VALUES ('sync-manager','sync-manager@user','$2a$10$H.w3ssI9KfuvNEXXp1qxD.b3Wm8alJG.HXviUofe4nErDn.TKUAka','$2a$10$H.w3ssI9KfuvNEXXp1qxD.')",
- "INSERT INTO user_groups (user_id, group_id) SELECT users.id,groups.id FROM users,groups WHERE users.email = 'sync-manager@user' and groups.name = 'admin'"
+ "INSERT INTO user_groups (user_id, group_id) SELECT users.id,groups.id FROM users,groups WHERE users.email = 'sync-manager@user' and groups.name = 'admin'",
+ "INSERT INTO server_configs (property,value) VALUES ('max_jobs','4')"
]
end
end
db.do "INSERT INTO server_configs (property,value) VALUES ('db_version','#{@db_version}')"
db.do "INSERT INTO server_configs (property,value) VALUES ('port','2222')"
db.do "INSERT INTO server_configs (property,value) VALUES ('max_working_jobs','2')"
+ db.do "INSERT INTO server_configs (property,value) VALUES ('max_jobs','4')"
db.do "INSERT INTO server_configs (property,value) VALUES ('send_mail','NO')"
db.do "INSERT INTO server_configs (property,value) VALUES ('keep_time','86400')"
db.do "INSERT INTO server_configs (property,value) VALUES ('pkg_sync_period','600')"
attr != "FTP_USERNAME" and attr != "FTP_PASSWD" and
attr != "DB_DSN" and attr != "DB_USER" and
attr != "DB_PASSWD" and attr != "PASSWORD" and
- attr != "MAX_WORKING_JOBS" then
+ attr != "MAX_WORKING_JOBS" and attr != "MAX_JOBS" then
puts BuildServerException.get_message("ERR021")
return false
server.git_bin_path = value
when "MAX_WORKING_JOBS"
server.jobmgr.max_working_jobs = value.to_i
+ when "MAX_JOBS"
+ server.jobmgr.set_max_jobs(value.to_i)
when "JOB_LOG_URL"
server.job_log_url = value
when "SEND_MAIL"
attr != "FTP_USERNAME" and attr != "FTP_PASSWD" and
attr != "DB_DSN" and attr != "DB_USER" and
attr != "DB_PASSWD" and attr != "PASSWORD" and
- attr != "MAX_WORKING_JOBS" then
+ attr != "MAX_WORKING_JOBS" and attr != "MAX_JOBS" then
puts BuildServerException.get_message("ERR021")
return false
puts server.git_bin_path
when "MAX_WORKING_JOBS"
puts server.jobmgr.max_working_jobs
+ when "MAX_JOBS"
+ puts server.jobmgr.get_max_jobs()
when "JOB_LOG_URL"
puts server.job_log_url
when "SEND_MAIL"
f.puts "DB_PASSWORD=#{server.db_passwd}"
if not server.has_db? then
f.puts "MAX_WORKING_JOBS=#{server.jobmgr.max_working_jobs}"
+ f.puts "MAX_JOBS=#{server.jobmgr.get_max_jobs()}"
end
end
end
db_user=nil
db_passwd=nil
max_working_jobs=2
+ max_jobs=4
# read configuration
server_dir = "#{BuildServer::CONFIG_ROOT}/#{id}"
end
elsif l.start_with?("MAX_WORKING_JOBS=")
max_working_jobs = l[idx,length].strip.to_i
+ elsif l.start_with?("MAX_JOBS=")
+ max_jobs = l[idx,length].strip.to_i
else
next
end
# max working jobs
if not obj.has_db? then
obj.jobmgr.max_working_jobs = max_working_jobs
+ obj.jobmgr.set_max_jobs(max_jobs)
end
# save config
@internal_job_schedule = Mutex.new
@latest_job_touch = Mutex.new
@max_build_jobs = 2
+ @max_jobs = 4
end
def cancel_broken_status
def max_working_jobs=(job_cnt)
@max_build_jobs = job_cnt
+ if @max_jobs < @max_build_jobs then
+ @max_jobs = @max_build_jobs
+ end
if @server.has_db? then
@server.get_db_connection() do |db|
db.do "UPDATE server_configs SET value = '#{@max_build_jobs}' WHERE property = 'max_working_jobs'"
+ db.do "UPDATE server_configs SET value = '#{@max_jobs}' WHERE property = 'max_jobs'"
+ end
+ end
+ end
+
+
+ def get_max_jobs()
+ if @server.has_db? then
+ result = nil
+ @server.get_db_connection() do |db|
+ result = db.select_one("SELECT value FROM server_configs WHERE property = 'max_jobs'")[0]
+ end
+ @max_jobs = result.to_i if not result.nil?
+ end
+
+ if @max_jobs < @max_build_jobs then
+ @max_jobs = @max_build_jobs
+ end
+
+ return @max_jobs
+ end
+
+
+ def set_max_jobs(cnt)
+ if cnt > @max_build_jobs then
+ @max_jobs = cnt
+ else
+ @max_jobs = @max_build_jobs
+ end
+
+ if @server.has_db? then
+ @server.get_db_connection() do |db|
+ db.do "UPDATE server_configs SET value = '#{@max_jobs}' WHERE property = 'max_jobs'"
end
end
end