Merge "Fix performance glitch while sorting image locations"

This commit is contained in:
Zuul 2025-01-10 15:41:12 +00:00 committed by Gerrit Code Review
commit b9e979236c
2 changed files with 8 additions and 11 deletions

View File

@ -720,13 +720,12 @@ def sort_image_locations(locations):
if not store_id: if not store_id:
return 0 return 0
try: try:
store = glance_store.get_store_from_store_identifier(store_id) return glance_store.get_store_weight(store_id)
except glance_store.exceptions.UnknownScheme: except glance_store.exceptions.UnknownScheme:
msg = (_LW("Unable to find store '%s', returning " msg = (_LW("Unable to find store '%s', returning "
"default weight '0'") % store_id) "default weight '0'") % store_id)
LOG.warning(msg) LOG.warning(msg)
return 0 return 0
return store.weight if store is not None else 0
sorted_locations = sorted(locations, key=get_store_weight, reverse=True) sorted_locations = sorted(locations, key=get_store_weight, reverse=True)
LOG.debug(('Sorted locations: %s'), sorted_locations) LOG.debug(('Sorted locations: %s'), sorted_locations)

View File

@ -192,7 +192,7 @@ class TestUtils(test_utils.BaseTestCase):
'url': 'rbd://cccccccc/images/id', 'url': 'rbd://cccccccc/images/id',
'metadata': {'store': 'rbd3'} 'metadata': {'store': 'rbd3'}
}] }]
mp = "glance.common.utils.glance_store.get_store_from_store_identifier" mp = "glance.common.utils.glance_store.get_store_weight"
with mock.patch(mp) as mock_get_store: with mock.patch(mp) as mock_get_store:
utils.sort_image_locations(locations) utils.sort_image_locations(locations)
@ -218,10 +218,9 @@ class TestUtils(test_utils.BaseTestCase):
'url': 'rbd://cccccccc/images/id', 'url': 'rbd://cccccccc/images/id',
'metadata': {'store': 'rbd3'} 'metadata': {'store': 'rbd3'}
}] }]
mp = "glance.common.utils.glance_store.get_store_from_store_identifier" mp = "glance.common.utils.glance_store.get_store_weight"
with mock.patch(mp) as mock_get_store: with mock.patch(mp) as mock_get_store:
mock_store = mock_get_store.return_value mock_get_store.return_value = 100
mock_store.weight = 100
utils.sort_image_locations(locations) utils.sort_image_locations(locations)
# Since 3 stores are configured, internal method will be called 3 times # Since 3 stores are configured, internal method will be called 3 times
@ -246,7 +245,7 @@ class TestUtils(test_utils.BaseTestCase):
'url': 'rbd://cccccccc/images/id', 'url': 'rbd://cccccccc/images/id',
'metadata': {} 'metadata': {}
}] }]
mp = "glance.common.utils.glance_store.get_store_from_store_identifier" mp = "glance.common.utils.glance_store.get_store_weight"
with mock.patch(mp) as mock_get_store: with mock.patch(mp) as mock_get_store:
utils.sort_image_locations(locations) utils.sort_image_locations(locations)
@ -273,10 +272,9 @@ class TestUtils(test_utils.BaseTestCase):
'url': 'rbd://cccccccc/images/id', 'url': 'rbd://cccccccc/images/id',
'metadata': {} 'metadata': {}
}] }]
mp = "glance.common.utils.glance_store.get_store_from_store_identifier" mp = "glance.common.utils.glance_store.get_store_weight"
with mock.patch(mp) as mock_get_store: with mock.patch(mp) as mock_get_store:
mock_store = mock_get_store.return_value mock_get_store.return_value = 100
mock_store.weight = 100
utils.sort_image_locations(locations) utils.sort_image_locations(locations)
# Since 3 stores are configured, but only one location has # Since 3 stores are configured, but only one location has
@ -303,7 +301,7 @@ class TestUtils(test_utils.BaseTestCase):
'url': 'rbd://cccccccc/images/id', 'url': 'rbd://cccccccc/images/id',
'metadata': {'store': 'rbd3'} 'metadata': {'store': 'rbd3'}
}] }]
mp = "glance.common.utils.glance_store.get_store_from_store_identifier" mp = "glance.common.utils.glance_store.get_store_weight"
with mock.patch(mp) as mock_get_store: with mock.patch(mp) as mock_get_store:
mock_get_store.side_effect = store.UnknownScheme() mock_get_store.side_effect = store.UnknownScheme()
sorted_locations = utils.sort_image_locations(locations) sorted_locations = utils.sort_image_locations(locations)