diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-04-22 14:18:34 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-04-22 14:18:34 +0000 |
commit | 623fc7151655d1b5efbf9b5dfb89def1e860cc85 (patch) | |
tree | f6d9b0f35a46c81471ce33c4a43c56f59117dd7e | |
parent | 5c9ced73f65201c384dcb96ebb835d836605595e (diff) | |
parent | 389368bcfe498323b369f68682babb92a5b0ca54 (diff) | |
download | nova-623fc7151655d1b5efbf9b5dfb89def1e860cc85.tar.gz |
Merge "Resource tracker: unable to restart nova compute" into stable/kilo
-rw-r--r-- | nova/compute/resource_tracker.py | 7 | ||||
-rw-r--r-- | nova/tests/unit/compute/test_resource_tracker.py | 12 |
2 files changed, 16 insertions, 3 deletions
diff --git a/nova/compute/resource_tracker.py b/nova/compute/resource_tracker.py index 7ef8ea5020..747985ea9b 100644 --- a/nova/compute/resource_tracker.py +++ b/nova/compute/resource_tracker.py @@ -705,10 +705,11 @@ class ResourceTracker(object): # do some defensive filtering against bad migrations records in the # database: for migration in migrations: - instance = migration.instance - - if not instance: + try: + instance = migration.instance + except exception.InstanceNotFound as e: # migration referencing deleted instance + LOG.debug('Migration instance not found: %s', e) continue uuid = instance.uuid diff --git a/nova/tests/unit/compute/test_resource_tracker.py b/nova/tests/unit/compute/test_resource_tracker.py index 295b1dea97..73c8d32c19 100644 --- a/nova/tests/unit/compute/test_resource_tracker.py +++ b/nova/tests/unit/compute/test_resource_tracker.py @@ -1084,6 +1084,18 @@ class InstanceClaimTestCase(BaseTrackerTestCase): self.assertEqual(0, self.tracker.compute_node['memory_mb_used']) self.assertEqual(0, self.tracker.compute_node['local_gb_used']) + @mock.patch('nova.objects.MigrationList.get_in_progress_by_host_and_node') + def test_deleted_instances_with_migrations(self, mock_migration_list): + migration = objects.Migration(context=self.context, + instance_uuid='invalid') + mock_migration_list.return_value = [migration] + self.tracker.update_available_resource(self.context) + self.assertEqual(0, self.tracker.compute_node['memory_mb_used']) + self.assertEqual(0, self.tracker.compute_node['local_gb_used']) + mock_migration_list.assert_called_once_with(self.context, + "fakehost", + "fakenode") + class ResizeClaimTestCase(BaseTrackerTestCase): |