litellm/tests/proxy_unit_tests
Yassin Kortam c6b2f111a6
fix(team): make team member add atomic to prevent concurrent-add member loss (#34185)
_add_team_members_to_team reconciled membership by reading the complete_team_data
snapshot captured at the start of team_member_add, appending in memory, and
writing the whole members_with_roles array back. Two concurrent /team/member_add
calls for the same team read the same snapshot, so the last write wins and one
member is silently lost. This affects every concurrent team member add, including
the SCIM group PATCH op:add path that routes through team_member_add

Reconcile members_with_roles inside a transaction that locks the team row with
SELECT ... FOR UPDATE before re-reading the current membership, so concurrent
writers serialize on the row lock and each appends onto the other's committed
result. The interactive transaction is exposed through a thin PrismaClient.tx()
passthrough and the locked read is encapsulated in
TeamRepository.get_members_with_roles_locked, and the SCIM group PATCH applies
membership as deltas so concurrent adds are not clobbered
2026-07-22 21:47:22 +00:00
..
example_config_yaml
test_configs
test_model_response_typing
azure_fine_tune.jsonl
batch_job_results_furniture.jsonl
conftest copy.py
conftest.py
data_map.txt
eagle.wav
gettysburg.wav
large_text.py
messages_with_counts.py
model_cost.json
openai_batch_completions.jsonl
openai_batch_completions_router.jsonl
speech_vertex.mp3
test_aproxy_startup.py
test_audit_logs_proxy.py
test_auth_checks.py
test_banned_keyword_list.py
test_blog_posts_endpoint.py
test_check_batch_cost.py
test_check_responses_cost.py
test_custom_callback_input.py
test_custom_logger_s3_gcs.py
test_custom_tokenizer_bug.py
test_db_schema_changes.py
test_default_end_user_budget_simple.py
test_deployed_proxy_keygen.py
test_deprecated_key_grace_period.py
test_e2e_pod_lock_manager.py
test_gemini_agents_endpoints.py
test_get_favicon.py
test_get_image.py
test_google_endpoint_routing.py
test_google_gemini_proxy_request.py
test_jwt.py
test_jwt_key_mapping.py
test_key_generate_dynamodb.py
test_key_generate_prisma.py
test_models_fallback_endpoint.py
test_multipart_bypass_repro.py
test_prisma_client_backoff_retry.py
test_prompt_test_endpoint.py
test_proxy_config_unit_test.py
test_proxy_custom_auth.py
test_proxy_custom_logger.py
test_proxy_encrypt_decrypt.py
test_proxy_exception_mapping.py
test_proxy_gunicorn.py
test_proxy_pass_user_config.py
test_proxy_reject_logging.py
test_proxy_routes.py
test_proxy_server.py fix(team): make team member add atomic to prevent concurrent-add member loss (#34185) 2026-07-22 21:47:22 +00:00
test_proxy_server_caching.py
test_proxy_server_keys.py
test_proxy_server_langfuse.py
test_proxy_server_spend.py
test_proxy_setting_guardrails.py
test_proxy_token_counter.py
test_proxy_utils.py
test_realtime_cache.py
test_reducto_ocr_route.py
test_request_size_limit_middleware.py
test_response_polling_handler.py
test_response_polling_pre_call_checks.py
test_search_api_logging.py
test_server_root_path.py
test_skills_db.py
test_ui_path_detection.py
test_unit_test_max_model_budget_limiter.py
test_unit_test_proxy_hooks.py
test_update_daily_tag_spend.py
test_update_spend.py
test_user_api_key_auth.py
test_zero_cost_model_budget_bypass.py
vertex_key.json