You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ct...@apache.org on 2022/02/26 20:55:44 UTC
[accumulo] branch main updated: Add consistency checks for lastFlushID and lastCompactID (#2531)
This is an automated email from the ASF dual-hosted git repository.
ctubbsii 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 6f8be5c Add consistency checks for lastFlushID and lastCompactID (#2531)
6f8be5c is described below
commit 6f8be5c9f26676712eb417db69ea1938380f4ff3
Author: Jeffrey Manno <je...@gmail.com>
AuthorDate: Sat Feb 26 15:55:36 2022 -0500
Add consistency checks for lastFlushID and lastCompactID (#2531)
This restores the original checks from #2397 24f16e5c0279fcc2e0bc1ff9c17fce791f7437f6
to fix #2153 that were reverted in 664b5a5dd137a58e4df47915c8f5f209a530cd8a due to
a failure in DeleteRowsIT. This change fixes that failure by including a check to ensure
the Optional flushId or compactId is present, before doing the consistency check.
This fixes #2153
Co-authored-by: foster33 <lu...@gmail.com>
Co-authored-by: Christopher Tubbs <ct...@apache.org>
---
.../org/apache/accumulo/tserver/tablet/Tablet.java | 24 ++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
index 4e74057..07e21ed 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
@@ -1377,7 +1377,7 @@ public class Tablet {
try {
var tabletMeta = context.getAmple().readTablet(extent, ColumnType.FILES, ColumnType.LOGS,
- ColumnType.ECOMP, ColumnType.PREV_ROW);
+ ColumnType.ECOMP, ColumnType.PREV_ROW, ColumnType.FLUSH_ID, ColumnType.COMPACT_ID);
if (tabletMeta == null) {
String msg = "Closed tablet " + extent + " not found in metadata";
@@ -1401,6 +1401,24 @@ public class Tablet {
throw new RuntimeException(msg);
}
+ tabletMeta.getFlushId().ifPresent(flushId -> {
+ if (flushId != lastFlushID) {
+ String msg = "Closed tablet " + extent + " lastFlushID is inconsistent with metadata : "
+ + flushId + " != " + lastFlushID;
+ log.error(msg);
+ throw new RuntimeException(msg);
+ }
+ });
+
+ tabletMeta.getCompactId().ifPresent(compactId -> {
+ if (compactId != lastCompactID) {
+ String msg = "Closed tablet " + extent + " lastCompactID is inconsistent with metadata : "
+ + compactId + " != " + lastCompactID;
+ log.error(msg);
+ throw new RuntimeException(msg);
+ }
+ });
+
compareToDataInMemory(tabletMeta);
} catch (Exception e) {
String msg = "Failed to do close consistency check for tablet " + extent;
@@ -1411,12 +1429,10 @@ public class Tablet {
if (!otherLogs.isEmpty() || !currentLogs.isEmpty() || !referencedLogs.isEmpty()) {
String msg = "Closed tablet " + extent + " has walog entries in memory currentLogs = "
- + currentLogs + " otherLogs = " + otherLogs + " refererncedLogs = " + referencedLogs;
+ + currentLogs + " otherLogs = " + otherLogs + " referencedLogs = " + referencedLogs;
log.error(msg);
throw new RuntimeException(msg);
}
-
- // TODO check lastFlushID and lostCompactID - ACCUMULO-1290
}
private void compareToDataInMemory(TabletMetadata tabletMetadata) {