yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #20995
[Bug 1173269] Re: db migration 022 question
*** This bug is a duplicate of bug 1160114 ***
https://bugs.launchpad.net/bugs/1160114
** This bug has been marked a duplicate of bug 1160114
test_postgresql_opportunistically fails on RHEL
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to Glance.
https://bugs.launchpad.net/bugs/1173269
Title:
db migration 022 question
Status in OpenStack Image Registry and Delivery Service (Glance):
Confirmed
Bug description:
I suspect the latest glance db migration has a bug; I'm not certain but here's the evidence
when running against a mysql backend. It could be that my initial state is iffy, but I thought
I'd report it anyway.
Its migration 022. It changes the image_members table. If I run the migration with rows
in the table it seems to fail with a foreign key constraint, but it exits with an error
about 'cant DROP key'. The bum steer on the error is due to not printing out the
initial exception.
$ sudo glance-manage db_sync
10156 INFO glance.db.sqlalchemy.migration [- - -] Upgrading database to version latest
10156 CRITICAL glance [- - -] (OperationalError) (1091, "Can't DROP 'image_members_image_id_key'; check that column/key exists") 'ALTER TABLE image_members DROP INDEX image_members_image_id_key' ()
2013-04-25 11:55:34.807 10156 TRACE glance Traceback (most recent call last):
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/bin/glance-manage", line 134, in <module>
2013-04-25 11:55:34.807 10156 TRACE glance main()
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/bin/glance-manage", line 128, in main
2013-04-25 11:55:34.807 10156 TRACE glance CONF.command.func()
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/bin/glance-manage", line 80, in do_db_sync
2013-04-25 11:55:34.807 10156 TRACE glance CONF.command.current_version)
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/lib/python2.7/dist-packages/glance/db/sqlalchemy/migration.py", line 127, in db_sync
2013-04-25 11:55:34.807 10156 TRACE glance upgrade(version=version)
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/lib/python2.7/dist-packages/glance/db/sqlalchemy/migration.py", line 66, in upgrade
2013-04-25 11:55:34.807 10156 TRACE glance return versioning_api.upgrade(sql_connection, repo_path, version)
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/lib/python2.7/dist-packages/migrate/versioning/api.py", line 186, in upgrade
2013-04-25 11:55:34.807 10156 TRACE glance return _migrate(url, repository, version, upgrade=True, err=err, **opts)
2013-04-25 11:55:34.807 10156 TRACE glance File "<string>", line 2, in _migrate
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/lib/python2.7/dist-packages/migrate/versioning/util/__init__.py", line 159, in with_engine
2013-04-25 11:55:34.807 10156 TRACE glance return f(*a, **kw)
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/lib/python2.7/dist-packages/migrate/versioning/api.py", line 366, in _migrate
2013-04-25 11:55:34.807 10156 TRACE glance schema.runchange(ver, change, changeset.step)
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/lib/python2.7/dist-packages/migrate/versioning/schema.py", line 91, in runchange
2013-04-25 11:55:34.807 10156 TRACE glance change.run(self.engine, step)
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/lib/python2.7/dist-packages/migrate/versioning/script/py.py", line 145, in run
2013-04-25 11:55:34.807 10156 TRACE glance script_func(engine)
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/lib/python2.7/dist-packages/glance/db/sqlalchemy/migrate_repo/versions/022_image_member_index.py", line 43, in upgrade
2013-04-25 11:55:34.807 10156 TRACE glance table=image_members).drop()
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/lib/python2.7/dist-packages/migrate/changeset/constraint.py", line 59, in drop
2013-04-25 11:55:34.807 10156 TRACE glance self.__do_imports('constraintdropper', *a, **kw)
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/lib/python2.7/dist-packages/migrate/changeset/constraint.py", line 32, in __do_imports
2013-04-25 11:55:34.807 10156 TRACE glance run_single_visitor(engine, visitorcallable, self, *a, **kw)
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/lib/python2.7/dist-packages/migrate/changeset/databases/visitor.py", line 75, in run_single_visitor
2013-04-25 11:55:34.807 10156 TRACE glance fn(element, **kwargs)
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/lib/python2.7/dist-packages/migrate/changeset/ansisql.py", line 272, in visit_migrate_unique_constraint
2013-04-25 11:55:34.807 10156 TRACE glance self._visit_constraint(*p, **k)
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/lib/python2.7/dist-packages/migrate/changeset/ansisql.py", line 284, in _visit_constraint
2013-04-25 11:55:34.807 10156 TRACE glance self.execute()
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/lib/python2.7/dist-packages/migrate/changeset/ansisql.py", line 42, in execute
2013-04-25 11:55:34.807 10156 TRACE glance return self.connection.execute(self.buffer.getvalue())
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1405, in execute
2013-04-25 11:55:34.807 10156 TRACE glance params)
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1582, in _execute_text
2013-04-25 11:55:34.807 10156 TRACE glance statement, parameters
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1646, in _execute_context
2013-04-25 11:55:34.807 10156 TRACE glance context)
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1639, in _execute_context
2013-04-25 11:55:34.807 10156 TRACE glance context)
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 330, in do_execute
2013-04-25 11:55:34.807 10156 TRACE glance cursor.execute(statement, parameters)
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute
2013-04-25 11:55:34.807 10156 TRACE glance self.errorhandler(self, exc, value)
2013-04-25 11:55:34.807 10156 TRACE glance File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
2013-04-25 11:55:34.807 10156 TRACE glance raise errorclass, errorvalue
2013-04-25 11:55:34.807 10156 TRACE glance OperationalError: (OperationalError) (1091, "Can't DROP 'image_members_image_id_key'; check that column/key exists") 'ALTER TABLE image_members DROP INDEX image_members_image_id_key' ()
2013-04-25 11:55:34.807 10156 TRACE glance
mysql> show columns from image_members;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
| deleted_at | datetime | YES | | NULL | |
| deleted | tinyint(1) | NO | | NULL | |
| id | int(11) | NO | PRI | NULL | auto_increment |
| image_id | varchar(36) | NO | MUL | NULL | |
| member | varchar(255) | NO | | NULL | |
| can_share | tinyint(1) | NO | | NULL | |
| status | varchar(20) | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
9 rows in set (0.00 sec)
mysql> select * from image_members;
+---------------------+---------------------+------------+---------+----+--------------------------------------+--------+-----------+---------+
| created_at | updated_at | deleted_at | deleted | id | image_id | member | can_share | status |
+---------------------+---------------------+------------+---------+----+--------------------------------------+--------+-----------+---------+
| 2013-04-18 20:25:30 | 2013-04-18 20:25:30 | NULL | 0 | 1 | 7a12474f-1fdc-40ac-9cf1-41649b16dd68 | 112233 | 0 | pending |
+---------------------+---------------------+------------+---------+----+--------------------------------------+--------+-----------+---------+
1 row in set (0.00 sec)
mysql>
The actual error is
(OperationalError) (1553, "Cannot drop index 'image_id': needed in a foreign key constraint") 'ALTER TABLE image_members DROP INDEX image_id' ()
You get the REAL error by catching the exception in the migration code and printing it out - the traceback
is from the except clause's attempt to carry on.
To manage notifications about this bug go to:
https://bugs.launchpad.net/glance/+bug/1173269/+subscriptions