Hi All, I have found two more issues related to 'glance-manage db sync'. Commands: 'glance-manage db sync' has two arguments 'version' and 'current_version'. If you give 'current_version' greater than the actual current database version it throws InvalidVersionError exception with traceback. $ glance-manage db sync 45 56 LOG: 2016-03-11 10:21:37.520 CRITICAL glance [-] InvalidVersionError: 56 2016-03-11 10:21:37.520 TRACE glance Traceback (most recent call last): 2016-03-11 10:21:37.520 TRACE glance File "/usr/local/bin/glance-manage", line 10, in 2016-03-11 10:21:37.520 TRACE glance sys.exit(main()) 2016-03-11 10:21:37.520 TRACE glance File "/opt/stack/glance/glance/cmd/manage.py", line 383, in main 2016-03-11 10:21:37.520 TRACE glance return CONF.command.action_fn(*func_args, **func_kwargs) 2016-03-11 10:21:37.520 TRACE glance File "/opt/stack/glance/glance/cmd/manage.py", line 146, in sync 2016-03-11 10:21:37.520 TRACE glance version=current_version) 2016-03-11 10:21:37.520 TRACE glance File "/usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/migration.py", line 153, in db_version_control 2016-03-11 10:21:37.520 TRACE glance versioning_api.version_control(engine, repository, version) 2016-03-11 10:21:37.520 TRACE glance File "", line 2, in version_control 2016-03-11 10:21:37.520 TRACE glance File "/usr/local/lib/python2.7/dist-packages/migrate/versioning/util/__init__.py", line 160, in with_engine 2016-03-11 10:21:37.520 TRACE glance return f(*a, **kw) 2016-03-11 10:21:37.520 TRACE glance File "/usr/local/lib/python2.7/dist-packages/migrate/versioning/api.py", line 250, in version_control 2016-03-11 10:21:37.520 TRACE glance ControlledSchema.create(engine, repository, version) 2016-03-11 10:21:37.520 TRACE glance File "/usr/local/lib/python2.7/dist-packages/migrate/versioning/schema.py", line 140, in create 2016-03-11 10:21:37.520 TRACE glance version = cls._validate_version(repository, version) 2016-03-11 10:21:37.520 TRACE glance File "/usr/local/lib/python2.7/dist-packages/migrate/versioning/schema.py", line 161, in _validate_version 2016-03-11 10:21:37.520 TRACE glance raise exceptions.InvalidVersionError(version) 2016-03-11 10:21:37.520 TRACE glance InvalidVersionError: 56 2016-03-11 10:21:37.520 TRACE glance In case of 'current_version' greater than 0 and less than the current database version it throws DatabaseAlreadyControlledError. $ glance-manage db sync 100 43 LOG: 2016-03-11 09:17:18.841 CRITICAL glance [-] DatabaseAlreadyControlledError 2016-03-11 09:17:18.841 TRACE glance Traceback (most recent call last): 2016-03-11 09:17:18.841 TRACE glance File "/usr/local/bin/glance-manage", line 10, in 2016-03-11 09:17:18.841 TRACE glance sys.exit(main()) 2016-03-11 09:17:18.841 TRACE glance File "/opt/stack/glance/glance/cmd/manage.py", line 353, in main 2016-03-11 09:17:18.841 TRACE glance return CONF.command.action_fn(*func_args, **func_kwargs) 2016-03-11 09:17:18.841 TRACE glance File "/opt/stack/glance/glance/cmd/manage.py", line 117, in sync 2016-03-11 09:17:18.841 TRACE glance version=current_version) 2016-03-11 09:17:18.841 TRACE glance File "/usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/migration.py", line 153, in db_version_control 2016-03-11 09:17:18.841 TRACE glance versioning_api.version_control(engine, repository, version) 2016-03-11 09:17:18.841 TRACE glance File "", line 2, in version_control 2016-03-11 09:17:18.841 TRACE glance File "/usr/local/lib/python2.7/dist-packages/migrate/versioning/util/__init__.py", line 160, in with_engine 2016-03-11 09:17:18.841 TRACE glance return f(*a, **kw) 2016-03-11 09:17:18.841 TRACE glance File "/usr/local/lib/python2.7/dist-packages/migrate/versioning/api.py", line 250, in version_control 2016-03-11 09:17:18.841 TRACE glance ControlledSchema.create(engine, repository, version) 2016-03-11 09:17:18.841 TRACE glance File "/usr/local/lib/python2.7/dist-packages/migrate/versioning/schema.py", line 141, in create 2016-03-11 09:17:18.841 TRACE glance table = cls._create_table_version(engine, repository, version) 2016-03-11 09:17:18.841 TRACE glance File "/usr/local/lib/python2.7/dist-packages/migrate/versioning/schema.py", line 189, in _create_table_version 2016-03-11 09:17:18.841 TRACE glance raise exceptions.DatabaseAlreadyControlledError 2016-03-11 09:17:18.841 TRACE glance DatabaseAlreadyControlledError 2016-03-11 09:17:18.841 TRACE glance To fix these issues we can go with following approaches: [A] Project oslo_db is using sqlalchemy-migrate internally so as both the exceptions are raised from migrate/versioning/schema.py of sqlalchemy-migrate project [1] [2], we can handle them in oslo_db itself and raise appropriate exception. Project oslo_db is imported in glance so we can easily import oslo_db.exception and catch exceptions to provide user friendly messages instead of traceback. [B] We can use generic 'Exception' class to handle the exceptions which are raised from third party projects. So which approach is right ? Please suggest your opinion. [1] https://github.com/openstack/sqlalchemy-migrate/blob/master/migrate/versioning/schema.py#L189 [2] https://github.com/openstack/sqlalchemy-migrate/blob/master/migrate/versioning/schema.py#L161