From 33e693c1ce73899d9982f2994a20b92add5b80e8 Mon Sep 17 00:00:00 2001 From: donghee yang Date: Tue, 4 Sep 2012 03:29:37 +0900 Subject: [PATCH] [Title] Used "file transfer cnt" intead of "job initializing" flag --- src/build_server/BuildServer.rb | 2 +- src/build_server/RemoteBuildServer.rb | 22 ++++++++++++++++++++-- src/build_server/RemoteBuilder.rb | 6 +++--- test/build-cli-01.testcase | 1 + 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/build_server/BuildServer.rb b/src/build_server/BuildServer.rb index 7098409..3b165eb 100644 --- a/src/build_server/BuildServer.rb +++ b/src/build_server/BuildServer.rb @@ -284,7 +284,7 @@ class BuildServer @friend_servers.each do |server| if ( server.status == "RUNNING" and server.can_build?( job ) and not server.has_waiting_jobs and - not server.job_initializing and + server.get_file_transfer_cnt() == 0 and server.get_number_of_empty_room > 0 ) candidates.push server end diff --git a/src/build_server/RemoteBuildServer.rb b/src/build_server/RemoteBuildServer.rb index d2fcca9..8c71460 100644 --- a/src/build_server/RemoteBuildServer.rb +++ b/src/build_server/RemoteBuildServer.rb @@ -30,12 +30,12 @@ require 'fileutils' $LOAD_PATH.unshift File.dirname(__FILE__) require "RemoteBuildJob.rb" require "BuildComm.rb" +require 'thread' class RemoteBuildServer attr_accessor :ip, :port, :status, :host_os attr_accessor :max_working_jobs, :working_jobs, :waiting_jobs attr_accessor :pkgserver_url, :path - attr_accessor :job_initializing # initialize def initialize(ip, port, parent) @@ -48,7 +48,8 @@ class RemoteBuildServer @waiting_jobs = [] @pkgserver_url = parent.pkgserver_url @path = "" - @job_initializing = false + @file_transfer_cnt_mutex = Mutex.new + @file_transfer_cnt = 0 end @@ -128,5 +129,22 @@ class RemoteBuildServer def has_waiting_jobs return (@waiting_jobs.count > 0) end + + + def add_file_transfer() + @file_transfer_cnt_mutex.synchronize { + @file_transfer_cnt += 1 + } + end + + def remove_file_transfer() + @file_transfer_cnt_mutex.synchronize { + @file_transfer_cnt -= 1 + } + end + + def get_file_transfer_cnt() + return @file_transfer_cnt + end end diff --git a/src/build_server/RemoteBuilder.rb b/src/build_server/RemoteBuilder.rb index 2cee27e..f42a318 100644 --- a/src/build_server/RemoteBuilder.rb +++ b/src/build_server/RemoteBuilder.rb @@ -58,17 +58,17 @@ class RemoteBuilder dock = Utils.create_uniq_name() # send local packages - @server.job_initializing = true + @server.add_file_transfer() local_pkgs.each do |pkg_path| @log.info( "Sending file... : #{pkg_path}", Log::LV_USER ) result = send_file_to_remote( pkg_path, dock ) if not result then @log.error( "File transfering failed!", Log::LV_USER ) - @server.job_initializing = false + @server.remove_file_transfer() return false end end - @server.job_initializing = false + @server.remove_file_transfer() # send build request @log.info( "Sending build request to remote server...", Log::LV_USER ) diff --git a/test/build-cli-01.testcase b/test/build-cli-01.testcase index d543dd6..5a3a051 100644 --- a/test/build-cli-01.testcase +++ b/test/build-cli-01.testcase @@ -32,6 +32,7 @@ Options: -d, --address build server address: 127.0.0.1:2224 -o, --os target operating system: ubuntu-32/ubuntu-64/windows-32/windows-64/macos-64 --async asynchronous job +--noreverse do not check reverse build -j, --job job number -w, --passwd password for managing project -P, --pkg package file path -- 2.34.1