[Title] Fixed a bug that JOB numbering return 0
authordonghee yang <donghee.yang@samsung.com>
Fri, 5 Apr 2013 02:53:25 +0000 (11:53 +0900)
committerdonghee yang <donghee.yang@samsung.com>
Fri, 5 Apr 2013 02:53:25 +0000 (11:53 +0900)
src/build_server/BuildServer.rb
src/build_server/CommonJob.rb

index e07c3afa70aa8fceb21935f43940b2abcb044873..eebe98baacfaf4f63016b2d26151ecd6f9bddfd0 100644 (file)
@@ -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
 
index 6d9a5fa4499142e1b1571b7189a7f94dffb4d25b..21b916a23ddfaf9630eeaf947ff5cd39ebbe4d53 100644 (file)
@@ -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"