From f4396c51cd40095f2fcd9507b215e42de0d25acf Mon Sep 17 00:00:00 2001 From: donghee yang Date: Fri, 29 Mar 2013 19:02:23 +0900 Subject: [PATCH] [Title] Changed job monitoring block to use 3 args --- build-cli | 6 +- src/build_server/BuildServerController.rb | 2 +- src/build_server/BuildServerException.rb | 6 +- src/build_server/JobLog.rb | 2 +- src/build_server/RemoteBuilder.rb | 73 ++++++++++------------- 5 files changed, 38 insertions(+), 51 deletions(-) diff --git a/build-cli b/build-cli index 760f48a..555e9db 100755 --- a/build-cli +++ b/build-cli @@ -230,7 +230,7 @@ begin # Query log in case sync if result and option[:async].eql? "NO" then begin - result = JobLog.monitor(addr[0], addr[1], job_id) do |line| + result = JobLog.monitor(addr[0], addr[1], job_id) do |line,status,errmsg| category, level, contents = JobLog.parse_log(line) if level < Log::LV_USER then next end @@ -325,7 +325,7 @@ begin puts "Started query log, writing to the file \"#{output}\"" end - result = JobLog.monitor(addr[0], addr[1], option[:job].strip) do |line| + result = JobLog.monitor(addr[0], addr[1], option[:job].strip) do |line,status,errmsg| log.puts line end if result and not output.nil? then @@ -468,7 +468,7 @@ begin # Query log in case sync begin - result = JobLog.monitor(bs_ip, bs_port, job_id) do |line| + result = JobLog.monitor(bs_ip, bs_port, job_id) do |line,status,errmsg| category, level, contents = JobLog.parse_log(line) if level < Log::LV_USER then next end diff --git a/src/build_server/BuildServerController.rb b/src/build_server/BuildServerController.rb index 9dfd6a7..4dffe2d 100644 --- a/src/build_server/BuildServerController.rb +++ b/src/build_server/BuildServerController.rb @@ -680,7 +680,7 @@ class BuildServerController end begin - result = JobLog.monitor("127.0.0.1", server.port, job_id) do |line| + result = JobLog.monitor("127.0.0.1", server.port, job_id) do |line,status,errmsg| category, level, contents = JobLog.parse_log(line) if level < Log::LV_USER then next end diff --git a/src/build_server/BuildServerException.rb b/src/build_server/BuildServerException.rb index deb0d9f..966c18d 100644 --- a/src/build_server/BuildServerException.rb +++ b/src/build_server/BuildServerException.rb @@ -31,11 +31,11 @@ class BuildServerException < Exception @err_code = code end - def err_message() + def err_message(prefix = "Error: ") if not message().nil? and not message().empty? then - return "Error: #{@@err_msgs[@err_code]}: #{message()}" + return "#{prefix}#{@@err_msgs[@err_code]}: #{message()}" else - return "Error: #{@@err_msgs[@err_code]}" + return "#{prefix}#{@@err_msgs[@err_code]}" end end end diff --git a/src/build_server/JobLog.rb b/src/build_server/JobLog.rb index c32064a..7f92d5f 100644 --- a/src/build_server/JobLog.rb +++ b/src/build_server/JobLog.rb @@ -92,7 +92,7 @@ class JobLog < Log job_error = data[2] else if block_given? then - yield line.strip + yield line.strip,job_status,job_error else puts line.strip end diff --git a/src/build_server/RemoteBuilder.rb b/src/build_server/RemoteBuilder.rb index 61f23a2..f6fd52f 100644 --- a/src/build_server/RemoteBuilder.rb +++ b/src/build_server/RemoteBuilder.rb @@ -218,58 +218,45 @@ class RemoteBuilder protected def send_monitor_request(is_rev_build) result_files = [] - - client = BuildCommClient.create( @addr, @port, @log ) - if client.nil? then - @log.error( "Creating communication client failed!", Log::LV_USER) - return false, result_files - end - result = true - msg = "LOG|#{@job.remote_id}" - result = client.send( msg ) - if not result then - @log.error( "Communication failed! #{client.get_error_msg()}", Log::LV_USER) - return false, result_files - end - - result = client.read_lines do |line| - if line.strip.start_with?("=JOB_STATUS") then - data = line.strip.split(",") - @job.remote_status = data[1] - @job.remote_error_msg = data[2] - next - end - # write log first - category, level, contents = JobLog.parse_log(line) - if category == "INFO" then - @log.info( contents, level ) - elsif category == "WARN" then - @log.warn( contents, level ) - elsif category == "ERROR" then - @log.error( contents, level ) - else - next + begin + result = JobLog.monitor(@addr, @port,@job.remote_id) do |line,status,errmsg| + @job.remote_status = status + if status == "ERROR" then + @job.remote_error_msg = errmsg + end + + category, level, contents = JobLog.parse_log(line) + if category == "INFO" then + @log.info( contents, level ) + # gather result files if not reverse build + if not is_rev_build and line =~ /Creating package file \.\.\. (.*)/ then + file_name = $1 + result_files.push file_name + end + elsif category == "WARN" then + @log.warn( contents, level ) + elsif category == "ERROR" then + @log.error( contents, level ) + else + next + end end - # gather result files if not reverse build - if not is_rev_build and line =~ /Creating package file \.\.\. (.*)/ then - file_name = $1 - result_files.push file_name - end + rescue BuildServerException => e + @log.error( e.err_message(""), Log::LV_USER ) + result = false + rescue => e + @log.error( "#{e.message()}", Log::LV_USER ) + result = false end - if not result then - @log.error( "Communication failed! #{client.get_error_msg()}", Log::LV_USER) - elsif not @job.remote_status.eql? "FINISHED" then - @log.error( "Job is #{@job.remote_status}! #{@job.remote_error_msg}", Log::LV_USER) + if @job.remote_status != "FINISHED" then + @log.error( "Remote job is finished with \"#{@job.remote_status}\"! #{@job.remote_error_msg}", Log::LV_USER) result = false end - # close socket - client.terminate - return result, result_files end -- 2.34.1