← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1675570] [NEW] Volumes are not detached when deleting shelved offloaded servers

 

Public bug reported:

I performed the following steps in a functional test within Nova:

1. Create a server and wait for it to be ACTIVE.
2. Shelve the server (it's automatically offloaded from the compute host).
3. Attach a volume to the shelved offloaded server (using microversion 2.20 or later).
4. Wait for the volume to show up as attached to the server and be in 'in-use' state.
5. Delete the server. This triggers a "local delete" in the API code since instance.host is None.

Expected result:

The volume is detached from the server and in 'available' status again.

Actual result:

The volume status is still 'in-use' even though the server is deleted.

This is a regression in Ocata with the cells v2 code that was added in
the local delete flow in the API:

https://github.com/openstack/nova/blob/2a41eb8786fa1654bbecb50c2a15fdd96fdc4767/nova/compute/api.py#L1887

The problem is with cells v2 when the instance is mapped to a cell, and
we do a local delete, we're destroying the instance in the cell but we
aren't cleaning up the volumes like we would normally do in the old
local delete flow where the instance.host is None but not mapped to a
cell:

https://github.com/openstack/nova/blob/2a41eb8786fa1654bbecb50c2a15fdd96fdc4767/nova/compute/api.py#L2207

** Affects: nova
     Importance: High
         Status: Triaged


** Tags: api cells ocata-backport-potential volumes

-- 
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/1675570

Title:
  Volumes are not detached when deleting shelved offloaded servers

Status in OpenStack Compute (nova):
  Triaged

Bug description:
  I performed the following steps in a functional test within Nova:

  1. Create a server and wait for it to be ACTIVE.
  2. Shelve the server (it's automatically offloaded from the compute host).
  3. Attach a volume to the shelved offloaded server (using microversion 2.20 or later).
  4. Wait for the volume to show up as attached to the server and be in 'in-use' state.
  5. Delete the server. This triggers a "local delete" in the API code since instance.host is None.

  Expected result:

  The volume is detached from the server and in 'available' status
  again.

  Actual result:

  The volume status is still 'in-use' even though the server is deleted.

  This is a regression in Ocata with the cells v2 code that was added in
  the local delete flow in the API:

  https://github.com/openstack/nova/blob/2a41eb8786fa1654bbecb50c2a15fdd96fdc4767/nova/compute/api.py#L1887

  The problem is with cells v2 when the instance is mapped to a cell,
  and we do a local delete, we're destroying the instance in the cell
  but we aren't cleaning up the volumes like we would normally do in the
  old local delete flow where the instance.host is None but not mapped
  to a cell:

  https://github.com/openstack/nova/blob/2a41eb8786fa1654bbecb50c2a15fdd96fdc4767/nova/compute/api.py#L2207

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


Follow ups