{"record":{"id":"0104844cb212519b","repo":"grpc/grpc-java","slug":"not-implemented-010484","errorCode":null,"errorMessage":"Not implemented","messagePattern":"Not implemented","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"api/src/main/java/io/grpc/LoadBalancer.java","lineNumber":1175,"sourceCode":"     * on {@link ManagedChannelBuilder#forTarget} for the format of a target string.\n     *\n     * <p>The target string will be resolved by a {@link NameResolver} created according to the\n     * target string.\n     *\n     * <p>The returned oob-channel builder defaults to use the same authority and ChannelCredentials\n     * (without bearer tokens) as the parent channel's for authentication. This is different from\n     * {@link #createResolvingOobChannelBuilder(String, ChannelCredentials)}.\n     *\n     * <p>The LoadBalancer is responsible for closing unused OOB channels, and closing all OOB\n     * channels within {@link #shutdown}.\n     *\n     * @deprecated Use {@link #createResolvingOobChannelBuilder(String, ChannelCredentials)}\n     *     instead.\n     * @since 1.31.0\n     */\n    @Deprecated\n    public ManagedChannelBuilder<?> createResolvingOobChannelBuilder(String target) {\n      throw new UnsupportedOperationException(\"Not implemented\");\n    }\n\n    /**\n     * Creates an out-of-band channel builder for LoadBalancer's own RPC needs, e.g., talking to an\n     * external load-balancer service, that is specified by a target string and credentials.  See\n     * the documentation on {@link Grpc#newChannelBuilder} for the format of a target string.\n     *\n     * <p>The target string will be resolved by a {@link NameResolver} created according to the\n     * target string.\n     *\n     * <p>The LoadBalancer is responsible for closing unused OOB channels, and closing all OOB\n     * channels within {@link #shutdown}.\n     *\n     * @since 1.35.0\n     */\n    public ManagedChannelBuilder<?> createResolvingOobChannelBuilder(\n        String target, ChannelCredentials creds) {\n      throw new UnsupportedOperationException();","sourceCodeStart":1157,"sourceCodeEnd":1193,"githubUrl":"https://github.com/grpc/grpc-java/blob/64daddc1f3d1975670f769f3e97bde8b2ba32d25/api/src/main/java/io/grpc/LoadBalancer.java#L1157-L1193","documentation":"LoadBalancer.createResolvingOobChannelBuilder(String) is a deprecated base-class stub in grpc-java that throws UnsupportedOperationException by default. Concrete LoadBalancer implementations are expected to override it; the base implementation exists only to preserve API compatibility. It is deprecated in favor of the credentials-aware overload, so calling the unoverridden default always fails.","triggerScenarios":"Calling the single-argument createResolvingOobChannelBuilder(target) on a LoadBalancer (or a third-party/custom LoadBalancer) that has not overridden it — the inherited base method throws immediately.","commonSituations":"Custom or third-party LoadBalancer implementations that predate the credentials-aware overload; code that still uses the deprecated String-target variant instead of createResolvingOobChannelBuilder(String, ChannelCredentials); library versions where implementers never overrode this stub.","solutions":["Switch to the non-deprecated overload createResolvingOobChannelBuilder(String target, ChannelCredentials creds), which concrete implementations override","Use createOobChannel(ResolvedServerAddresses) / createResolvingOobChannel alternative entry points on the LoadBalancer.Helper if credentials handling is done elsewhere","Upgrade or fix the LoadBalancer implementation so it overrides createResolvingOobChannelBuilder; never call the deprecated base stub directly","Catch UnsupportedOperationException and fall back to a locally built channel via ManagedChannelBuilder.forTarget(target)"],"exampleFix":"// before\nManagedChannelBuilder<?> b = helper.createResolvingOobChannelBuilder(target);\n// after\nManagedChannelBuilder<?> b = helper.createResolvingOobChannelBuilder(target, InsecureChannelCredentials.create());","handlingStrategy":"try-catch","validationCode":"// Java: prefer the credentials overload outright\nManagedChannelBuilder<?> b = helper.createResolvingOobChannelBuilder(target, creds); // never the deprecated String-only stub","typeGuard":null,"tryCatchPattern":"try {\n  builder = helper.createResolvingOobChannelBuilder(target);\n} catch (UnsupportedOperationException e) {\n  builder = helper.createResolvingOobChannelBuilder(target, InsecureChannelCredentials.create());\n}","preventionTips":["Never call the deprecated single-argument createResolvingOobChannelBuilder; use the (String, ChannelCredentials) overload","Ensure custom LoadBalancer implementations override createResolvingOobChannelBuilder","Search the codebase for usages of this deprecated method during grpc-java upgrades"],"tags":["grpc","java","loadbalancing","unsupported-operation","deprecated"],"backgroundTag":"method-not-implemented","analyzedSha":"64daddc1f3d1975670f769f3e97bde8b2ba32d25","analyzedAt":"2026-09-08T06:14:57.704Z","contentChangedAt":"2026-09-08T06:14:57.704Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}