From a8430fade664a57d16c92d3c9c7e9b437b3a7777 Mon Sep 17 00:00:00 2001 From: donghee yang Date: Fri, 5 Apr 2013 11:53:25 +0900 Subject: [PATCH] [Title] Fixed a bug that JOB numbering return 0 --- src/build_server/BuildServer.rb | 35 +++++++++++++++++++++++++-------- src/build_server/CommonJob.rb | 6 +++--- 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/src/build_server/BuildServer.rb b/src/build_server/BuildServer.rb index e07c3af..eebe98b 100644 --- a/src/build_server/BuildServer.rb +++ b/src/build_server/BuildServer.rb @@ -108,10 +108,12 @@ class BuildServer @db_passwd = nil @db_version = 3 @sqlite3_db_mutex = Mutex.new - @db_transaction_mutex = Mutex.new #DB upgrade SQL command @db_migrate = [] + + @latest_job_id = nil + @job_id_mutex = Mutex.new end def send_mail @@ -269,6 +271,12 @@ class BuildServer @cleaner = JobCleaner.new(self) @cleaner.start + # init latest job id + get_db_connection() do |db| + row = db.select_one("SELECT MAX(id) as id FROM jobs") + @latest_job_id = row['id'] + end + # set package server synchrontizer @log.info "Setting Package Server Synchronizer..." @pkg_sync = PackageServerSynchronizer.new(self) @@ -393,7 +401,7 @@ class BuildServer row = db.select_one("SELECT distributions.id FROM sync_pkg_servers,distributions WHERE sync_pkg_servers.pkgsvr_url='#{url}' and distributions.name='#{dist}' and sync_pkg_servers.distribution_id = distributions.id") if not row.nil? then return false end row = db.select_one("SELECT id FROM distributions WHERE name='#{dist}'") - dist_id = row['id']; + dist_id = row['id'] db.do "INSERT INTO sync_pkg_servers (pkgsvr_url,period,distribution_id) VALUES('#{url}','#{@pkg_sync_period}',#{dist_id})" end @@ -406,7 +414,7 @@ class BuildServer get_db_connection() do |db| row = db.select_one("SELECT distributions.id FROM sync_pkg_servers,distributions WHERE sync_pkg_servers.pkgsvr_url='#{url}' and distributions.name='#{dist}' and sync_pkg_servers.distribution_id = distributions.id") if row.nil? then return false end - dist_id = row['id']; + dist_id = row['id'] db.do("DELETE FROM sync_pkg_servers WHERE pkgsvr_url='#{url}' and distribution_id=#{dist_id}") end @@ -723,11 +731,9 @@ class BuildServer @db = DBI.connect("DBI:#{@db_dsn}", @db_user, @db_passwd) end end - @db_transaction_mutex.synchronize do - @db['AutoCommit'] = false - @db.transaction do |dbh| - yield dbh if block_given? - end + @db['AutoCommit'] = false + @db.transaction do |dbh| + yield dbh if block_given? end return true @@ -863,6 +869,19 @@ class BuildServer BuildCommServer.send_end(conn) BuildCommServer.disconnect(conn) end + + + end + + + public + def get_next_job_id() + @job_id_mutex.synchronize do + tmp_id = @latest_job_id.to_i + 1 + @latest_job_id = tmp_id.to_s + + return @latest_job_id + end end end diff --git a/src/build_server/CommonJob.rb b/src/build_server/CommonJob.rb index 6d9a5fa..21b916a 100644 --- a/src/build_server/CommonJob.rb +++ b/src/build_server/CommonJob.rb @@ -271,9 +271,9 @@ class CommonJob os_id = BuildServer.get_supported_os_id(db, @os) dist_id = PackageDistribution.get_distribution_id(db, get_distribution_name()) parent_id = @parent.nil? ? "NULL" : @parent.id - db.do "INSERT INTO jobs(project_id,user_id,supported_os_id, distribution_id, parent_job_id,jtype,status,start_time) - VALUES (#{prj_id},#{@user_id},#{os_id},#{dist_id},#{parent_id},'#{@type}','#{@status}',#{now})" - @id = @server.db_insert_id(db) + @id = @server.get_next_job_id() + db.do "INSERT INTO jobs(id,project_id,user_id,supported_os_id, distribution_id, parent_job_id,jtype,status,start_time) + VALUES (#{@id},#{prj_id},#{@user_id},#{os_id},#{dist_id},#{parent_id},'#{@type}','#{@status}',#{now})" else remote_bs_id = (@type == "BUILD" and not get_remote_server().nil?) ? get_remote_server().id : "NULL" -- 2.34.1