You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by mm...@apache.org on 2021/02/11 12:32:51 UTC

[accumulo] branch 1.10 updated: Improve filename extension usage in RFile API (#1917)

This is an automated email from the ASF dual-hosted git repository.

mmiller pushed a commit to branch 1.10
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/1.10 by this push:
     new fbdbda9  Improve filename extension usage in RFile API (#1917)
fbdbda9 is described below

commit fbdbda9c666a989ea5a5b8270f0ca02d4ec30e58
Author: Mike Miller <mm...@apache.org>
AuthorDate: Thu Feb 11 07:32:34 2021 -0500

    Improve filename extension usage in RFile API (#1917)
    
    * Add info about extension to RFile API javadoc
    * Throw IllegalArgumentException early when a filename that does not end
    in the appropriate RFile extension is used in the RFileWriterBuilder.
    
    
    Co-authored-by: Christopher Tubbs <ct...@apache.org>
---
 core/src/main/java/org/apache/accumulo/core/client/rfile/RFile.java   | 4 ++--
 .../main/java/org/apache/accumulo/core/client/rfile/RFileWriter.java  | 3 ++-
 .../org/apache/accumulo/core/client/rfile/RFileWriterBuilder.java     | 4 ++++
 3 files changed, 8 insertions(+), 3 deletions(-)

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 fed3e35..7ea9b81 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
@@ -196,14 +196,14 @@ public class RFile {
 
   /**
    * 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 static 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
      */
     public 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 a0703fd..dc02504 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
@@ -47,6 +47,7 @@ import com.google.common.base.Preconditions;
  * <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>
@@ -58,7 +59,7 @@ import com.google.common.base.Preconditions;
  *     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 4dd7184..d8476eb 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
@@ -111,6 +111,10 @@ class RFileWriterBuilder implements RFile.OutputArguments, RFile.WriterFSOptions
   @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;
   }