We seen a couple instances now where the wrong migration step is run in tests when the migration file names in each repo are the same. For example, in the following patch, expand was called, yet the contract file was the one actually run:
Traceback (most recent call last):
File "keystone/tests/unit/test_sql_upgrade.py", line 1964, in test_migration_013_add_domain_id_to_user
self.expand(13)
File "keystone/tests/unit/test_sql_upgrade.py", line 228, in expand
self.repos[EXPAND_REPO].upgrade(*args, **kwargs)
File "keystone/common/sql/upgrades.py", line 63, in upgrade
self.schema_.runchange(ver, change, changeset.step)
File "/home/jenkins/workspace/gate-keystone-python27-db-ubuntu-xenial/.tox/py27/local/lib/python2.7/site-packages/migrate/versioning/schema.py", line 93, in runchange
change.run(self.engine, step)
File "/home/jenkins/workspace/gate-keystone-python27-db-ubuntu-xenial/.tox/py27/local/lib/python2.7/site-packages/migrate/versioning/script/py.py", line 148, in run
script_func(engine)
File "/home/jenkins/workspace/gate-keystone-python27-db-ubuntu-xenial/keystone/common/sql/contract_repo/versions/013_add_domain_id_to_user.py", line 43, in upgrade
migrate.UniqueConstraint(user.c.id, user.c.domain_id,
File "/home/jenkins/workspace/gate-keystone-python27-db-ubuntu-xenial/.tox/py27/local/lib/python2.7/site-packages/sqlalchemy/util/_collections.py", line 212, in __getattr__
raise AttributeError(key)
AttributeError: domain_id
We seen a couple instances now where the wrong migration step is run in tests when the migration file names in each repo are the same. For example, in the following patch, expand was called, yet the contract file was the one actually run:
Traceback (most recent call last): tests/unit/ test_sql_ upgrade. py", line 1964, in test_migration_ 013_add_ domain_ id_to_user tests/unit/ test_sql_ upgrade. py", line 228, in expand repos[EXPAND_ REPO].upgrade( *args, **kwargs) common/ sql/upgrades. py", line 63, in upgrade schema_ .runchange( ver, change, changeset.step) jenkins/ workspace/ gate-keystone- python27- db-ubuntu- xenial/ .tox/py27/ local/lib/ python2. 7/site- packages/ migrate/ versioning/ schema. py", line 93, in runchange run(self. engine, step) jenkins/ workspace/ gate-keystone- python27- db-ubuntu- xenial/ .tox/py27/ local/lib/ python2. 7/site- packages/ migrate/ versioning/ script/ py.py", line 148, in run func(engine) jenkins/ workspace/ gate-keystone- python27- db-ubuntu- xenial/ keystone/ common/ sql/contract_ repo/versions/ 013_add_ domain_ id_to_user. py", line 43, in upgrade UniqueConstrain t(user. c.id, user.c.domain_id, jenkins/ workspace/ gate-keystone- python27- db-ubuntu- xenial/ .tox/py27/ local/lib/ python2. 7/site- packages/ sqlalchemy/ util/_collectio ns.py", line 212, in __getattr__
File "keystone/
self.expand(13)
File "keystone/
self.
File "keystone/
self.
File "/home/
change.
File "/home/
script_
File "/home/
migrate.
File "/home/
raise AttributeError(key)
AttributeError: domain_id
http:// logs.openstack. org/74/ 409874/ 29/check/ gate-keystone- python27- db-ubuntu- xenial/ d2a60fd/ testr_results. html.gz
Likewise, morgan was seeing a similar issue here, where the expand migration file wasn't being run, so the test failed the table exist check: /review. openstack. org/#/c/ 422817/ 3/keystone/ tests/unit/ test_sql_ upgrade. py
https:/
However, both patches would run successfully locally.
As a workaround, making the repo file names unique fixes the problem, suggesting that perhaps this is related to the files being cached.