Folsom to Grizzly migration fails on non-empty sqlite db.

Bug #1156780 reported by Adam Gandelman
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Identity (keystone)
Fix Released
High
Adam Gandelman

Bug Description

Running migrations against a sqlite database (migrate version 4) results in the following error:

Traceback (most recent call last):
  File "/usr/bin/keystone-manage", line 28, in <module>
    cli.main(argv=sys.argv, config_files=config_files)
  File "/usr/lib/python2.7/dist-packages/keystone/cli.py", line 173, in main
    CONF.command.cmd_class.main()
  File "/usr/lib/python2.7/dist-packages/keystone/cli.py", line 53, in main
    driver.db_sync()
  File "/usr/lib/python2.7/dist-packages/keystone/identity/backends/sql.py", line 156, in db_sync
    migration.db_sync()
  File "/usr/lib/python2.7/dist-packages/keystone/common/sql/migration.py", line 52, in db_sync
    return versioning_api.upgrade(CONF.sql.connection, repo_path, version)
  File "/usr/lib/python2.7/dist-packages/migrate/versioning/api.py", line 186, in upgrade
    return _migrate(url, repository, version, upgrade=True, err=err, **opts)
  File "<string>", line 2, in _migrate
  File "/usr/lib/python2.7/dist-packages/migrate/versioning/util/__init__.py", line 159, in with_engine
    return f(*a, **kw)
  File "/usr/lib/python2.7/dist-packages/migrate/versioning/api.py", line 366, in _migrate
    schema.runchange(ver, change, changeset.step)
  File "/usr/lib/python2.7/dist-packages/migrate/versioning/schema.py", line 91, in runchange
    change.run(self.engine, step)
  File "/usr/lib/python2.7/dist-packages/migrate/versioning/script/py.py", line 145, in run
    script_func(engine)
  File "/usr/lib/python2.7/dist-packages/keystone/common/sql/migrate_repo/versions/015_tenant_to_project.py", line 122, in upgrade
    upgrade_with_copy(meta, migrate_engine)
  File "/usr/lib/python2.7/dist-packages/keystone/common/sql/migrate_repo/versions/015_tenant_to_project.py", line 62, in upgrade_with_copy
    insert.execute(membership)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/sql/expression.py", line 2826, in execute
    return e._execute_clauseelement(self, multiparams, params)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 2454, in _execute_clauseelement
    return connection._execute_clauseelement(elem, multiparams, params)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1584, in _execute_clauseelement
    compiled_sql, distilled_params
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1651, in _execute_context
    None, None)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1647, in _execute_context
    context = constructor(dialect, self, conn, *args)
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 442, in _init_compiled
    grp,m in enumerate(parameters)]
  File "/usr/lib/python2.7/dist-packages/sqlalchemy/sql/compiler.py", line 317, in construct_params
    % bindparam.key)
sqlalchemy.exc.StatementError: A value is required for bind parameter 'tenant_id' (original cause: InvalidRequestError: A value is required for bind parameter 'tenant_id') 'INSERT INTO user_project_membership (user_id, tenant_id) VALUES (?, ?)' [(u'273f0166482449e2a82a2917ff9d24fd', u'157af0c5dfa14e8cbd718ce3b266d5c9')]

keystone 1:2013.1+git201303181403~precise-0ubuntu1
python-sqlalchemy 0.7.8-1ubuntu1~cloud0
python-migrate 0.7.2-1ubuntu1

Tags: upgrade
tags: added: upgrade
Revision history for this message
Adam Gandelman (gandelman-a) wrote :

Seems only to affect sqlite backend, migrations against similarly populated mysql database show now error.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to keystone (master)

Fix proposed to branch: master
Review: https://review.openstack.org/24668

Changed in keystone:
assignee: nobody → Adam Gandelman (gandelman-a)
status: New → In Progress
Dolph Mathews (dolph)
Changed in keystone:
milestone: none → grizzly-rc1
importance: Undecided → High
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to keystone (master)

Reviewed: https://review.openstack.org/24668
Committed: http://github.com/openstack/keystone/commit/975af8d709b91f6cc9e4f9c74cc9b4a36f49537e
Submitter: Jenkins
Branch: master

commit 975af8d709b91f6cc9e4f9c74cc9b4a36f49537e
Author: Adam Gandelman <email address hidden>
Date: Mon Mar 18 12:21:59 2013 -0700

    Pass project membership as dict in migration 015.

    Passing the query result directly to execute() seems to bork
    migrations on sqlite. Pass a dict with the required parameters
    instead.

    Fixes LP 1156780.

    Change-Id: Ib71c5c82be85402cdf6fc5855fc64ec683edebeb

Changed in keystone:
status: In Progress → Fix Committed
Thierry Carrez (ttx)
Changed in keystone:
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in keystone:
milestone: grizzly-rc1 → 2013.1
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.