fix(server): iterate provider instances during shutdown

Problem: cleanup_providers() loops over dict.items(), so the loop
variable is a (ProviderType, ModelProvider) tuple and close() never runs.

Impact: Providers like DIAL keep httpx clients open, leaking sockets and
emitting unclosed-client warnings on shutdown.

Solution: Iterate registry._initialized_providers.values() so we close
real provider instances and release network resources.
This commit is contained in:
谢栋梁
2025-11-03 20:30:09 +08:00
parent 4d3d177d91
commit d40fc83d75

View File

@@ -572,7 +572,8 @@ def configure_providers():
try:
registry = ModelProviderRegistry()
if hasattr(registry, "_initialized_providers"):
for provider in list(registry._initialized_providers.items()):
# Iterate over provider instances (values), not (type, instance) tuples
for provider in list(registry._initialized_providers.values()):
try:
if provider and hasattr(provider, "close"):
provider.close()