From 0dcc744f7e45e12afa98cd3d96bb87a39ff2b9c5 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Mon, 16 Feb 2026 09:03:10 -0800 Subject: [PATCH] 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> --- litellm/proxy/proxy_cli.py | 7 ++++++- tests/test_litellm/proxy/test_proxy_cli.py | 6 ++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/litellm/proxy/proxy_cli.py b/litellm/proxy/proxy_cli.py index 2509a80b14..e91447af89 100644 --- a/litellm/proxy/proxy_cli.py +++ b/litellm/proxy/proxy_cli.py @@ -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) diff --git a/tests/test_litellm/proxy/test_proxy_cli.py b/tests/test_litellm/proxy/test_proxy_cli.py index 12065ad5b4..be91800732 100644 --- a/tests/test_litellm/proxy/test_proxy_cli.py +++ b/tests/test_litellm/proxy/test_proxy_cli.py @@ -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):