{"record":{"id":"209bf043581b0aef","repo":"langchain-ai/langgraph","slug":"syncthreadstream-is-closed-and-cannot-be-re-entere","errorCode":null,"errorMessage":"SyncThreadStream is closed and cannot be re-entered.","messagePattern":"SyncThreadStream is closed and cannot be re-entered\\.","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"libs/sdk-py/langgraph_sdk/_sync/stream.py","lineNumber":1125,"sourceCode":"        self._lifecycle_cursor: int | None = None\n        self._lifecycle_max_reconnect_attempts = 5\n        self._run_seen: bool = False\n        self._run_done: _BlockingResult | None = None\n        self._active_message_streams: set[ChatModelStream] = set()\n        self._active_tool_calls: set[SyncToolCallHandle] = set()\n        self._root_messages_inbox: queue.Queue[Event | None] | None = None\n        self.run = SyncRunModule(self)\n        self.agent = _SyncAgentModule(self)\n        self.values = _SyncValuesProjection(self)\n        self.messages = _SyncMessagesProjection(self, namespace=[])\n        self.tool_calls = _SyncToolCallsProjection(self, namespace=[])\n        self.subgraphs = _SyncSubgraphsProjection(self, scope=())\n        self.subagents = self.subgraphs\n        self.extensions = _SyncExtensionsProjection(self, namespace=[])\n\n    def __enter__(self) -> SyncThreadStream:\n        if self._closed:\n            raise RuntimeError(\"SyncThreadStream is closed and cannot be re-entered.\")\n        transport_cls = (\n            SyncProtocolWebSocketTransport\n            if self._transport_kind == \"websocket\"\n            else SyncProtocolSseTransport\n        )\n        self._transport = transport_cls(\n            client=self._http.client,\n            thread_id=self.thread_id,\n            headers=self._headers,\n        )\n        # Gate is unset; SyncRunModule.start (or an explicit set) clears it so\n        # that subscriptions opening before run.start block until the server\n        # has accepted the run command.\n        run_start_gate = threading.Event()\n        self._controller = SyncStreamController(\n            self._transport, run_start_gate=run_start_gate\n        )\n        self._run_done = _BlockingResult()","sourceCodeStart":1107,"sourceCodeEnd":1143,"githubUrl":"https://github.com/langchain-ai/langgraph/blob/38031739e551638e373fb553453256c23feeb41f/libs/sdk-py/langgraph_sdk/_sync/stream.py#L1107-L1143","documentation":"Error \"SyncThreadStream is closed and cannot be re-entered.\" thrown in langchain-ai/langgraph.","triggerScenarios":"Thrown at libs/sdk-py/langgraph_sdk/_sync/stream.py:1125 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"}