1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-21 14:50:08 +03:00

Bug #871: Avoid locked tables in onedb upgrade. Thanks to jan horacek <jahor@jhr.cz>

This commit is contained in:
Carlos Martín 2011-10-14 16:51:29 +02:00
parent 9ed5b738a4
commit a61cd0bb0a
2 changed files with 20 additions and 4 deletions

View File

@ -32,7 +32,10 @@ module Migrator
# Image pool table:
# CREATE TABLE image_pool (oid INTEGER PRIMARY KEY, name VARCHAR(256), body TEXT, uid INTEGER, gid INTEGER, public INTEGER, UNIQUE(name,uid) );
@db.fetch("SELECT * FROM image_pool") do |row|
@db.run "ALTER TABLE image_pool RENAME TO old_image_pool;"
@db.run "CREATE TABLE image_pool (oid INTEGER PRIMARY KEY, name VARCHAR(256), body TEXT, uid INTEGER, gid INTEGER, public INTEGER, UNIQUE(name,uid) );"
@db.fetch("SELECT * FROM old_image_pool") do |row|
doc = Document.new(row[:body])
source = nil
@ -48,10 +51,17 @@ module Migrator
size_elem = doc.root.add_element("SIZE")
size_elem.text = size
@db[:image_pool].filter(:oid => row[:oid]).update(
:body => doc.root.to_s)
@db[:image_pool].insert(
:oid => row[:oid],
:name => row[:name],
:body => doc.root.to_s,
:uid => row[:uid],
:gid => row[:gid],
:public => row[:public])
end
@db.run "DROP TABLE old_image_pool;"
return true
end
end

View File

@ -29,7 +29,11 @@ module Migrator
# The tm_nfs driver has been renamed to tm_shared
# CREATE TABLE host_pool (oid INTEGER PRIMARY KEY, name VARCHAR(256), body TEXT, state INTEGER, last_mon_time INTEGER, UNIQUE(name));
@db.fetch("SELECT * FROM host_pool") do |row|
@db.run "ALTER TABLE host_pool RENAME TO old_host_pool;"
@db.run "CREATE TABLE host_pool (oid INTEGER PRIMARY KEY, name VARCHAR(256), body TEXT, state INTEGER, last_mon_time INTEGER, UNIQUE(name));"
@db.run "INSERT INTO host_pool SELECT * FROM old_host_pool;"
@db.fetch("SELECT * FROM old_host_pool") do |row|
doc = Document.new(row[:body])
source = nil
@ -43,6 +47,8 @@ module Migrator
}
end
@db.run "DROP TABLE old_host_pool;"
return true
end
end