{"record":{"id":"35a7610fcbcdefde","repo":"bytedance/deer-flow","slug":"failed-to-stop-display-name-channel-try-again","errorCode":null,"errorMessage":"Failed to stop {display_name} channel. Try again.","messagePattern":"Failed to stop (.+?) channel\\. Try again\\.","errorType":"http","errorClass":"HTTPException","httpStatus":400,"severity":"error","filePath":"backend/app/gateway/routers/channel_connections.py","lineNumber":595,"sourceCode":"    provider_config = _provider_config(config, provider)\n    if not provider_config.enabled:\n        raise HTTPException(status_code=400, detail=\"Channel provider is not enabled\")\n\n    try:\n        repo = _get_repository(request, config)\n    except HTTPException as exc:\n        if exc.status_code != 503:\n            raise\n        repo = None\n\n    current_channels_config = await _get_channels_config(request)\n    candidate_channels_config = dict(current_channels_config)\n    candidate_channels_config.pop(provider, None)\n\n    stopped = await _sync_runtime_channel_after_removal(provider, candidate_channels_config)\n    if stopped is False:\n        display_name = _PROVIDER_META[provider][\"display_name\"]\n        raise HTTPException(status_code=400, detail=f\"Failed to stop {display_name} channel. Try again.\")\n\n    # Revoke the DB connection rows before committing the store/cache so a repo\n    # failure cannot leave the store and cache saying \"disconnected\" while the\n    # DB still holds \"connected\" rows that a later re-configure would silently\n    # reactivate.\n    if repo is not None:\n        await repo.disconnect_provider_connections(provider=provider)\n\n    store = await _get_runtime_config_store(request)\n    await asyncio.to_thread(store.set_provider_disconnected, provider)\n\n    # Re-read the live cached config and drop only this provider so a concurrent\n    # mutation for a different provider is not clobbered. No await may occur\n    # between this read and the reassignment.\n    live_channels_config = await _get_channels_config(request)\n    live_channels_config.pop(provider, None)\n    request.app.state.channels_config = live_channels_config\n","sourceCodeStart":577,"sourceCodeEnd":613,"githubUrl":"https://github.com/bytedance/deer-flow/blob/1dd6ba1acb03700589994b0366c5d1c7d05e2eff/backend/app/gateway/routers/channel_connections.py#L577-L613","documentation":"Error \"Failed to stop {display_name} channel. Try again.\" thrown in bytedance/deer-flow.","triggerScenarios":"Thrown at backend/app/gateway/routers/channel_connections.py:595 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Retry stopping the channel; transient network or provider errors can cause a failed stop.","Check the Gateway logs for the underlying stop error and fix the reported cause, then try again."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"1dd6ba1acb03700589994b0366c5d1c7d05e2eff","analyzedAt":"2026-08-14T21:20:34.804Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}