{"record":{"id":"cc2578a1787d551e","repo":"grpc/grpc-java","slug":"call-forname-instead-cc2578","errorCode":null,"errorMessage":"call forName() instead","messagePattern":"call forName\\(\\) instead","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"inprocess/src/main/java/io/grpc/inprocess/InProcessServerBuilder.java","lineNumber":102,"sourceCode":"  public static InProcessServerBuilder forName(String name) {\n    return forAddress(new InProcessSocketAddress(checkNotNull(name, \"name\")));\n  }\n\n  /**\n   * Create a server builder which listens on the given address.\n   * @param listenAddress The SocketAddress this server will listen on.\n   * @return a new builder\n   */\n  public static InProcessServerBuilder forAddress(SocketAddress listenAddress) {\n    return new InProcessServerBuilder(listenAddress);\n  }\n\n  /**\n   * Always fails.  Call {@link #forName} instead.\n   */\n  @DoNotCall(\"Unsupported. Use forName() instead\")\n  public static InProcessServerBuilder forPort(int port) {\n    throw new UnsupportedOperationException(\"call forName() instead\");\n  }\n\n  /**\n   * Generates a new server name that is unique each time.\n   */\n  public static String generateName() {\n    return UUID.randomUUID().toString();\n  }\n\n  private final ServerImplBuilder serverImplBuilder;\n  final SocketAddress listenAddress;\n  int maxInboundMetadataSize = Integer.MAX_VALUE;\n  ObjectPool<ScheduledExecutorService> schedulerPool =\n      SharedResourcePool.forResource(GrpcUtil.TIMER_SERVICE);\n\n  private InProcessServerBuilder(SocketAddress listenAddress) {\n    this.listenAddress = checkNotNull(listenAddress, \"listenAddress\");\n","sourceCodeStart":84,"sourceCodeEnd":120,"githubUrl":"https://github.com/grpc/grpc-java/blob/64daddc1f3d1975670f769f3e97bde8b2ba32d25/inprocess/src/main/java/io/grpc/inprocess/InProcessServerBuilder.java#L84-L120","documentation":"InProcessServerBuilder.forPort(int) is intentionally unsupported because in-process servers have no ports; they are addressed by name. The method always throws UnsupportedOperationException and is marked @DoNotCall.","triggerScenarios":"Calling InProcessServerBuilder.forPort(port) instead of InProcessServerBuilder.forName(serverName).","commonSituations":"Adapting generic server-builder code (written for netty port binding) to in-process transport; config-driven port numbers applied to in-process servers.","solutions":["Use InProcessServerBuilder.forName(name) with a stable or generated name (generateName()).","Pass the same name to InProcessChannelBuilder.forName(...) on the client side.","Use NettyServerBuilder.forPort(port) if a real bound port is needed."],"exampleFix":"// before\nServer s = InProcessServerBuilder.forPort(8080).addService(...).build();\n// after\nServer s = InProcessServerBuilder.forName(\"my-inprocess-server\").addService(...).build();","handlingStrategy":"validation","validationCode":"if (serverBuilder instanceof InProcessServerBuilder && portConfigured) throw new IllegalArgumentException(\"in-process servers use forName(name), not forPort(port)\");","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use forName for in-process servers","Keep port configuration only for network transports","Register the same name on the client with InProcessChannelBuilder.forName"],"tags":["grpc","inprocess","unsupported-operation"],"backgroundTag":"unsupported-operation","analyzedSha":"64daddc1f3d1975670f769f3e97bde8b2ba32d25","analyzedAt":"2026-09-08T06:14:57.704Z","contentChangedAt":"2026-09-08T06:14:57.704Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}