{"record":{"id":"39fd998fc6acf13a","repo":"langchain-ai/langgraph","slug":"streamchannel-already-has-a-subscriber-use-tee-n","errorCode":null,"errorMessage":"StreamChannel already has a subscriber; use .tee(n) for fan-out.","messagePattern":"StreamChannel already has a subscriber; use \\.tee\\(n\\) for fan-out\\.","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"libs/langgraph/langgraph/stream/stream_channel.py","lineNumber":176,"sourceCode":"\n    def __iter__(self) -> Iterator[T]:\n        \"\"\"Subscribe and return a sync cursor. Can be called only once.\n\n        Raises:\n            TypeError: If the channel is unbound or bound to async mode.\n            RuntimeError: If the channel already has a subscriber.\n        \"\"\"\n        if self._is_async is None:\n            raise TypeError(\n                \"StreamChannel has not been bound yet. \"\n                \"Register the transformer with a StreamMux first.\"\n            )\n        if self._is_async:\n            raise TypeError(\n                \"This StreamChannel is bound to async mode — use 'async for' instead.\"\n            )\n        if self._subscribed:\n            raise RuntimeError(\n                \"StreamChannel already has a subscriber; use .tee(n) for fan-out.\"\n            )\n        self._subscribed = True\n        return self._sync_cursor()\n\n    def _sync_cursor(self) -> Iterator[T]:\n        while True:\n            if self._items:\n                _stamp, item = self._items.popleft()\n                yield item\n            elif self._closed:\n                if self._error is not None:\n                    raise self._error\n                return\n            elif self._request_more is not None:\n                if not self._request_more():\n                    if not self._items and not self._closed:\n                        return","sourceCodeStart":158,"sourceCodeEnd":194,"githubUrl":"https://github.com/langchain-ai/langgraph/blob/38031739e551638e373fb553453256c23feeb41f/libs/langgraph/langgraph/stream/stream_channel.py#L158-L194","documentation":"Error \"StreamChannel already has a subscriber; use .tee(n) for fan-out.\" thrown in langchain-ai/langgraph.","triggerScenarios":"Thrown at libs/langgraph/langgraph/stream/stream_channel.py:176 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"38031739e551638e373fb553453256c23feeb41f","analyzedAt":"2026-08-26T18:02:49.312Z","schemaVersion":2},"datasetVersion":"2026-08-26T21:11:00.512Z"}