Downgrade 12->11 doesn't work, if were created several share-networks with the same pairs of net-id and subnet-id

Bug #1275044 reported by Valeriy Ponomaryov
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Shared File Systems Service (Manila)
Fix Released
Critical
Aleksandr Chirko

Bug Description

How to reproduce:

1) manila share-network-create --neutron-net netid1 --neutron-subne subnetid1
2) delete share-network from 1)
3) create share-network with data from 1)
4) delete share-network from 3
5) manila-manage db sync 11
6) after step 5, we can create duplicates of share-networks, and still can not downgrade.

Result for (5):

2014-01-31 13:44:34 DEBUG [manila.utils] backend <module 'manila.db.sqlalchemy.migration' from '/opt/stack/manila/manila/db/sqlalchemy/migration.pyc'>
2014-01-31 13:44:34 DEBUG [migrate.versioning.repository] Loading repository /opt/stack/manila/manila/db/sqlalchemy/migrate_repo...
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Loading script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/001_manila_init.py...
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/001_manila_init.py loaded successfully
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Loading script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/002_quota_class.py...
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/002_quota_class.py loaded successfully
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Loading script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/003_add_share_tables.py...
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/003_add_share_tables.py loaded successfully
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Loading script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/004_add_share_snapshot_table.py...
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/004_add_share_snapshot_table.py loaded successfully
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Loading script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/005_make_user_quotas_key_and_value.py...
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/005_make_user_quotas_key_and_value.py loaded successfully
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Loading script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/006_add_share_metadata.py...
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/006_add_share_metadata.py loaded successfully
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Loading script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/007_add_security_service.py...
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/007_add_security_service.py loaded successfully
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Loading script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/008_add_share_networks_and_allocations.py...
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/008_add_share_networks_and_allocations.py loaded successfully
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Loading script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/009_add_password_field_to_security_service.py...
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/009_add_password_field_to_security_service.py loaded successfully
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Loading script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/010_change_project_user_quotas_deleted_column_type.py...
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/010_change_project_user_quotas_deleted_column_type.py loaded successfully
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Loading script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/011_change_type_of_deleted_column.py...
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/011_change_type_of_deleted_column.py loaded successfully
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Loading script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/012_change_unique_constraint_for_share_networks.py...
2014-01-31 13:44:34 DEBUG [migrate.versioning.script.base] Script /opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/012_change_unique_constraint_for_share_networks.py loaded successfully
2014-01-31 13:44:34 DEBUG [migrate.versioning.repository] Repository /opt/stack/manila/manila/db/sqlalchemy/migrate_repo loaded successfully
2014-01-31 13:44:34 DEBUG [migrate.versioning.repository] Config: OrderedDict([('db_settings', OrderedDict([('__name__', 'db_settings'), ('repository_id', 'manila'), ('version_table', 'migrate_version'), ('required_dbs', '[]')]))])
2014-01-31 13:44:34 INFO [migrate.versioning.api] 12 -> 11...
2014-01-31 13:44:34 CRITICAL [manila] (IntegrityError) (1062, "Duplicate entry 'netid1-subnetid1-31f019b00e4445f29e541e4f0b56831d' for key 'net_subnet_uc'") 'ALTER TABLE share_networks ADD CONSTRAINT net_subnet_uc UNIQUE (neutron_net_id, neutron_subnet_id, project_id)' ()
Traceback (most recent call last):
  File "/usr/local/bin/manila-manage", line 10, in <module>
    execfile(__file__)
  File "/opt/stack/manila/bin/manila-manage", line 435, in <module>
    main()
  File "/opt/stack/manila/bin/manila-manage", line 432, in main
    fn(*fn_args)
  File "/opt/stack/manila/bin/manila-manage", line 219, in sync
    return migration.db_sync(version)
  File "/opt/stack/manila/manila/db/migration.py", line 33, in db_sync
    return IMPL.db_sync(version=version)
  File "/opt/stack/manila/manila/db/sqlalchemy/migration.py", line 84, in db_sync
    version)
  File "/usr/local/lib/python2.7/dist-packages/migrate/versioning/api.py", line 202, in downgrade
    return _migrate(url, repository, version, upgrade=False, err=err, **opts)
  File "<string>", line 2, in _migrate
  File "/usr/local/lib/python2.7/dist-packages/migrate/versioning/util/__init__.py", line 159, in with_engine
    return f(*a, **kw)
  File "/usr/local/lib/python2.7/dist-packages/migrate/versioning/api.py", line 366, in _migrate
    schema.runchange(ver, change, changeset.step)
  File "/usr/local/lib/python2.7/dist-packages/migrate/versioning/schema.py", line 91, in runchange
    change.run(self.engine, step)
  File "/usr/local/lib/python2.7/dist-packages/migrate/versioning/script/py.py", line 145, in run
    script_func(engine)
  File "/opt/stack/manila/manila/db/sqlalchemy/migrate_repo/versions/012_change_unique_constraint_for_share_networks.py", line 51, in downgrade
    uc.create()
  File "/usr/local/lib/python2.7/dist-packages/migrate/changeset/constraint.py", line 44, in create
    self.__do_imports('constraintgenerator', *a, **kw)
  File "/usr/local/lib/python2.7/dist-packages/migrate/changeset/constraint.py", line 32, in __do_imports
    run_single_visitor(engine, visitorcallable, self, *a, **kw)
  File "/usr/local/lib/python2.7/dist-packages/migrate/changeset/databases/visitor.py", line 75, in run_single_visitor
    fn(element, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/migrate/changeset/ansisql.py", line 290, in visit_migrate_unique_constraint
    self._visit_constraint(*p, **k)
  File "/usr/local/lib/python2.7/dist-packages/migrate/changeset/ansisql.py", line 296, in _visit_constraint
    self.execute()
  File "/usr/local/lib/python2.7/dist-packages/migrate/changeset/ansisql.py", line 43, in execute
    return self.connection.execute(self.buffer.getvalue())
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1449, in execute
    params)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1628, in _execute_text
    statement, parameters
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1698, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1691, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 331, in do_execute
    cursor.execute(statement, parameters)
  File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute
    self.errorhandler(self, exc, value)
  File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue
