# 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
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
# 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
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