{"record":{"id":"b15085df27d5ff33","repo":"apache/kafka","slug":"member-member-was-not-included-in-the-original-r","errorCode":null,"errorMessage":"Member {member} was not included in the original request","messagePattern":"Member (.+?) was not included in the original request","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"clients/src/main/java/org/apache/kafka/clients/admin/RemoveMembersFromConsumerGroupResult.java","lineNumber":88,"sourceCode":"                            return;\n                        }\n                    }\n                }\n                result.complete(null);\n            }\n        });\n        return result;\n    }\n\n    /**\n     * Returns the selected member future.\n     */\n    public KafkaFuture<Void> memberResult(MemberToRemove member) {\n        if (removeAll()) {\n            throw new IllegalArgumentException(\"The method: memberResult is not applicable in 'removeAll' mode\");\n        }\n        if (!memberInfos.contains(member)) {\n            throw new IllegalArgumentException(\"Member \" + member + \" was not included in the original request\");\n        }\n\n        final KafkaFutureImpl<Void> result = new KafkaFutureImpl<>();\n        this.future.whenComplete((memberErrors, throwable) -> {\n            if (throwable != null) {\n                result.completeExceptionally(throwable);\n            } else if (!maybeCompleteExceptionally(memberErrors, member.toMemberIdentity(), result)) {\n                result.complete(null);\n            }\n        });\n        return result;\n    }\n\n    private boolean maybeCompleteExceptionally(Map<MemberIdentity, Errors> memberErrors,\n                                               MemberIdentity member,\n                                               KafkaFutureImpl<Void> result) {\n        Throwable exception = KafkaAdminClient.getSubLevelError(memberErrors, member,\n            \"Member \\\"\" + member + \"\\\" was not included in the removal response\");","sourceCodeStart":70,"sourceCodeEnd":106,"githubUrl":"https://github.com/apache/kafka/blob/996fb4585aa1bcc8980b0e1b8d6b168b986cd979/clients/src/main/java/org/apache/kafka/clients/admin/RemoveMembersFromConsumerGroupResult.java#L70-L106","documentation":"Thrown by RemoveMembersFromConsumerGroupResult.memberResult(MemberToRemove) when the supplied member was not part of the original request's member set. The result object can only return futures for members it knows about; asking for a member that wasn't requested would have no corresponding server response.","triggerScenarios":"Calling `result.memberResult(m)` where `m` is a different MemberToRemove instance than those passed to the RemoveMembersFromConsumerGroupOptions. Equality is by member identity (group instance id / client id + member id), so a mismatched field means not-found.","commonSituations":"Reusing a stale MemberToRemove captured before a rebalance changed identities; constructing a fresh MemberToRemove with a slightly different field; iterating over a different collection than the one used for the request.","solutions":["Iterate over the same MemberToRemove instances used in the original request when calling memberResult.","Capture the original members collection and reuse it for both the options and result handling.","Check membership with the contains-style check before calling memberResult."],"exampleFix":"// before\nMemberToRemove m = new MemberToRemove(new MemberIdentity(\"client-2\", \"member-xyz\"));\nresult.memberResult(m);\n\n// after\nfor (MemberToRemove m : originalRequestedMembers) {\n    result.memberResult(m).get();\n}","handlingStrategy":"validation","validationCode":"if (!requestedMembers.contains(member)) {\n    throw new IllegalStateException(\"member not requested: \" + member);\n}\nresult.memberResult(member);","typeGuard":"// MemberToRemove equals is by member identity; ensure the SAME instances are reused\nSet<MemberToRemove> requested = Set.copyOf(originalMembers);\nif (!requested.contains(member)) { /* not requested */ }","tryCatchPattern":"try {\n    result.memberResult(member).get();\n} catch (IllegalArgumentException e) {\n    log.warn(\"Skipping {} - not in original request\", member);\n}","preventionTips":["Capture the original members collection from the options and iterate over it for result handling.","Do not reconstruct MemberToRemove instances between request and result; reuse them.","Validate member identity fields before adding them to the removal set."],"tags":["admin-client","consumer-group","illegal-argument","static-membership","api-misuse"],"backgroundTag":null,"analyzedSha":"996fb4585aa1bcc8980b0e1b8d6b168b986cd979","analyzedAt":"2026-08-11T22:03:28.655Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}