Fix greptile reviews and mock test

This commit is contained in:
Sameer Kankute 2026-03-23 22:49:57 +05:30 committed by shivam
parent 010dab313a
commit c033d9f841
3 changed files with 48 additions and 2 deletions

View file

@ -1,6 +1,7 @@
import asyncio
import copy
import time
from collections import OrderedDict
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union
from fastapi import Request
@ -37,7 +38,9 @@ from litellm.types.utils import (
)
service_logger_obj = ServiceLogging() # used for tracking latency on OTEL
_STALE_TEAM_ALIAS_WARNING_KEYS: set[str] = set()
# Bounded dedup for stale-alias warnings (FIFO eviction when over cap).
_MAX_STALE_ALIAS_WARNING_KEYS = 10_000
_STALE_TEAM_ALIAS_WARNING_KEYS: OrderedDict[str, None] = OrderedDict()
if TYPE_CHECKING:
@ -1334,7 +1337,12 @@ def _update_model_if_team_alias_exists(
return
warning_key = f"{user_api_key_dict.team_id}:{_model}:{aliased_target}"
if warning_key not in _STALE_TEAM_ALIAS_WARNING_KEYS:
_STALE_TEAM_ALIAS_WARNING_KEYS.add(warning_key)
_STALE_TEAM_ALIAS_WARNING_KEYS[warning_key] = None
while (
len(_STALE_TEAM_ALIAS_WARNING_KEYS)
> _MAX_STALE_ALIAS_WARNING_KEYS
):
_STALE_TEAM_ALIAS_WARNING_KEYS.popitem(last=False)
verbose_proxy_logger.warning(
"Stale team model alias detected for model='%s', team_id='%s'. "
"New sibling deployments may be unreachable. "

View file

@ -495,6 +495,9 @@ async def _update_existing_team_model_assignment(
)
if old_public_name and public_model_name != old_public_name:
# Clear user-supplied public name from patch before any early return so the
# caller does not overwrite the internal UUID-based model_name in the DB.
patch_data.model_name = None
if prisma_client is None:
verbose_proxy_logger.warning(
"prisma_client not initialized; skipping public name update entirely to avoid orphaned entries"

View file

@ -916,6 +916,41 @@ class TestTeamModelUpdate:
mock_add.assert_called_once()
mock_delete.assert_not_called()
@pytest.mark.asyncio
async def test_rename_with_prisma_none_clears_patch_model_name(self):
"""Rename path must clear patch_data.model_name even when prisma is unavailable (P1)."""
from litellm.proxy.management_endpoints.model_management_endpoints import (
_update_existing_team_model_assignment,
)
from litellm.types.router import ModelInfo
db_model = Deployment(
model_name="model_name_team_123_uuid1",
litellm_params=LiteLLM_Params(model="azure/gpt-4o-mini"),
model_info=ModelInfo(
team_id="team_123", team_public_model_name="old-public-name"
),
)
patch_data = updateDeployment(
model_name="new-public-name",
model_info=ModelInfo(team_id="team_123"),
)
user_api_key_dict = UserAPIKeyAuth(
user_id="test_user",
user_role=LitellmUserRoles.PROXY_ADMIN,
)
await _update_existing_team_model_assignment(
team_id="team_123",
public_model_name="new-public-name",
db_model=db_model,
patch_data=patch_data,
user_api_key_dict=user_api_key_dict,
prisma_client=None,
)
assert patch_data.model_name is None
@pytest.mark.asyncio
async def test_rename_handles_legacy_string_model_info(self):
"""Test rename path handles legacy string-encoded model_info rows without crashing."""