IntegrityError: (IntegrityError) (1062, "Duplicate entry 'netid1-subnetid1-31f019b00e4445f29e541e4f0b56831d' for key 'net_subnet_uc'") 'ALTER TABLE share_networks ADD CONSTRAINT net_subnet_uc UNIQUE (neutron_net_id, neutron_subnet_id, project_id)' ()

summary: - Downgrade from migration 12 doesn't work, if in db exist several same
- pair of net-id and subnet-id
+ Downgrade 12->11 doesn't work, if in db exist several same pair of net-
+ id and subnet-id
summary: - Downgrade 12->11 doesn't work, if in db exist several same pair of net-
+ Downgrade 12->11 doesn't work, if in db exist several same pairs of net-
id and subnet-id
summary: - Downgrade 12->11 doesn't work, if in db exist several same pairs of net-
- id and subnet-id
+ Downgrade 12->11 doesn't work, if were created several share-networks
+ with the same pairs of net-id and subnet-id
description: updated
tags: added: share-network
tags: added: manila-db
Changed in manila:
assignee: nobody → Aleksandr Chirko (achirko)
Changed in manila:
importance: Undecided → Critical
Changed in manila:
status: New → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to manila (master)

Reviewed: https://review.openstack.org/70962
Committed: https://git.openstack.org/cgit/stackforge/manila/commit/?id=e8ade681b61ad3052d990907081a7427269de591
Submitter: Jenkins
Branch: master

commit e8ade681b61ad3052d990907081a7427269de591
Author: Aleks Chirko <email address hidden>
Date: Tue Feb 4 14:13:11 2014 +0200

    Squash all migrations into one

    Migration #12 have fixed bug
    https://bugs.launchpad.net/manila/+bug/1272303,
    but introduced a new one. Because that bug
    was rather architectural, we need to address
    that architectural flaw instead of fixing
    bugs as they come.
    Closes-Bug: #1275044

    Change-Id: I260a90abd1107c62b687118d5d4a01d7199ea56f

Changed in manila:
status: In Progress → Fix Committed
Changed in manila:
status: Fix Committed → Fix Released
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.