litellm/tests
Alexsander Hamir b02baf53a9
Fix: prevent memory blowout in LoggingWorker (#16559)
* fix: prevent memory blowout in LoggingWorker

Tasks were being executed sequentially with each task awaited before
processing the next one. When the queue had 10k+ tasks, only one could
execute at a time. Since the request rate exceeded execution speed,
objects accumulated in memory (50k+), holding references to heavy
objects and causing memory blowout.

The new implementation uses a semaphore to allow up to 1000 concurrent
tasks while properly tracking and cleaning up each task, significantly
improving throughput and preventing queue buildup.

* fix: require semaphor before removing task from queue

* fix: make worker concurrency configurable

* fix: clean comments

* fix: clarify new env purpose

* fix: add missing lib

* make constants configurable instead of hardcoded

* add more aggressive cleaning when queue is full

* add helpers function for the aggressive cleaning functionality

* use envs instead of static constants

* import and document constants

* add unit test for new functionality

* fix default value on config_settings

* fix: remove unused variables and imports to resolve linter errors

- Remove unused time_since_last_clear variable in logging_worker.py
  The variable was calculated but never used in _handle_queue_full()
  method, causing F841 linter error.

- Remove unused TYPE_CHECKING import in mcp_server/server.py
  The import was not used anywhere in the file, causing F401 linter error.

These changes improve code cleanliness and ensure the codebase passes
all linter checks without affecting functionality.

* add missing log expected by test_queue_full_handling

* fix: clean config_setting.md file

* fix: handle logging errors gracefully during shutdown in _flush_on_exit

During process shutdown, logging handlers may be closed while _flush_on_exit
tries to flush queued logging coroutines. This causes 'ValueError: I/O
operation on closed file' errors when coroutines attempt to log.

Changes:
- Add _safe_log helper method that wraps logging calls and suppresses
  errors when logging handlers are closed (ValueError, OSError, AttributeError)
- Replace all verbose_logger calls in _flush_on_exit with _safe_log
- Remove logging from exception handler in coroutine execution loop
  to prevent cascading errors during shutdown

This ensures graceful shutdown even when logging handlers are closed,
which is common during process termination.
2025-11-22 13:58:29 -08:00
..
audio_tests add runwayml/eleven_multilingual_v2 pricing 2025-11-13 16:45:35 -08:00
basic_proxy_startup_tests test_health_and_chat_completion 2025-10-31 19:28:59 -07:00
batches_tests [Feat] Bedrock Batches - Add support for custom KMS encryption keys in Bedrock Batch operations (#16662) 2025-11-14 16:00:43 -08:00
code_coverage_tests fix img URL for tests 2025-11-22 09:41:15 -08:00
documentation_tests Litellm docs readme fixes (#16107) 2025-10-30 17:05:32 -07:00
enterprise Add managed files support for responses API (#16733) 2025-11-17 18:41:26 -08:00
guardrails_tests Add Zscaler AI Guard hook (#15691) 2025-11-11 15:34:27 -08:00
image_gen_tests fix img gen 2025-11-21 17:18:48 -08:00
litellm/llms Fix image_config.aspect_ratio not working for gemini-2.5-flash-image (#15999) 2025-11-03 08:48:36 -08:00
litellm_utils_tests [Feat] Adds IAM role assumption support for AWS Secret Manager (#16887) 2025-11-20 12:38:48 -08:00
litellm-proxy-extras
llm_responses_api_testing Litellm sameer nov 3 stable branch (#16963) 2025-11-22 09:35:05 -08:00
llm_translation (feat) Anthropic - support Structured Outputs output_format for Claude 4.5 sonnet and Opus 4.1 + Arize Phoenix - root span logging (#16949) 2025-11-22 12:08:26 -08:00
load_tests
local_testing test_package_dependencies 2025-11-22 11:20:40 -08:00
logging_callback_tests test logging tests + mcp server QA checks 2025-11-15 08:58:46 -08:00
mcp_tests test MCP server 2025-11-22 10:02:15 -08:00
multi_instance_e2e_tests
ocr_tests [Feat] Add Azure AI Doc Intelligence OCR (#16219) 2025-11-03 17:22:19 -08:00
old_proxy_tests/tests claude-sonnet-4-5-20250929 fix 2025-10-31 18:20:52 -07:00
openai_endpoints_tests Litellm sameer nov 3 stable branch (#16963) 2025-11-22 09:35:05 -08:00
otel_tests test_team_budget_metrics 2025-11-01 09:21:17 -07:00
pass_through_tests fix: use vllm passthrough config for hosted vllm provider instead of raising error (#16537) 2025-11-12 09:12:14 -08:00
pass_through_unit_tests fix test claude-sonnet-4-5-20250929 2025-10-31 18:13:29 -07:00
proxy_admin_ui_tests ui testing fixes 2025-11-22 13:44:58 -08:00
proxy_security_tests
proxy_unit_tests fix: add missing mock attributes in websocket and realtime tests (#16974) 2025-11-22 10:44:23 -08:00
router_unit_tests [Fix] - Router's Cache: Fix routing for requests with same cacheable prefix but different user messages (#16951) 2025-11-21 19:13:40 -08:00
scim_tests
search_tests [Bug Fix]: Search APIs - error in firecrawl-search "Invalid request body" (#16943) 2025-11-21 14:56:19 -08:00
spend_tracking_tests fix ocr test 2025-10-31 20:32:03 -07:00
store_model_in_db_tests Feat/persist mcp credentials in db (#16308) 2025-11-07 19:22:49 -08:00
test_litellm Fix: prevent memory blowout in LoggingWorker (#16559) 2025-11-22 13:58:29 -08:00
unified_google_tests
vector_store_tests (feat) Milvus - search vector store support + (fix) Passthrough Endpoints - support multi-part form data on passthrough (#16035) 2025-11-01 12:00:29 -07:00
windows_tests
__init__.py
gettysburg.wav
large_text.py
openai_batch_completions.jsonl
README.MD
test_budget_management.py
test_callbacks_on_proxy.py
test_config.py
test_debug_warning.py
test_end_users.py
test_entrypoint.py
test_fallbacks.py
test_gpt5_azure_temperature_support.py Fix: Azure GPT-5 incorrectly routed to O-series config (temperature parameter unsupported) (#16246) 2025-11-07 10:24:27 -08:00
test_health.py
test_keys.py
test_litellm_proxy_responses_config.py Add native Responses API support for litellm_proxy provider (#15347) 2025-10-08 18:31:26 -07:00
test_logging.conf
test_models.py
test_openai_endpoints.py test fix claude-sonnet-4-5-20250929 2025-10-28 19:05:13 -07:00
test_organizations.py
test_passthrough_endpoints.py
test_ratelimit.py test_async_rate_limit 2025-11-15 10:34:24 -08:00
test_resource_cleanup.py
test_spend_logs.py
test_team_logging.py
test_team_members.py
test_team.py
test_users.py

In total litellm runs 1000+ tests

[02/20/2025] Update:

To make it easier to contribute and map what behavior is tested,

we've started mapping the litellm directory in tests/test_litellm

This folder can only run mock tests.