Skip to content

Commit 25b67a3

Browse files
[MISC] Remove broken is_default fallback in get_adapter_by_name_and_type (#1998)
* [FIX] Remove broken is_default fallback in get_adapter_by_name_and_type `AdapterInstance` has no `is_default` field — never defined in any migration. The dead `else: is_default=True` branch in `get_adapter_by_name_and_type` raises Django `FieldError` whenever entered, surfacing as HTTP 500 on the tool_instance PATCH path (seen via the customer org-clone script). The path is reached from `update_metadata_with_adapter_properties` when an adapter slot is present in metadata but its value is empty/None (e.g. an unbound x2text_adapter on a text_extractor tool). Two-part fix: - `adapter_processor.py`: drop the unreachable-as-feature else; require `adapter_name` and raise `AdapterNotFound` if missing. Default-adapter semantics live in `UserDefaultAdapter` / `get_default_adapters`, not here. - `tool_instance_helper.py`: short-circuit on empty/None `adapter_value` in `update_metadata_with_adapter_properties` — nothing to resolve. All 3 in-tree callers already pass a truthy `adapter_name` (or now skip beforehand), so no behavior change for valid inputs. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * [MISC] Drop redundant comment on empty-adapter-value skip Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
1 parent 26624d0 commit 25b67a3

2 files changed

Lines changed: 13 additions & 12 deletions

File tree

‎backend/adapter_processor_v2/adapter_processor.py‎

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ def get_adapters_by_type(
256256
@staticmethod
257257
def get_adapter_by_name_and_type(
258258
adapter_type: AdapterTypes,
259-
adapter_name: str | None = None,
259+
adapter_name: str,
260260
) -> AdapterInstance:
261261
"""Get the adapter instance by its name and type.
262262
@@ -270,20 +270,19 @@ def get_adapter_by_name_and_type(
270270
Raises:
271271
- AdapterNotFound: If the adapter is not found.
272272
"""
273+
if not adapter_name:
274+
raise AdapterNotFound(
275+
f"adapter_name is required to look up an adapter of type "
276+
f"'{adapter_type.value}'"
277+
)
273278
try:
274-
if adapter_name:
275-
adapter: AdapterInstance = AdapterInstance.objects.get(
276-
adapter_name=adapter_name, adapter_type=adapter_type.value
277-
)
278-
else:
279-
adapter = AdapterInstance.objects.get(
280-
adapter_type=adapter_type.value, is_default=True
281-
)
279+
adapter: AdapterInstance = AdapterInstance.objects.get(
280+
adapter_name=adapter_name, adapter_type=adapter_type.value
281+
)
282282
except AdapterInstance.DoesNotExist:
283283
error_msg = (
284-
f"Couldn't find adapter with name '{adapter_name}' and type '{adapter_type.value}'"
285-
if adapter_name
286-
else f"Couldn't find default adapter with type '{adapter_type.value}'"
284+
f"Couldn't find adapter with name '{adapter_name}' "
285+
f"and type '{adapter_type.value}'"
287286
)
288287
logger.error(error_msg)
289288
raise AdapterNotFound(error_msg)

‎backend/tool_instance_v2/tool_instance_helper.py‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ def update_metadata_with_adapter_properties(
9797
"""
9898
if adapter_key in metadata:
9999
adapter_value = metadata[adapter_key]
100+
if not adapter_value:
101+
return
100102
if ToolInstanceHelper.is_uuid_format(adapter_value):
101103
logger.debug(f"Adapter value '{adapter_value}' is already in UUID format")
102104
adapter = AdapterInstance.objects.get(

0 commit comments

Comments
 (0)