{"record":{"id":"d1346ea9e4ea7115","repo":"apache/iceberg","slug":"this-implementation-does-not-support-providing-an","errorCode":null,"errorMessage":"This implementation does not support providing an ExecutorService.","messagePattern":"This implementation does not support providing an ExecutorService\\.","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"api/src/main/java/org/apache/iceberg/actions/RewriteTablePath.java","lineNumber":117,"sourceCode":"   * <p>The default value is true, which means the file list will be created. If set to false, the\n   * file list will not be created.\n   *\n   * @param createFileList true to create the file list, false to skip it\n   * @return this instance for method chaining\n   */\n  default RewriteTablePath createFileList(boolean createFileList) {\n    return this;\n  }\n\n  /**\n   * Passes an alternative executor service that will be used for version file and manifest list\n   * rewriting. If this method is not called, these operations will be performed sequentially.\n   *\n   * @param executorService an executor service to parallelize metadata rewriting\n   * @return this for method chaining\n   */\n  default RewriteTablePath executeWith(ExecutorService executorService) {\n    throw new UnsupportedOperationException(\n        \"This implementation does not support providing an ExecutorService.\");\n  }\n\n  /** The action result that contains a summary of the execution. */\n  interface Result {\n    /** Staging location of rewritten files */\n    String stagingLocation();\n\n    /**\n     * Result file list location. This file contains a listing of all files added to the table\n     * between startVersion and endVersion, comma-separated. <br>\n     * For each file, it will include the source path (either the original path in the table, or in\n     * the staging location if rewritten), and the target path (under the new prefix).\n     *\n     * <p>Example file content:\n     *\n     * <pre><code>\n     * sourcepath/datafile1.parquet,targetpath/datafile1.parquet","sourceCodeStart":99,"sourceCodeEnd":135,"githubUrl":"https://github.com/apache/iceberg/blob/86d9c8fc543e7c56c9f624eb725f76c9baff9570/api/src/main/java/org/apache/iceberg/actions/RewriteTablePath.java#L99-L135","documentation":"RewriteTablePath.executeWith(ExecutorService) lets callers parallelize metadata rewriting during a table-copy/rewrite-path action. The interface default throws UnsupportedOperationException; implementations that only support sequential metadata rewriting keep the stub.","triggerScenarios":"Calling rewriteTablePath.executeWith(executorService) on an implementation that has not overridden the default method, attempting to parallelize staging/metadata rewriting.","commonSituations":"Users speeding up large table copies across locations/catalogs assume all RewriteTablePath implementations accept an executor; sequential-only bindings reject the configuration.","solutions":["Remove executeWith(...) and let the rewrite proceed sequentially","Use an implementation that supports executor-based parallelism","Parallelize at a higher level (e.g. copy partitions concurrently) instead of configuring the action's executor","Check for an override of executeWith on the concrete class before calling it"],"exampleFix":"// before\nRewriteTablePath.Result r = actions.rewriteTablePath(table)\n    .executeWith(executorService)\n    .execute();\n// after\nRewriteTablePath.Result r = actions.rewriteTablePath(table)\n    .execute(); // sequential metadata rewriting","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  builder.executeWith(executorService);\n} catch (UnsupportedOperationException e) {\n  // accept sequential rewriting\n}","preventionTips":["Assume RewriteTablePath metadata rewriting is sequential unless documented otherwise","Parallelize externally (per-partition jobs) instead of relying on the action's executor","Check for executeWith overrides in the concrete implementation","Benchmark sequential performance before investing in executor tuning"],"tags":["unsupported-operation","java","executor-service","table-copy"],"backgroundTag":"unsupported-operation","analyzedSha":"86d9c8fc543e7c56c9f624eb725f76c9baff9570","analyzedAt":"2026-09-12T00:46:39.097Z","contentChangedAt":"2026-09-12T00:46:39.097Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}