diff options
| author | Mark McLoughlin <markmc@redhat.com> | 2011-08-24 15:49:53 +0100 |
|---|---|---|
| committer | Mark McLoughlin <markmc@redhat.com> | 2011-08-24 15:49:53 +0100 |
| commit | 0873a3c7b9a1a75c6e04bd1b66f8fbe4935585b2 (patch) | |
| tree | 1b68f01d05642658cc4597b55c1454210c297522 | |
| parent | 83856c9dd6e1f75e3db51574f3db2b4dc4922186 (diff) | |
Fix flavorid migration failure
With sqlalchemy 0.7.2 and migrate 0.7.1, I was seeing:
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/nova/db/migration.py", line 37, in db_sync
ret = IMPL.db_sync(version=version)
[...]
File "/usr/lib/python2.7/site-packages/nova/db/sqlalchemy/migrate_repo/versions/036_change_flavor_id_in_migrations.py", line 46, in upgrade
.values(old_instance_type_id=instance_type.id))
[...]
File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/default.py", line 301, in do_commit
connection.commit()
OperationalError: (OperationalError) database is locked None None
It looks like the database is being held open as we iterate over the
rows in the instance_types table.
| -rw-r--r-- | nova/db/sqlalchemy/migrate_repo/versions/036_change_flavor_id_in_migrations.py | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/nova/db/sqlalchemy/migrate_repo/versions/036_change_flavor_id_in_migrations.py b/nova/db/sqlalchemy/migrate_repo/versions/036_change_flavor_id_in_migrations.py index f3244033b..dfbd4ba32 100644 --- a/nova/db/sqlalchemy/migrate_repo/versions/036_change_flavor_id_in_migrations.py +++ b/nova/db/sqlalchemy/migrate_repo/versions/036_change_flavor_id_in_migrations.py @@ -40,13 +40,17 @@ def upgrade(migrate_engine): migrations.create_column(new_instance_type_id) # Convert flavor_id to instance_type_id + itypes = {} for instance_type in migrate_engine.execute(instance_types.select()): + itypes[instance_type.id] = instance_type.flavorid + + for instance_type_id in itypes.keys(): migrate_engine.execute(migrations.update()\ - .where(migrations.c.old_flavor_id == instance_type.flavorid)\ - .values(old_instance_type_id=instance_type.id)) + .where(migrations.c.old_flavor_id == itypes[instance_type_id])\ + .values(old_instance_type_id=instance_type_id)) migrate_engine.execute(migrations.update()\ - .where(migrations.c.new_flavor_id == instance_type.flavorid)\ - .values(new_instance_type_id=instance_type.id)) + .where(migrations.c.new_flavor_id == itypes[instance_type_id])\ + .values(new_instance_type_id=instance_type_id)) migrations.c.old_flavor_id.drop() migrations.c.new_flavor_id.drop() |
