coderai model refresh on reconnect

parent fd742959
...@@ -61,6 +61,17 @@ def _get_cached_provider_models(cache_key: str) -> Optional[list]: ...@@ -61,6 +61,17 @@ def _get_cached_provider_models(cache_key: str) -> Optional[list]:
return _model_cache.get(cache_key) return _model_cache.get(cache_key)
def invalidate_provider_cache(provider_id: str, user_id: Optional[int] = None) -> None:
"""Drop cached model data for a provider so the next fetch hits the live source."""
cache_key = _cache_key_for_provider(provider_id, user_id)
_model_cache.pop(cache_key, None)
_model_cache_timestamps.pop(cache_key, None)
# Also drop the endpoint-level cache so a different user_id doesn't serve stale data
for key in list(_endpoint_model_cache.keys()):
if key.startswith(f"coderai:") or provider_id in key:
_endpoint_model_cache.pop(key, None)
def _store_provider_models_in_cache(cache_key: str, models: list, cached_at: Optional[float] = None) -> float: def _store_provider_models_in_cache(cache_key: str, models: list, cached_at: Optional[float] = None) -> float:
now = cached_at if cached_at is not None else time.time() now = cached_at if cached_at is not None else time.time()
_model_cache[cache_key] = models _model_cache[cache_key] = models
......
...@@ -21,8 +21,11 @@ logger = logging.getLogger(__name__) ...@@ -21,8 +21,11 @@ logger = logging.getLogger(__name__)
async def _broker_refresh_models(provider_id: str, user_id: Optional[int]) -> None: async def _broker_refresh_models(provider_id: str, user_id: Optional[int]) -> None:
"""Fetch and cache the model list for a provider that just connected via broker.""" """Fetch and cache the model list for a provider that just connected via broker."""
try: try:
from aisbf.app.model_cache import fetch_provider_models from aisbf.app.model_cache import fetch_provider_models, invalidate_provider_cache
from aisbf.config import config as aisbf_config from aisbf.config import config as aisbf_config
# Always bypass the cache so a reconnect or re-register produces a live fetch,
# not a 24-hour stale snapshot.
invalidate_provider_cache(provider_id, user_id)
models = await fetch_provider_models(provider_id, aisbf_config, user_id=user_id) models = await fetch_provider_models(provider_id, aisbf_config, user_id=user_id)
logger.info( logger.info(
"CoderAI broker model refresh: provider=%s user=%s models=%d", "CoderAI broker model refresh: provider=%s user=%s models=%d",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment