It sounds like the deeper issue is how the memory stat going to 0 for the instance, and if it went to ERROR state or not. This should never happen. Marking this bug as invalid and we should instead open a separate bug on how to prevent us from getting stuck in that state. If memory goes to 0 the instance should be in ERROR state.
** Changed in: nova Status: New => 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/1413119 Title: Pre-migration memory check- Invalid error message if memory value is 0 Status in OpenStack Compute (Nova): Invalid Bug description: There is possible correction in the logic and error handling in the pre-migration memory check in case when the memory value is zero '0'. This check is present in the source code class: nova/conductor/tasks/live_migrate.py Below is the current code snippet: if not mem_inst or avail <= mem_inst: instance_uuid = self.instance.uuid dest = self.destination reason = _("Unable to migrate %(instance_uuid)s to %(dest)s: " "Lack of memory(host:%(avail)s <= " "instance:%(mem_inst)s)") raise exception.MigrationPreCheckError(reason=reason % dict( instance_uuid=instance_uuid, dest=dest, avail=avail, mem_inst=mem_inst)) It can be seen that when mem_inst value is 0, the if condition is met and control enters the block resulting in 'lack of memory' error with a message 'avail memory < 0'. This is absurd. Sample error message when memory is zero: 2014-10-13 19:52:09.441 3907 INFO nova.api.openstack.wsgi [req-8430dd30-4f17-4094-bbec-ec9cf3593c79 502 eec6e74886804b79b78ac4fceed5b685] NV-4EB7C79 HTTP exception thrown: NV-78D5611 Migration pre-check error: NV-37B7976 Unable to migrate 352122ae-1ca1-43b3-8ba6-709d93fd580c to 9117MMB_100DBCP: Lack of memory(host:65536 <= instance:0) The trailing end part of the error doesn't make much sense (host:65536 <= instance:0). Possible correction: The check should handle the special case of zero memory value in a different way. If memory equals zero, then a different error of exception should be raised about invalid memory. Sample fix: if mem_inst <= 0: reason = _("Unable to migrate %(instance_uuid)s to %(dest)s: " "Invalid value for existing instance memory: %(mem_inst)s.") raise exception.MigrationPreCheckError(reason=reason % dict( instance_uuid=instance_uuid, dest=dest, mem_inst=mem_inst)) elif avail <= mem_inst: reason = _("Unable to migrate %(instance_uuid)s to %(dest)s: " "Lack of memory available at destination. (host:%(avail)s <= " "instance:%(mem_inst)s.") raise exception.MigrationPreCheckError(reason=reason % dict( instance_uuid=instance_uuid, dest=dest, avail=avail, mem_inst=mem_inst)) To manage notifications about this bug go to: https://bugs.launchpad.net/nova/+bug/1413119/+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