@VisibleForTesting
  void fastFailIfDirtyCommit(
        int previousVersionsMax, int nextVersion, FileSystem fs, Path finalMetadataFile)
        throws IOException {
    int currentMaxVersion = findVersionWithOutVersionHint(fs);
    if ((currentMaxVersion - nextVersion) > previousVersionsMax && fs.exists(finalMetadataFile)) {
      tryDelete(finalMetadataFile);
      throw new CommitStateUnknownException(
            new RejectedExecutionException(
                  String.format(
                        "Commit rejected by server!The current commit version [%d] is much smaller " +
                              "than the latest version [%d].Are there other clients running in " +
                              "parallel with the current task?",
                        nextVersion, currentMaxVersion)));
    }
  }
TableOperations implementation for file systems.

<p>For normal file-system(support atomic non-overwriting rename). Users can use it directly
without configuring additional lockManager.

<p>For object storage(not support atomic non-overwriting rename), user should choose a suitable
lockManager implementation.

<p>This maintains metadata in a "metadata" folder under the table location.
iceberg/patched-iceberg-core/src/main/java/org/apache/iceberg/hadoop/HadoopTableOperations.java