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<Entry<Key, Value>> localityGroup2Data = ...
* Iterable<Entry<Key, Value>> 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;
}