Merge remote-tracking branch 'upstream/1.10' into main
diff --git a/core/src/main/java/org/apache/accumulo/core/client/rfile/RFile.java b/core/src/main/java/org/apache/accumulo/core/client/rfile/RFile.java
index fbde1a8..25c5a52 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/rfile/RFile.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/rfile/RFile.java
@@ -355,14 +355,14 @@
 
   /**
    * This is an intermediate interface in a larger builder pattern. Supports setting the required
-   * output sink to write a RFile to.
+   * output sink to write a RFile to. The filename parameter requires the ".rf" extension.
    *
    * @since 1.8.0
    */
   public interface OutputArguments {
     /**
      * @param filename
-     *          name of file to write RFile data
+     *          name of file to write RFile data, ending with the ".rf" extension
      * @return this
      */
     WriterFSOptions to(String filename);
diff --git a/core/src/main/java/org/apache/accumulo/core/client/rfile/RFileWriter.java b/core/src/main/java/org/apache/accumulo/core/client/rfile/RFileWriter.java
index bcadd52..0bae223 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/rfile/RFileWriter.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/rfile/RFileWriter.java
@@ -48,6 +48,7 @@
  * <li>Keys must be appended in sorted order within a locality group.</li>
  * <li>Locality groups must have a mutually exclusive set of column families.</li>
  * <li>The default locality group must be started last.</li>
+ * <li>If using RFile.newWriter().to("filename.rf"), the ".rf" extension is required.</li>
  * </ul>
  *
  * <p>
@@ -59,7 +60,7 @@
  *     Iterable&lt;Entry&lt;Key, Value&gt;&gt; localityGroup2Data = ...
  *     Iterable&lt;Entry&lt;Key, Value&gt;&gt; defaultGroupData = ...
  *
- *     try(RFileWriter writer = RFile.newWriter().to(file).build()) {
+ *     try(RFileWriter writer = RFile.newWriter().to("filename.rf").build()) {
  *
  *       // Start a locality group before appending data.
  *       writer.startNewLocalityGroup("groupA", "columnFam1", "columnFam2");
diff --git a/core/src/main/java/org/apache/accumulo/core/client/rfile/RFileWriterBuilder.java b/core/src/main/java/org/apache/accumulo/core/client/rfile/RFileWriterBuilder.java
index 7fae1ac..828dd84 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/rfile/RFileWriterBuilder.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/rfile/RFileWriterBuilder.java
@@ -131,6 +131,10 @@
   @Override
   public WriterFSOptions to(String filename) {
     Objects.requireNonNull(filename);
+    if (!filename.endsWith(".rf")) {
+      throw new IllegalArgumentException(
+          "Provided filename (" + filename + ") does not end with '.rf'");
+    }
     this.out = new OutputArgs(filename);
     return this;
   }