Can't update snapshot instance export locations on completion of (driver assisted) migration

Bug #1661381 reported by Goutham Pacha Ravi
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Shared File Systems Service (Manila)
Fix Released
High
Rodrigo Barbieri

Bug Description

Steps to reproduce:

1) Use the dummy driver (or any driver that supports mountable snapshots and optimized migration)
2) Create a share, create a snapshot
3) Start and complete a migration

Failure in the share manager:

Driver assisted migration does not care about snapshot instance export locations, and hence fails in the share manager:

2017-02-01 22:25:02.186 ERROR manila.share.manager [req-0d397a30-f364-438b-9006-29ce7c5966fc e51196923a8d48d588076bca322844ef 392e88f75e8b4ac7bb66bf3a8e263569] Driver migration completion failed for share 2ccdb1b2-99a6-4552-9630-858a9cf79ce3.
2017-02-01 22:25:02.186 TRACE manila.share.manager Traceback (most recent call last):
2017-02-01 22:25:02.186 TRACE manila.share.manager File "/opt/stack/manila/manila/share/manager.py", line 1277, in migration_complete
2017-02-01 22:25:02.186 TRACE manila.share.manager dest_share_instance)
2017-02-01 22:25:02.186 TRACE manila.share.manager File "/opt/stack/manila/manila/share/manager.py", line 1215, in _migration_complete_driver
2017-02-01 22:25:02.186 TRACE manila.share.manager context, dest_snap_ins['id'], model_update)
2017-02-01 22:25:02.186 TRACE manila.share.manager File "/opt/stack/manila/manila/db/api.py", line 462, in share_snapshot_instance_update
2017-02-01 22:25:02.186 TRACE manila.share.manager return IMPL.share_snapshot_instance_update(context, instance_id, values)
2017-02-01 22:25:02.186 TRACE manila.share.manager File "/opt/stack/manila/manila/db/sqlalchemy/api.py", line 164, in wrapper
2017-02-01 22:25:02.186 TRACE manila.share.manager return f(*args, **kwargs)
2017-02-01 22:25:02.186 TRACE manila.share.manager File "/opt/stack/manila/manila/db/sqlalchemy/api.py", line 1964, in share_snapshot_instance_update
2017-02-01 22:25:02.186 TRACE manila.share.manager instance_ref.update(values)
2017-02-01 22:25:02.186 TRACE manila.share.manager File "/usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/models.py", line 96, in update
2017-02-01 22:25:02.186 TRACE manila.share.manager setattr(self, k, v)
2017-02-01 22:25:02.186 TRACE manila.share.manager File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/attributes.py", line 224, in __set__
2017-02-01 22:25:02.186 TRACE manila.share.manager instance_dict(instance), value, None)
2017-02-01 22:25:02.186 TRACE manila.share.manager File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/attributes.py", line 1027, in set
2017-02-01 22:25:02.186 TRACE manila.share.manager lambda adapter, i: adapter.adapt_like_to_iterable(i))
2017-02-01 22:25:02.186 TRACE manila.share.manager File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/attributes.py", line 1062, in _set_iterable
2017-02-01 22:25:02.186 TRACE manila.share.manager collections.bulk_replace(new_values, old_collection, new_collection)
2017-02-01 22:25:02.186 TRACE manila.share.manager File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/collections.py", line 785, in bulk_replace
2017-02-01 22:25:02.186 TRACE manila.share.manager constants = existing_idset.intersection(values or ())
2017-02-01 22:25:02.186 TRACE manila.share.manager File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/_collections.py", line 612, in intersection
2017-02-01 22:25:02.186 TRACE manila.share.manager result._members.update(self._working_set(members).intersection(other))
2017-02-01 22:25:02.186 TRACE manila.share.manager TypeError: unhashable type: 'dict'
2017-02-01 22:25:02.186 TRACE manila.share.manager
2017-02-01 22:25:02.637 ERROR oslo_messaging.rpc.server [req-0d397a30-f364-438b-9006-29ce7c5966fc e51196923a8d48d588076bca322844ef 392e88f75e8b4ac7bb66bf3a8e263569] Exception during message handling
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server Traceback (most recent call last):
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server File "/usr/local/lib/python2.7/dist-packages/oslo_messaging/rpc/server.py", line 155, in _process_incoming
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server res = self.dispatcher.dispatch(message)
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server File "/usr/local/lib/python2.7/dist-packages/oslo_messaging/rpc/dispatcher.py", line 222, in dispatch
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server return self._do_dispatch(endpoint, method, ctxt, args)
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server File "/usr/local/lib/python2.7/dist-packages/oslo_messaging/rpc/dispatcher.py", line 192, in _do_dispatch
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server result = func(ctxt, **new_args)
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server File "/opt/stack/manila/manila/utils.py", line 519, in wrapper
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server return func(self, *args, **kwargs)
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server File "/opt/stack/manila/manila/share/manager.py", line 1303, in migration_complete
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server raise exception.ShareMigrationFailed(reason=msg)
2017-02-01 22:25:02.637 TRACE oslo_messaging.rpc.server ShareMigrationFailed: Share migration failed: Driver migration completion failed for share 2ccdb1b2-99a6-4552-9630-858a9cf79ce3.

Changed in manila:
importance: Undecided → High
milestone: none → ocata-rc1
Changed in manila:
assignee: nobody → Rodrigo Barbieri (rodrigo-barbieri2010)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to manila (master)

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

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/428526
Committed: https://git.openstack.org/cgit/openstack/manila/commit/?id=6197a9108e61b5623abc0f63bbb304e3d2d03be2
Submitter: Jenkins
Branch: master

commit 6197a9108e61b5623abc0f63bbb304e3d2d03be2
Author: Rodrigo Barbieri <email address hidden>
Date: Thu Feb 2 22:54:07 2017 -0200

    Fix migration of mountable snapshots

    Fixed snapshot export locations present in model
    updates returned by driver during driver-assisted
    migration_complete being passed to the DB without
    any handling.

    This patch checks if mount_snapshot_support is
    present in destination share instance share type
    and handle it accordingly.

    Change-Id: I3b6635a3abc0751b30bd069426726243b6f49ef8
    Closes-bug: #1661381

Changed in manila:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/manila 4.0.0.0rc1

This issue was fixed in the openstack/manila 4.0.0.0rc1 release candidate.

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.