From: donghee yang Date: Thu, 18 Apr 2013 09:33:52 +0000 (+0900) Subject: [Title] Changed to insert error code when job is ended with "ERROR" X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3aede5fa85ceb7574cd3fd5787ec1686329c7aae;p=sdk%2Ftools%2Fsdk-build.git [Title] Changed to insert error code when job is ended with "ERROR" --- diff --git a/src/build_server/BuildServer.rb b/src/build_server/BuildServer.rb index 8eb377f..1918615 100644 --- a/src/build_server/BuildServer.rb +++ b/src/build_server/BuildServer.rb @@ -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 diff --git a/src/build_server/CommonJob.rb b/src/build_server/CommonJob.rb index 87fd591..2170724 100644 --- a/src/build_server/CommonJob.rb +++ b/src/build_server/CommonJob.rb @@ -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 diff --git a/src/build_server/JobManager.rb b/src/build_server/JobManager.rb index 23a7423..3ee72fa 100644 --- a/src/build_server/JobManager.rb +++ b/src/build_server/JobManager.rb @@ -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 diff --git a/src/build_server/MultiBuildJob.rb b/src/build_server/MultiBuildJob.rb index 468b579..838f7ca 100644 --- a/src/build_server/MultiBuildJob.rb +++ b/src/build_server/MultiBuildJob.rb @@ -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"