@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
@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)
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
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
@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
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
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"