{"record":{"id":"bcd6817707db52bc","repo":"apache/kafka","slug":"the-method-memberresult-is-not-applicable-in-rem","errorCode":null,"errorMessage":"The method: memberResult is not applicable in 'removeAll' mode","messagePattern":"The method: memberResult is not applicable in 'removeAll' mode","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"clients/src/main/java/org/apache/kafka/clients/admin/RemoveMembersFromConsumerGroupResult.java","lineNumber":85,"sourceCode":"                } else {\n                    for (MemberToRemove memberToRemove : memberInfos) {\n                        if (maybeCompleteExceptionally(memberErrors, memberToRemove.toMemberIdentity(), result)) {\n                            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,","sourceCodeStart":67,"sourceCodeEnd":103,"githubUrl":"https://github.com/apache/kafka/blob/996fb4585aa1bcc8980b0e1b8d6b168b986cd979/clients/src/main/java/org/apache/kafka/clients/admin/RemoveMembersFromConsumerGroupResult.java#L67-L103","documentation":"Thrown by RemoveMembersFromConsumerGroupResult.memberResult(MemberToRemove) when removeAll() is true, i.e. the result was created from a 'remove all members' request. In removeAll mode there are no per-member futures because no specific members were supplied, so per-member lookup is meaningless. Use all() to wait for the bulk operation instead.","triggerScenarios":"Calling `result.memberResult(someMember)` on a RemoveMembersFromConsumerGroupResult returned by an admin.removeMembersFromConsumerGroup call made with the no-arg RemoveMembersFromConsumerGroupOptions (removeAll mode).","commonSituations":"Code reused across both targeted-removal and removeAll flows; UI that always calls memberResult regardless of how the request was issued; copy-paste from a targeted-removal example into a removeAll context.","solutions":["Branch on the request mode: if removeAll, call result.all(); otherwise call memberResult(member).","Track whether you used the no-arg options and route the result handling accordingly.","Read result.all() which works in both modes for a top-level success future."],"exampleFix":"// before\nKafkaFuture<Void> f = result.memberResult(member);\n\n// after\nKafkaFuture<Void> f = removeAllMode\n    ? result.all()\n    : result.memberResult(member);","handlingStrategy":"validation","validationCode":"KafkaFuture<Void> f = removeAllMode\n    ? result.all()\n    : result.memberResult(member);","typeGuard":"static boolean isRemoveAll(RemoveMembersFromConsumerGroupOptions o) {\n    // removeAll mode is created by the no-arg constructor; track it at call site\n    return removeAllMode;\n}","tryCatchPattern":"KafkaFuture<Void> f;\ntry {\n    f = result.memberResult(member);\n} catch (IllegalArgumentException e) {\n    if (e.getMessage().contains(\"removeAll\")) {\n        f = result.all();\n    } else throw e;\n}","preventionTips":["Carry an explicit removeAll boolean from the request site to the result-handling site.","Prefer result.all() when you only need overall success.","Read the AdminClient javadocs for the dual-mode result API before integrating."],"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"}