[Title] Changed to insert error code when job is ended with "ERROR"
authordonghee yang <donghee.yang@samsung.com>
Thu, 18 Apr 2013 09:33:52 +0000 (18:33 +0900)
committerdonghee yang <donghee.yang@samsung.com>
Thu, 18 Apr 2013 09:33:52 +0000 (18:33 +0900)
src/build_server/BuildServer.rb
src/build_server/CommonJob.rb
src/build_server/JobManager.rb
src/build_server/MultiBuildJob.rb

index 8eb377fdd51817a2c68d22bf5b3a8b264da497eb..1918615df2dde0f394b558c3062c7bb5e73cbbc6 100644 (file)
@@ -632,11 +632,13 @@ class BuildServer
                        @db_migrate[1]=["ALTER TABLE jobs CHANGE COLUMN id  id INTEGER AUTO_INCREMENT NOT NULL", 
                                                        "ALTER TABLE distributions ADD pkgsvr_password VARCHAR(64)"]
                        @db_migrate[2]=["ALTER TABLE projects ADD COLUMN status VARCHAR(32) NOT NULL DEFAULT 'OPEN'"]
-                       @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()}"]
+                       @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)"]
                else
                        @db_migrate[1]=["ALTER TABLE distributions ADD pkgsvr_password VARCHAR(64)"]
                        @db_migrate[2]=["ALTER TABLE projects ADD COLUMN status VARCHAR(32) NOT NULL DEFAULT 'OPEN'"]
-                       @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()}"]
+                       @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)"]
                end
        end
 
index 87fd591cf26542f0241285ac1536bd8c48a48257..21707242c5bfd09cb866b432ee1ecc596413a261 100644 (file)
@@ -38,7 +38,7 @@ require "BuildServerException.rb"
 class CommonJob
 
        attr_accessor :id, :server, :log, :status, :priority
-       attr_accessor :os, :type, :pre_jobs, :user_id, :event, :sub_jobs, :thread
+       attr_accessor :os, :type, :pre_jobs, :user_id, :event, :sub_jobs, :thread, :error
        USER_JOB_PRIORITY = 100
        AUTO_JOB_PRIORITY = 0
 
@@ -66,6 +66,8 @@ class CommonJob
                @end_time = nil
                @thread = nil
                @sub_pid = 0
+
+               @error = nil
        end
 
        # event check
@@ -157,7 +159,10 @@ class CommonJob
                        rescue BuildServerException => e
                                @log.error( e.err_message, Log::LV_USER )
                                # "CANCEL" operation(ERR900) must be excluded
-                               if @status == "WORKING" and e.err_code != "ERR900"  then @status = "ERROR" end
+                               if @status == "WORKING" and e.err_code != "ERR900"  then 
+                                       @status = "ERROR" 
+                                       @error = e
+                               end
                        rescue => e
                                @log.error e.message
                                @log.error e.backtrace.inspect
@@ -263,6 +268,7 @@ class CommonJob
                        status VARCHAR(32) NOT NULL DEFAULT 'JUST_CREATED', 
                        start_time DATETIME, 
                        end_time DATETIME,
+                       error_code VARCHAR(32),
                        CONSTRAINT fk_jobs_projects1 FOREIGN KEY ( project_id ) REFERENCES projects ( id ),
                        CONSTRAINT fk_jobs_users1 FOREIGN KEY ( user_id ) REFERENCES users ( id ),
                        CONSTRAINT fk_jobs_supported_os1 FOREIGN KEY ( supported_os_id ) REFERENCES supported_os ( id ),
@@ -305,6 +311,9 @@ class CommonJob
 
                                @end_time = Time.now
                                db.do "UPDATE jobs SET end_time=#{now} WHERE id=#{@id}"
+                               if @status == "ERROR" and not @error.nil? then
+                                       db.do "UPDATE jobs SET error_code='#{@error.err_code}' WHERE id=#{@id}"
+                               end
                        end
                end
        end
index 23a74231b78318144f12af7b0efe9cd3c77e56ad..3ee72fa7f6312b797a441c3e2fd051f81c0f9098 100644 (file)
@@ -172,13 +172,16 @@ class JobManager
                                @server.log.info "Checking the job \"#{job.id}\" was finished!"
                        rescue BuildServerException => e
                                @server.log.info "Initializig the job \"#{job.id}\" failed!"
-                               if e.err_code != "ERR900"  then job.status = "ERROR" end
+                               if e.err_code != "ERR900"  then 
+                                       job.status = "ERROR" 
+                               end
                                if not job.log.nil? then
                                        job.log.error(e.err_message(""), Log::LV_USER)
                                else
                                        @server.log.error e.message
                                end
                                if job.status == "ERROR" then
+                                       job.error = e
                                        job.terminate()
                                        save_job_status(job)
                                end
index 468b579fca3d5c246fe3b233a2deb8dc8a27ea1e..838f7ca38983d5c812606c82653e5a4858873de7 100644 (file)
@@ -147,7 +147,10 @@ class MultiBuildJob < CommonJob
                                        job.add_timestamp("INIT_END")
                                end
                        rescue BuildServerException => e
-                               if e.err_code != "ERR900"  then job.status = "ERROR" end
+                               if e.err_code != "ERR900"  then 
+                                       job.error = e
+                                       job.status = "ERROR" 
+                               end
                                @log.error( "Failed to initialize sub-job \"#{job.get_project().name}\" for #{job.os}. (#{job.id})", Log::LV_USER)
                                @log.error( " * #{e.err_message("")}", Log::LV_USER)
                                tstatus = "ERROR"