From 7a25be633c457c09391d1a16d663617fe9df36ee Mon Sep 17 00:00:00 2001 From: Matthew Farrellee Date: Fri, 26 Sep 2025 16:19:21 -0400 Subject: [PATCH] fix: Revert "fix: Added a bug fix when registering new models" (#3473) the commit to be reverted is an public api behavior change to something we should not support. instead of allowing silent updates (the caller cannot see the log messages), we should be sending an error to the caller that they must first unregister the model before reusing the same name w/ a different backend. --- llama_stack/core/store/registry.py | 8 +++----- tests/unit/registry/test_registry.py | 13 ++++--------- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/llama_stack/core/store/registry.py b/llama_stack/core/store/registry.py index a764d692a..5f4abe9aa 100644 --- a/llama_stack/core/store/registry.py +++ b/llama_stack/core/store/registry.py @@ -96,11 +96,9 @@ class DiskDistributionRegistry(DistributionRegistry): async def register(self, obj: RoutableObjectWithProvider) -> bool: existing_obj = await self.get(obj.type, obj.identifier) - # warn if the object's providerid is different but proceed with registration - if existing_obj and existing_obj.provider_id != obj.provider_id: - logger.warning( - f"Object {existing_obj.type}:{existing_obj.identifier}'s {existing_obj.provider_id} provider is being replaced with {obj.provider_id}" - ) + # dont register if the object's providerid already exists + if existing_obj and existing_obj.provider_id == obj.provider_id: + return False await self.kvstore.set( KEY_FORMAT.format(type=obj.type, identifier=obj.identifier), diff --git a/tests/unit/registry/test_registry.py b/tests/unit/registry/test_registry.py index 9873bec5b..4ea4a20b9 100644 --- a/tests/unit/registry/test_registry.py +++ b/tests/unit/registry/test_registry.py @@ -129,7 +129,7 @@ async def test_duplicate_provider_registration(cached_disk_dist_registry): result = await cached_disk_dist_registry.get("vector_db", "test_vector_db_2") assert result is not None - assert result.embedding_model == duplicate_vector_db.embedding_model # Original values preserved + assert result.embedding_model == original_vector_db.embedding_model # Original values preserved async def test_get_all_objects(cached_disk_dist_registry): @@ -174,14 +174,10 @@ async def test_parse_registry_values_error_handling(sqlite_kvstore): ) await sqlite_kvstore.set( - KEY_FORMAT.format(type="vector_db", identifier="valid_vector_db"), - valid_db.model_dump_json(), + KEY_FORMAT.format(type="vector_db", identifier="valid_vector_db"), valid_db.model_dump_json() ) - await sqlite_kvstore.set( - KEY_FORMAT.format(type="vector_db", identifier="corrupted_json"), - "{not valid json", - ) + await sqlite_kvstore.set(KEY_FORMAT.format(type="vector_db", identifier="corrupted_json"), "{not valid json") await sqlite_kvstore.set( KEY_FORMAT.format(type="vector_db", identifier="missing_fields"), @@ -216,8 +212,7 @@ async def test_cached_registry_error_handling(sqlite_kvstore): ) await sqlite_kvstore.set( - KEY_FORMAT.format(type="vector_db", identifier="valid_cached_db"), - valid_db.model_dump_json(), + KEY_FORMAT.format(type="vector_db", identifier="valid_cached_db"), valid_db.model_dump_json() ) await sqlite_kvstore.set(