Public bug reported:

When creating and instance and it is being spawned for the first time
fails, the instance's volumes' initialize_connection is being rolled-
back, but when unshelving an shelved-offloaded instance, there's no
rollback in case of failure.

The reason is that when spawning an instance for the first time, nova-compute 
calls initialize_connection using the _build_resources() method:
https://github.com/openstack/nova/blob/93e689516da0302b06c2760bb82c5004ae057913/nova/compute/manager.py#L1902
That context-aware method will also take care of rollback in case of a failure 
in spawning, and will terminate_connection of the volumes:
https://github.com/openstack/nova/blob/93e689516da0302b06c2760bb82c5004ae057913/nova/compute/manager.py#L2095

But, when unshelving an instance, initialize_connection is not called in a 
context aware method, and no rollback in happening when spawning fails.
https://github.com/openstack/nova/blob/93e689516da0302b06c2760bb82c5004ae057913/nova/compute/manager.py#L4330

This makes the volumes stay connected to the node even-though the instance is 
shelved-offloaded.
If you want to see this problem, replace the driver.spawn() call with a "raise 
Exception", and see the volumes have connection to the node even though they 
shouldn't have.

I'm using openstack Liberty, but I can see this problem in current
master (pre-Newton)

** Affects: nova
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1627694

Title:
  unshelving an instance doesn't rollback volumes connections

Status in OpenStack Compute (nova):
  New

Bug description:
  When creating and instance and it is being spawned for the first time
  fails, the instance's volumes' initialize_connection is being rolled-
  back, but when unshelving an shelved-offloaded instance, there's no
  rollback in case of failure.

  The reason is that when spawning an instance for the first time, nova-compute 
calls initialize_connection using the _build_resources() method:
  
https://github.com/openstack/nova/blob/93e689516da0302b06c2760bb82c5004ae057913/nova/compute/manager.py#L1902
  That context-aware method will also take care of rollback in case of a 
failure in spawning, and will terminate_connection of the volumes:
  
https://github.com/openstack/nova/blob/93e689516da0302b06c2760bb82c5004ae057913/nova/compute/manager.py#L2095

  But, when unshelving an instance, initialize_connection is not called in a 
context aware method, and no rollback in happening when spawning fails.
  
https://github.com/openstack/nova/blob/93e689516da0302b06c2760bb82c5004ae057913/nova/compute/manager.py#L4330

  This makes the volumes stay connected to the node even-though the instance is 
shelved-offloaded.
  If you want to see this problem, replace the driver.spawn() call with a 
"raise Exception", and see the volumes have connection to the node even though 
they shouldn't have.

  I'm using openstack Liberty, but I can see this problem in current
  master (pre-Newton)

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1627694/+subscriptions

-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : yahoo-eng-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to