fix(proxy): handle missing DATABASE_URL in append_query_params (#21239)

* fix: handle missing database url in append_query_params

* Update litellm/proxy/proxy_cli.py

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
This commit is contained in:
Vincent Koc 2026-02-16 09:03:10 -08:00 committed by GitHub
parent 89e95f779f
commit 0dcc744f7e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 12 additions and 1 deletions

View File

@ -37,11 +37,16 @@ class LiteLLMDatabaseConnectionPool(Enum):
database_connection_pool_timeout = 60
def append_query_params(url, params) -> str:
def append_query_params(url: Optional[str], params: dict) -> str:
from litellm._logging import verbose_proxy_logger
verbose_proxy_logger.debug(f"url: {url}")
verbose_proxy_logger.debug(f"params: {params}")
if not isinstance(url, str) or url == "":
# Preserve previous startup behavior when DATABASE_URL is absent.
# Returning an empty string avoids urlparse type errors in test/dev flows.
verbose_proxy_logger.warning("append_query_params received empty or non-string URL, returning empty string")
return ""
parsed_url = urlparse.urlparse(url)
parsed_query = urlparse.parse_qs(parsed_url.query)
parsed_query.update(params)

View File

@ -218,6 +218,12 @@ class TestProxyInitializationHelpers:
assert "connection_limit=10" in modified_url
assert "pool_timeout=60" in modified_url
def test_append_query_params_handles_missing_url(self):
from litellm.proxy.proxy_cli import append_query_params
modified_url = append_query_params(None, {"connection_limit": 10})
assert modified_url == ""
@patch("uvicorn.run")
@patch("atexit.register") # 🔥 critical
def test_skip_server_startup(self, mock_atexit_register, mock_uvicorn_run):