{"record":{"id":"a9a0c031a21760b3","repo":"apache/cassandra","slug":"unknown-peer-requested","errorCode":null,"errorMessage":"Unknown peer requested: ","messagePattern":"Unknown peer requested: ","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"src/java/org/apache/cassandra/streaming/StreamCoordinator.java","lineNumber":254,"sourceCode":"        for (OutgoingStream stream: streams)\n        {\n            if (index % step == 0)\n            {\n                slice = new ArrayList<>();\n                result.add(slice);\n            }\n            slice.add(stream);\n            ++index;\n        }\n        return result;\n    }\n\n    private HostStreamingData getHostData(InetAddressAndPort peer)\n    {\n        HostStreamingData data = peerSessions.get(peer);\n\n        if (data == null)\n            throw new IllegalArgumentException(\"Unknown peer requested: \" + peer);\n        return data;\n    }\n\n    private HostStreamingData getOrCreateHostData(InetSocketAddress peer)\n    {\n        HostStreamingData data = peerSessions.get(peer);\n        if (data == null)\n        {\n            data = new HostStreamingData();\n            peerSessions.put(peer, data);\n        }\n        return data;\n    }\n\n    public TimeUUID getPendingRepair()\n    {\n        return pendingRepair;\n    }","sourceCodeStart":236,"sourceCodeEnd":272,"githubUrl":"https://github.com/apache/cassandra/blob/88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1/src/java/org/apache/cassandra/streaming/StreamCoordinator.java#L236-L272","documentation":"StreamCoordinator.getHostData looks up the HostStreamingData for a given peer and throws IllegalArgumentException('Unknown peer requested: <peer>') when no session bookkeeping exists for that address. It is reached via getSessionById and updateProgress, meaning a stream progress update or session lookup arrived for a peer this node never registered (or already removed).","triggerScenarios":"A streaming session was cancelled/finished and its peer data removed, then a late updateProgress/getSessionById arrives for that peer; connecting streaming peers whose sessions were never registered on this coordinator; mixed-version or mismatched address (IP vs IP+port) keys between registration and lookup.","commonSituations":"Node restarts or session aborts mid-stream while the remote peer keeps sending progress; firewall/NAT setups where the peer address seen at registration differs from the lookup address; recovery attempts against streamed sessions after nodetool admin operations cleaned them.","solutions":["Verify both nodes agree on the peer identity (check whether bind-to-interface/port config causes differing InetAddressAndPort keys).","If the session was cancelled, let the remote peer's stream fail and re-run the operation (e.g. re-trigger repair/rebuild) rather than pushing updates.","Check cluster version consistency and logs around the time of the error to confirm the session lifecycle; retry streaming after both nodes are stable."],"exampleFix":"// before\ncoordinator.updateProgress(peer, progress); // peer already removed\n// after\nif (coordinator.hasSession(peer)) coordinator.updateProgress(peer, progress);","handlingStrategy":"try-catch","validationCode":"if (!coordinator.peerSessionsKnown(peer)) throw new IllegalStateException(\"peer session not registered: \" + peer);","typeGuard":null,"tryCatchPattern":"try { coordinator.updateProgress(peer, progress); } catch (IllegalArgumentException e) { if (e.getMessage().startsWith(\"Unknown peer requested\")) logger.warn(\"Dropping late stream update for {}\", peer); else throw e; }","preventionTips":["Treat unknown-peer updates as session lifecycle races, not data errors","Keep streaming peer registration/lookup using identical InetAddressAndPort values","Re-run repair/streaming after node restarts instead of resuming stale sessions"],"tags":["streaming","peer-lookup","session-state"],"backgroundTag":"entity-not-found","analyzedSha":"88fd0f6a0eaed8943f05ac9e8f947882b8ddc8f1","analyzedAt":"2026-09-10T07:29:22.284Z","contentChangedAt":"2026-09-10T07:29:22.284Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}