[title] Fixed query-log terminated when status is not "FINISHED"
authorSungmin kim <dev.sungmin.kim@samsung.com>
Mon, 1 Apr 2013 05:48:18 +0000 (14:48 +0900)
committerSungmin kim <dev.sungmin.kim@samsung.com>
Mon, 1 Apr 2013 05:48:18 +0000 (14:48 +0900)
build-cli
src/build_server/BuildServerController.rb
src/build_server/JobLog.rb
src/build_server/RemoteBuilder.rb

index 5714cd1a6298849e942d80285b06856146730e6c..80001d322c963222e56968e037020a1c68335147 100755 (executable)
--- a/build-cli
+++ b/build-cli
@@ -228,9 +228,17 @@ begin
                if not result then exit(-1) end
 
                # Query log in case sync
+               job_status = ""
+               job_error = ""
                if result and option[:async].eql? "NO" then
                        begin
                                result = JobLog.monitor(addr[0], addr[1], job_id) do |line,status,errmsg|
+                                       job_status = status
+                                       job_error = errmsg
+                                       if line.nil? then 
+                                               next 
+                                       end
+
                                        category, level, contents = JobLog.parse_log(line)
                                        if level < Log::LV_USER then next end
                       
@@ -244,6 +252,11 @@ begin
                                                next
                                        end
                                end
+
+                               # Check job status
+                               if not job_status.eql? "FINISHED" then
+                                       result = false
+                               end
                        rescue BuildServerException => e
                                puts e.err_message()
                                result = false
@@ -322,12 +335,19 @@ begin
                                if File.exist? output
                                        raise RuntimeError, "The output file is already exist."
                                end
+
                                log = File.open(output, "w")
-                               log.flock(File::LOCK_EX)
+                               if not log.flock(File::LOCK_EX|File::LOCK_NB) then
+                                       raise RuntimeError, "The output file is already exist."
+                               end
                                puts "Started query log, writing to the file \"#{output}\""
                        end
 
                        result = JobLog.monitor(addr[0], addr[1], option[:job].strip) do |line,status,errmsg|
+                               if line.nil? then 
+                                       next 
+                               end
+
                                log.puts line
                                if not output.nil? and flock.eql? "ON" then
                                        log.flock(File::LOCK_UN)
@@ -477,6 +497,12 @@ begin
                # Query log in case sync
                begin
                        result = JobLog.monitor(bs_ip, bs_port, job_id) do |line,status,errmsg|
+                               job_status = status
+                               job_error = errmsg
+                               if line.nil? then 
+                                       next 
+                               end
+
                                category, level, contents = JobLog.parse_log(line)
                                if level < Log::LV_USER then next end
                       
@@ -491,6 +517,10 @@ begin
                                end
                        end
 
+                       # Check job status
+                       if not job_status.eql? "FINISHED" then
+                               result = false
+                       end
                rescue BuildServerException => e
                        puts e.err_message()
                        result = false
index a7a739fe7487dba0466d1f456005f388a2acb16c..42eb4a12186f09f7289c3a98b669d75156b454ef 100644 (file)
@@ -682,6 +682,12 @@ class BuildServerController
 
                begin
                        result = JobLog.monitor("127.0.0.1", server.port, job_id) do |line,status,errmsg|
+                               job_status = status
+                               job_error = errmsg
+                               if line.nil? then 
+                                       next 
+                               end
+
                                category, level, contents = JobLog.parse_log(line)
                                if level < Log::LV_USER then next end
                       
@@ -700,6 +706,11 @@ class BuildServerController
                        result = false
                end
 
+               # Check job status
+               if not job_status.eql? "FINISHED" then
+                       result = false
+               end
+
                return result
        end
 
index bf22c80275a7a37ce6e067d7e8124aa6788ca255..fcfad617186e21894e1fda29959296ffb61624e4 100644 (file)
@@ -92,6 +92,10 @@ class JobLog < Log
                                        data = line.strip.split(",")
                                        job_status = data[1]
                                        job_error = data[2]
+
+                                       if block_given? then
+                                               yield nil,job_status,job_error
+                                       end
                                else
                                        if block_given? then
                                                yield line.strip,job_status,job_error
@@ -105,10 +109,6 @@ class JobLog < Log
                                raise BuildServerException.new("ERR019"), "#{client.get_error_msg()}"
                        end
                                
-                       # Check job status
-                       if not job_status.eql? "FINISHED" then
-                               result = false
-                       end
                ensure
                        client.terminate if not client.nil?
                end
index 230cb8688bb2221260875083f6c081f5d65ca1a7..e2ca2dbac1a24899b899050af4ba9ee398c138ae 100644 (file)
@@ -237,8 +237,9 @@ class RemoteBuilder
                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
+                               @job.remote_error_msg = errmsg
+                               if line.nil? then 
+                                       next 
                                end
                                
                                category, level, contents = JobLog.parse_log(line)