← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1823370] Re: Evacuations are not restricted to the source cell during scheduling

 

Reviewed:  https://review.opendev.org/650429
Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=95df2a239c32f2ee5d00f06a59a9e91b59f3aca5
Submitter: Zuul
Branch:    master

commit 95df2a239c32f2ee5d00f06a59a9e91b59f3aca5
Author: Matt Riedemann <mriedem.os@xxxxxxxxx>
Date:   Fri Apr 5 15:36:00 2019 -0400

    Restrict RequestSpec to cell when evacuating
    
    When evacuating a server in a multi-cell environment
    we need to restrict the scheduling request during
    evacuate to the cell in which the instance already exists
    since we don't support cross-cell evacuate.
    
    This fixes the issue by restricting the RequestSpec to
    the instance's current cell during evacuate in the same
    way we do during unshelve.
    
    Note that this should also improve performance when
    rebuilding a server with a new image since we will only
    look for the ComputeNode from the targeted cell rather
    than iterate all enabled cells during scheduling.
    
    Change-Id: I497180fb81fd966d1d3d4b54ac66d2609347583e
    Closes-Bug: #1823370


** Changed in: nova
       Status: In Progress => Fix Released

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

Title:
  Evacuations are not restricted to the source cell during scheduling

Status in OpenStack Compute (nova):
  Fix Released
Status in OpenStack Compute (nova) pike series:
  Confirmed
Status in OpenStack Compute (nova) queens series:
  Confirmed
Status in OpenStack Compute (nova) rocky series:
  Confirmed
Status in OpenStack Compute (nova) stein series:
  Confirmed

Bug description:
  During most move operations we restrict the request spec to the cell
  the instance is in before calling the scheduler:

  unshelve:
  https://github.com/openstack/nova/blob/a6963fa6858289d048e4d27ce8e61637cd023f4c/nova/conductor/manager.py#L822

  cold migrate:
  https://github.com/openstack/nova/blob/a6963fa6858289d048e4d27ce8e61637cd023f4c/nova/conductor/tasks/migrate.py#L163

  live migrate:
  https://github.com/openstack/nova/blob/a6963fa6858289d048e4d27ce8e61637cd023f4c/nova/conductor/tasks/live_migrate.py#L354

  But for some reason we don't do that during evacuate (or rebuild to
  the same host with forced hosts/nodes when the image changes - which
  in that rebuild case means the scheduler is getting nodes from all
  cells just to find the one we are forcing):

  https://github.com/openstack/nova/blob/a6963fa6858289d048e4d27ce8e61637cd023f4c/nova/conductor/manager.py#L1011

  I'm not sure how this would fail, but if the scheduler did pick a host
  in another cell things would surely fail because evacuate won't work
  across cells (the instance data is in the source cell db).

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


References