Marking this bug as invalid in favor of bugs #1685340 and #1662626 with
respective commits https://review.openstack.org/#/c/458958/ and
https://review.openstack.org/#/c/457023/ .

The most we can hope for in a situation such as this is that the true
state is reflected to the user/operator which the referenced
bugs/commits achieve.

** Changed in: nova
       Status: Confirmed => Invalid

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

Title:
  network failure during post live-migrate fails to update hypervisor
  host

Status in OpenStack Compute (nova):
  Invalid

Bug description:
  Description
  ===========
  If the network fails during post live-migration tasks, the host/hypervisor 
property of the instance isn't updated to reflect the *new* compute host.

  The migrated instance appears to function properly, but issuing 'nova
  show <instance_id>' still shows the origin compute node along with a
  stack trace.

  Per the trace below, a failure occurs inside
  post_live_migration_at_destination() during a call to
  network_api.migrate_instance_finish() which attempts to update the
  neutron port mappings. This code exists outside the try/except/finally
  block that will update the database regardless of failure. Should
  network connectivity be lost, or the neutron api  doesn't answer, the
  instance properties aren't saved.

  
  Steps to reproduce
  ==================
  $ nova live-migration 0386d6cf-edf8-42b8-998f-54103ba675fe node1
  $ nova show 0386d6cf-edf8-42b8-998f-54103ba675fe
  
+--------------------------------------+----------------------------------------------------------+
  | Property                             | Value                                
                    |
  
+--------------------------------------+----------------------------------------------------------+
  | OS-DCF:diskConfig                    | AUTO                                 
                    |
  | OS-EXT-AZ:availability_zone          | nova                                 
                    |
  | OS-EXT-SRV-ATTR:host                 | node1                                
                    |
  | OS-EXT-SRV-ATTR:hypervisor_hostname  | node1.example.org                    
                    |
  | OS-EXT-SRV-ATTR:instance_name        | instance-00000034                    
                    |
  | OS-EXT-STS:power_state               | 1                                    
                    |
  | OS-EXT-STS:task_state                | migrating                            
                    |
  | OS-EXT-STS:vm_state                  | active                               
                   

  
  A Few minutes later, vm_state is in 'error' and a stack trace can be seen
  $ nova show 0386d6cf-edf8-42b8-998f-54103ba675fe
  ...
  ...SNIP
  ........
   fault  {"message": "Unable to establish connection to 
http://192.168.1.34:9696/v2.0/ports/dd042ee1-77c0-4c52-b5ea-9b5fbdd02860.json";, 
"code": 500, "details": "  File 
\"/usr/lib/python2.7/dist-packages/nova/compute/manager.py\", line 375, in 
decorated_function 
              return function(self, context, *args, **kwargs)
            File \"/usr/lib/python2.7/dist-packages/nova/compute/manager.py\", 
line 5571, in post_live_migration_at_destination             
              migration)      
            File 
\"/usr/lib/python2.7/dist-packages/nova/network/neutronv2/api.py\", line 1577, 
in migrate_instance_finish 
              migration['dest_compute'])       
            File 
\"/usr/lib/python2.7/dist-packages/nova/network/neutronv2/api.py\", line 1886, 
in _update_port_binding_for_instance        
              p['id'], instance=instance)      
            File \"/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py\", 
line 220, in __exit__          
              self.force_reraise()             
            File \"/usr/lib/python2.7/dist-packages/oslo_utils/excutils.py\", 
line 196, in force_reraise     
              six.reraise(self.type_, self.value, self.tb)   
            File 
\"/usr/lib/python2.7/dist-packages/nova/network/neutronv2/api.py\", line 1882, 
in _update_port_binding_for_instance        
              {'port': {'binding:host_id': host}})           
            File 
\"/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py\", line 97, in 
with_params  
              ret = self.function(instance, *args, **kwargs) 
            File 
\"/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py\", line 659, in 
update_port 
              return self.put(self.port_path % (port), body=body)             
            File 
\"/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py\", line 367, in 
put         
              headers=headers, params=params)  
            File 
\"/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py\", line 335, in 
retry_request             
              headers=headers, params=params)  
            File 
\"/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py\", line 286, in 
do_request  
              resp, replybody = self.httpclient.do_request(action, method, 
body=body)       
            File \"/usr/lib/python2.7/dist-packages/neutronclient/client.py\", 
line 306, in do_request       
              return self.request(url, method, **kwargs)     
            File \"/usr/lib/python2.7/dist-packages/neutronclient/client.py\", 
line 294, in request          
              resp = super(SessionClient, self).request(*args, **kwargs)      
            File \"/usr/lib/python2.7/dist-packages/keystoneauth1/adapter.py\", 
line 98, in request          
              return self.session.request(url, method, **kwargs)              
            File \"/usr/lib/python2.7/dist-packages/positional/__init__.py\", 
line 94, in inner              
              return func(*args, **kwargs)     
            File \"/usr/lib/python2.7/dist-packages/keystoneauth1/session.py\", 
line 452, in request         
              resp = send(**kwargs)            
            File \"/usr/lib/python2.7/dist-packages/keystoneauth1/session.py\", 
line 496, in _send_request   
              raise exceptions.ConnectFailure(msg)           
          ", "created": "2016-10-26T22:54:10Z"}                    

  
  Expected result
  ===============
  'host' and 'hypervisor_hostname' should be updated to the destination compute 
node.

  
  Environment
  ===========
  Ubuntu 16.04
  Openstack Mitaka
    Nova 13.1.1
    Neutron 8.1.2
      + Calico driver 1.3.0

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

-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to