{"record":{"id":"07d984f79b7b63e0","repo":"apache/iceberg","slug":"server-does-not-support-endpoint-s","errorCode":null,"errorMessage":"Server does not support endpoint: %s","messagePattern":"Server does not support endpoint: (.+?)","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/org/apache/iceberg/rest/Endpoint.java","lineNumber":143,"sourceCode":"    List<String> elements = ENDPOINT_SPLITTER.splitToList(endpoint);\n    Preconditions.checkArgument(\n        elements.size() == 2,\n        \"Invalid endpoint (must consist of two elements separated by a single space): %s\",\n        endpoint);\n    return create(elements.get(0), elements.get(1));\n  }\n\n  /**\n   * Checks if the set of endpoints support the given {@link Endpoint}.\n   *\n   * @param supportedEndpoints The set of supported endpoints to check\n   * @param endpoint The endpoint to check against the set of supported endpoints\n   * @throws UnsupportedOperationException if the given {@link Endpoint} is not included in the set\n   *     of endpoints.\n   */\n  public static void check(Set<Endpoint> supportedEndpoints, Endpoint endpoint) {\n    if (!supportedEndpoints.contains(endpoint)) {\n      throw new UnsupportedOperationException(\n          String.format(\"Server does not support endpoint: %s\", endpoint));\n    }\n  }\n\n  /**\n   * Checks if the set of endpoints support the given {@link Endpoint}.\n   *\n   * @param supportedEndpoints The set of supported endpoints to check\n   * @param endpoint The endpoint to check against the set of supported endpoints\n   * @param supplier The supplier throwing a {@link RuntimeException} if the given {@link Endpoint}\n   *     is not included in the set of endpoints.\n   */\n  public static void check(\n      Set<Endpoint> supportedEndpoints, Endpoint endpoint, Supplier<RuntimeException> supplier) {\n    if (!supportedEndpoints.contains(endpoint)) {\n      throw supplier.get();\n    }\n  }","sourceCodeStart":125,"sourceCodeEnd":161,"githubUrl":"https://github.com/apache/iceberg/blob/86d9c8fc543e7c56c9f624eb725f76c9baff9570/core/src/main/java/org/apache/iceberg/rest/Endpoint.java#L125-L161","documentation":"Endpoint.check validates that a requested REST endpoint is in the server's supported-endpoint set and throws UnsupportedOperationException otherwise. It is used by REST clients/servers to fail fast when the server does not implement a capability (e.g. views or OAuth endpoints).","triggerScenarios":"A client calls an operation whose Endpoint (path+method pair) is not contained in the server's advertised supportedEndpoints, e.g. invoking view APIs against a catalog server that only implements table endpoints.","commonSituations":"Client and server Iceberg versions mismatch (newer client hitting older server); server deployed with limited endpoint config (REST catalog endpoint filtering); proxy/gateway stripping endpoints; feature like view support not deployed on the target server.","solutions":["Upgrade the REST catalog server to a version that implements the endpoint","Configure the client to use only endpoints the server advertises, or skip the feature when unsupported","Check server endpoint/configuration (e.g. supported endpoint filters) and add the missing endpoint","Align client and server Iceberg versions"],"exampleFix":"// before\nEndpoint.check(serverConfig.endpoints(), Endpoint.VIEW_REPLACE);\n// after\nif (serverConfig.endpoints().contains(Endpoint.VIEW_REPLACE)) {\n  Endpoint.check(serverConfig.endpoints(), Endpoint.VIEW_REPLACE);\n} else {\n  throw new UnsupportedOperationException(\"Views are not supported by this server\");\n}","handlingStrategy":"type-guard","validationCode":"boolean supported = serverEndpoints.contains(endpoint);","typeGuard":"boolean isSupported(Endpoint e, Set<Endpoint> supported) { return supported.contains(e); }","tryCatchPattern":"try { Endpoint.check(supported, endpoint); } catch (UnsupportedOperationException e) { /* degrade or fail fast with clear message */ }","preventionTips":["Compare client/server Iceberg versions at startup","Only call endpoints the server advertises","Gate features on capability discovery","Keep server endpoint config in sync with client usage"],"tags":["rest-catalog","endpoint","unsupported-operation","version-mismatch"],"backgroundTag":"operation-not-supported","analyzedSha":"86d9c8fc543e7c56c9f624eb725f76c9baff9570","analyzedAt":"2026-09-12T00:46:39.097Z","contentChangedAt":"2026-09-12T00:46:39.097Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}