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

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


The following commit(s) were added to refs/heads/main by this push:
     new b5b48c3e38 adds range to compactable file (#3883)
b5b48c3e38 is described below

commit b5b48c3e389186e1229be7b8e5ab9e30d87dd52d
Author: Keith Turner <ktur...@apache.org>
AuthorDate: Tue Oct 24 20:50:52 2023 -0400

    adds range to compactable file (#3883)
    
    Now that tablet files have an associated range, this information should
    be made available to compaction plugins.  Making this information
    available to plugins enable uses cases like selecting files with ranges
    for compaction. This commit makes that information avialable by adding a
    getRange method to CompactableFile
---
 .../core/client/admin/compaction/CompactableFile.java | 19 +++++++++++++++++++
 .../accumulo/core/metadata/CompactableFileImpl.java   | 11 +++++++++++
 2 files changed, 30 insertions(+)

diff --git 
a/core/src/main/java/org/apache/accumulo/core/client/admin/compaction/CompactableFile.java
 
b/core/src/main/java/org/apache/accumulo/core/client/admin/compaction/CompactableFile.java
index baf5f04949..36b2d7b0ea 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/client/admin/compaction/CompactableFile.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/client/admin/compaction/CompactableFile.java
@@ -20,6 +20,7 @@ package org.apache.accumulo.core.client.admin.compaction;
 
 import java.net.URI;
 
+import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.metadata.CompactableFileImpl;
 
 /**
@@ -33,6 +34,16 @@ public interface CompactableFile {
 
   public URI getUri();
 
+  /**
+   * @return A range associated with the file. If a file has an associated 
range then Accumulo will
+   *         limit reads to within the range. Not all files have an associated 
range, it a file does
+   *         not have a range then an infinite range is returned. The URI plus 
this range uniquely
+   *         identify a file.
+   *
+   * @since 3.1.0
+   */
+  public Range getRange();
+
   public long getEstimatedSize();
 
   public long getEstimatedEntries();
@@ -41,4 +52,12 @@ public interface CompactableFile {
     return new CompactableFileImpl(uri, estimatedSize, estimatedEntries);
   }
 
+  /**
+   * Creates a new CompactableFile object that implements this interface.
+   *
+   * @since 3.1.0
+   */
+  static CompactableFile create(URI uri, Range range, long estimatedSize, long 
estimatedEntries) {
+    return new CompactableFileImpl(uri, range, estimatedSize, 
estimatedEntries);
+  }
 }
diff --git 
a/core/src/main/java/org/apache/accumulo/core/metadata/CompactableFileImpl.java 
b/core/src/main/java/org/apache/accumulo/core/metadata/CompactableFileImpl.java
index e3ff1a334a..b25e83dde3 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/metadata/CompactableFileImpl.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/metadata/CompactableFileImpl.java
@@ -22,6 +22,7 @@ import java.net.URI;
 import java.util.Objects;
 
 import org.apache.accumulo.core.client.admin.compaction.CompactableFile;
+import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.metadata.schema.DataFileValue;
 
 public class CompactableFileImpl implements CompactableFile {
@@ -34,6 +35,11 @@ public class CompactableFileImpl implements CompactableFile {
     this.dataFileValue = new DataFileValue(size, entries);
   }
 
+  public CompactableFileImpl(URI uri, Range range, long size, long entries) {
+    this.storedTabletFile = StoredTabletFile.of(uri, range);
+    this.dataFileValue = new DataFileValue(size, entries);
+  }
+
   public CompactableFileImpl(StoredTabletFile storedTabletFile, DataFileValue 
dataFileValue) {
     this.storedTabletFile = Objects.requireNonNull(storedTabletFile);
     this.dataFileValue = Objects.requireNonNull(dataFileValue);
@@ -44,6 +50,11 @@ public class CompactableFileImpl implements CompactableFile {
     return storedTabletFile.getPath().toUri();
   }
 
+  @Override
+  public Range getRange() {
+    return storedTabletFile.getRange();
+  }
+
   @Override
   public String getFileName() {
     return storedTabletFile.getFileName();

Reply via email to