mirror of https://github.com/langgenius/dify.git
fix: invalidate tool provider cache after MCP authentication (#29972)
This commit is contained in:
parent
ba73964dfd
commit
0ab80fe5c0
|
|
@ -1081,6 +1081,8 @@ class ToolMCPAuthApi(Resource):
|
||||||
credentials=provider_entity.credentials,
|
credentials=provider_entity.credentials,
|
||||||
authed=True,
|
authed=True,
|
||||||
)
|
)
|
||||||
|
# Invalidate cache after updating credentials
|
||||||
|
ToolProviderListCache.invalidate_cache(tenant_id)
|
||||||
return {"result": "success"}
|
return {"result": "success"}
|
||||||
except MCPAuthError as e:
|
except MCPAuthError as e:
|
||||||
try:
|
try:
|
||||||
|
|
@ -1094,16 +1096,22 @@ class ToolMCPAuthApi(Resource):
|
||||||
with Session(db.engine) as session, session.begin():
|
with Session(db.engine) as session, session.begin():
|
||||||
service = MCPToolManageService(session=session)
|
service = MCPToolManageService(session=session)
|
||||||
response = service.execute_auth_actions(auth_result)
|
response = service.execute_auth_actions(auth_result)
|
||||||
|
# Invalidate cache after auth actions may have updated provider state
|
||||||
|
ToolProviderListCache.invalidate_cache(tenant_id)
|
||||||
return response
|
return response
|
||||||
except MCPRefreshTokenError as e:
|
except MCPRefreshTokenError as e:
|
||||||
with Session(db.engine) as session, session.begin():
|
with Session(db.engine) as session, session.begin():
|
||||||
service = MCPToolManageService(session=session)
|
service = MCPToolManageService(session=session)
|
||||||
service.clear_provider_credentials(provider_id=provider_id, tenant_id=tenant_id)
|
service.clear_provider_credentials(provider_id=provider_id, tenant_id=tenant_id)
|
||||||
|
# Invalidate cache after clearing credentials
|
||||||
|
ToolProviderListCache.invalidate_cache(tenant_id)
|
||||||
raise ValueError(f"Failed to refresh token, please try to authorize again: {e}") from e
|
raise ValueError(f"Failed to refresh token, please try to authorize again: {e}") from e
|
||||||
except (MCPError, ValueError) as e:
|
except (MCPError, ValueError) as e:
|
||||||
with Session(db.engine) as session, session.begin():
|
with Session(db.engine) as session, session.begin():
|
||||||
service = MCPToolManageService(session=session)
|
service = MCPToolManageService(session=session)
|
||||||
service.clear_provider_credentials(provider_id=provider_id, tenant_id=tenant_id)
|
service.clear_provider_credentials(provider_id=provider_id, tenant_id=tenant_id)
|
||||||
|
# Invalidate cache after clearing credentials
|
||||||
|
ToolProviderListCache.invalidate_cache(tenant_id)
|
||||||
raise ValueError(f"Failed to connect to MCP server: {e}") from e
|
raise ValueError(f"Failed to connect to MCP server: {e}") from e
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue