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 <[email protected]>
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);
-
}
}