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 2028745941 logs row ranges for files that have them (#3885)
2028745941 is described below

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

    logs row ranges for files that have them (#3885)
    
    There was code that was logging only tablets file names. Now that files
    can have a row range, need to log the range if it exists.
---
 .../apache/accumulo/core/logging/TabletLogger.java  | 16 +++++++++-------
 .../accumulo/core/metadata/AbstractTabletFile.java  | 21 +++++++++++++++++++++
 .../accumulo/core/metadata/CompactableFileImpl.java |  2 +-
 .../apache/accumulo/core/metadata/TabletFile.java   |  5 +++++
 .../accumulo/tserver/tablet/CompactableImpl.java    | 15 ++++++++-------
 .../org/apache/accumulo/test/ComprehensiveIT.java   |  1 -
 6 files changed, 44 insertions(+), 16 deletions(-)

diff --git 
a/core/src/main/java/org/apache/accumulo/core/logging/TabletLogger.java 
b/core/src/main/java/org/apache/accumulo/core/logging/TabletLogger.java
index 100cc318cc..e632971cf5 100644
--- a/core/src/main/java/org/apache/accumulo/core/logging/TabletLogger.java
+++ b/core/src/main/java/org/apache/accumulo/core/logging/TabletLogger.java
@@ -28,6 +28,7 @@ import java.util.concurrent.TimeUnit;
 import org.apache.accumulo.core.client.admin.CompactionConfig;
 import org.apache.accumulo.core.client.admin.compaction.CompactableFile;
 import org.apache.accumulo.core.dataImpl.KeyExtent;
+import org.apache.accumulo.core.metadata.CompactableFileImpl;
 import org.apache.accumulo.core.metadata.StoredTabletFile;
 import org.apache.accumulo.core.metadata.TServerInstance;
 import org.apache.accumulo.core.metadata.TabletFile;
@@ -117,32 +118,33 @@ public class TabletLogger {
    * Lazily converts TableFile to file names. The lazy part is really 
important because when it is
    * not called with log.isDebugEnabled().
    */
-  private static Collection<String> asFileNames(Collection<CompactableFile> 
files) {
-    return Collections2.transform(files, CompactableFile::getFileName);
+  private static Collection<String> 
asMinimalString(Collection<CompactableFile> files) {
+    return Collections2.transform(files,
+        cf -> CompactableFileImpl.toStoredTabletFile(cf).toMinimalString());
   }
 
   public static void selected(KeyExtent extent, CompactionKind kind,
       Collection<StoredTabletFile> inputs) {
     fileLog.trace("{} changed compaction selection set for {} new set {}", 
extent, kind,
-        Collections2.transform(inputs, StoredTabletFile::getFileName));
+        Collections2.transform(inputs, StoredTabletFile::toMinimalString));
   }
 
   public static void compacting(KeyExtent extent, CompactionJob job, 
CompactionConfig config) {
     if (fileLog.isDebugEnabled()) {
       if (config == null) {
         fileLog.debug("Compacting {} on {} for {} from {} size {}", extent, 
job.getExecutor(),
-            job.getKind(), asFileNames(job.getFiles()), 
getSize(job.getFiles()));
+            job.getKind(), asMinimalString(job.getFiles()), 
getSize(job.getFiles()));
       } else {
         fileLog.debug("Compacting {} on {} for {} from {} size {} config {}", 
extent,
-            job.getExecutor(), job.getKind(), asFileNames(job.getFiles()), 
getSize(job.getFiles()),
-            config);
+            job.getExecutor(), job.getKind(), asMinimalString(job.getFiles()),
+            getSize(job.getFiles()), config);
       }
     }
   }
 
   public static void compacted(KeyExtent extent, CompactionJob job, 
StoredTabletFile output) {
     fileLog.debug("Compacted {} for {} created {} from {}", extent, 
job.getKind(), output,
-        asFileNames(job.getFiles()));
+        asMinimalString(job.getFiles()));
   }
 
   public static void flushed(KeyExtent extent, Optional<StoredTabletFile> 
newDatafile) {
diff --git 
a/core/src/main/java/org/apache/accumulo/core/metadata/AbstractTabletFile.java 
b/core/src/main/java/org/apache/accumulo/core/metadata/AbstractTabletFile.java
index 0957c07a9d..ae0d46fbf2 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/metadata/AbstractTabletFile.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/metadata/AbstractTabletFile.java
@@ -20,6 +20,7 @@ package org.apache.accumulo.core.metadata;
 
 import java.util.Objects;
 
+import org.apache.accumulo.core.data.ByteSequence;
 import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.Range;
 import org.apache.hadoop.fs.Path;
@@ -82,4 +83,24 @@ public abstract class AbstractTabletFile<T extends 
AbstractTabletFile<T>>
     return row.length() > 0 && row.byteAt(row.length() - 1) == (byte) 0x00;
   }
 
+  private static String stripZeroTail(ByteSequence row) {
+    if (row.byteAt(row.length() - 1) == (byte) 0x00) {
+      return row.subSequence(0, row.length() - 1).toString();
+    }
+    return row.toString();
+  }
+
+  @Override
+  public String toMinimalString() {
+    if (hasRange()) {
+      String startRow =
+          range.isInfiniteStartKey() ? "-inf" : 
stripZeroTail(range.getStartKey().getRowData());
+      String endRow =
+          range.isInfiniteStopKey() ? "+inf" : 
stripZeroTail(range.getEndKey().getRowData());
+      return getFileName() + " (" + startRow + "," + endRow + "]";
+    } else {
+      return getFileName();
+    }
+  }
+
 }
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 9944245f97..e3ff1a334a 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
@@ -89,6 +89,6 @@ public class CompactableFileImpl implements CompactableFile {
 
   @Override
   public String toString() {
-    return "[" + storedTabletFile.getFileName() + ", " + dataFileValue + "]";
+    return "[" + storedTabletFile.toMinimalString() + ", " + dataFileValue + 
"]";
   }
 }
diff --git 
a/core/src/main/java/org/apache/accumulo/core/metadata/TabletFile.java 
b/core/src/main/java/org/apache/accumulo/core/metadata/TabletFile.java
index b31b6926d3..8b90bd7880 100644
--- a/core/src/main/java/org/apache/accumulo/core/metadata/TabletFile.java
+++ b/core/src/main/java/org/apache/accumulo/core/metadata/TabletFile.java
@@ -52,4 +52,9 @@ public interface TabletFile {
    *
    */
   boolean hasRange();
+
+  /**
+   * @return a string with the filename and row range if there is one.
+   */
+  String toMinimalString();
 }
diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactableImpl.java
 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactableImpl.java
index 2d7da09b46..8fe91dab5b 100644
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactableImpl.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/CompactableImpl.java
@@ -202,7 +202,7 @@ public class CompactableImpl implements Compactable {
         this.selectStatus = FileSelectionStatus.RESERVED;
 
         log.debug("Selected compaction status initialized from external 
compactions {} {} {} {}",
-            getExtent(), selectStatus, initiallySelectedAll, 
asFileNames(selectedFiles));
+            getExtent(), selectStatus, initiallySelectedAll, 
asMinimalString(selectedFiles));
       }
     }
 
@@ -261,7 +261,7 @@ public class CompactableImpl implements Compactable {
       selectedFiles.addAll(selected);
       initiallySelectedAll = allSelected;
       log.trace("Selected compaction status changed {} {} {} {}", getExtent(), 
selectStatus,
-          initiallySelectedAll, asFileNames(selectedFiles));
+          initiallySelectedAll, asMinimalString(selectedFiles));
       TabletLogger.selected(getExtent(), selectKind, selectedFiles);
     }
 
@@ -407,7 +407,8 @@ public class CompactableImpl implements Compactable {
             if (selectKind == job.getKind()) {
               if (!selectedFiles.containsAll(jobFiles)) {
                 log.trace("Ignoring {} compaction that does not contain 
selected files {} {} {}",
-                    job.getKind(), getExtent(), asFileNames(selectedFiles), 
asFileNames(jobFiles));
+                    job.getKind(), getExtent(), asMinimalString(selectedFiles),
+                    asMinimalString(jobFiles));
                 return false;
               }
             } else {
@@ -417,7 +418,7 @@ public class CompactableImpl implements Compactable {
             }
           } else if (!Collections.disjoint(selectedFiles, jobFiles)) {
             log.trace("Ingoing compaction that overlaps with selected files {} 
{} {}", getExtent(),
-                job.getKind(), asFileNames(Sets.intersection(selectedFiles, 
jobFiles)));
+                job.getKind(), 
asMinimalString(Sets.intersection(selectedFiles, jobFiles)));
             return false;
           }
           break;
@@ -486,7 +487,7 @@ public class CompactableImpl implements Compactable {
           selectedFiles.add(newFile.orElseThrow());
         }
         log.trace("Compacted subset of selected files {} {} -> {}", 
getExtent(),
-            asFileNames(jobFiles), newFile.orElse(null));
+            asMinimalString(jobFiles), newFile.orElse(null));
       } else {
         log.debug("Canceled selected compaction completed {} but others still 
running ",
             getExtent());
@@ -874,8 +875,8 @@ public class CompactableImpl implements Compactable {
 
   }
 
-  static Collection<String> asFileNames(Set<StoredTabletFile> files) {
-    return Collections2.transform(files, StoredTabletFile::getFileName);
+  static Collection<String> asMinimalString(Set<StoredTabletFile> files) {
+    return Collections2.transform(files, StoredTabletFile::toMinimalString);
   }
 
   @Override
diff --git a/test/src/main/java/org/apache/accumulo/test/ComprehensiveIT.java 
b/test/src/main/java/org/apache/accumulo/test/ComprehensiveIT.java
index 4ea8843e00..c33c9f9133 100644
--- a/test/src/main/java/org/apache/accumulo/test/ComprehensiveIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/ComprehensiveIT.java
@@ -176,7 +176,6 @@ public class ComprehensiveIT extends SharedMiniClusterBase {
       client.tableOperations().merge(table, null, null);
       assertEquals(Set.of(), new 
TreeSet<>(client.tableOperations().listSplits(table)));
       verifyData(client, table, AUTHORIZATIONS, expectedData);
-
     }
   }
 

Reply via email to