You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by kt...@apache.org on 2018/05/08 15:36:29 UTC
[accumulo] 04/04: fixes #477 Stop putting -1 in WAL (#458)
This is an automated email from the ASF dual-hosted git repository.
kturner pushed a commit to branch 1.9
in repository https://gitbox.apache.org/repos/asf/accumulo.git
commit b8f574fc282cdc7fc4f92b7bf0d5db49bc7ee4ce
Author: Keith Turner <kt...@apache.org>
AuthorDate: Mon May 7 16:11:13 2018 -0400
fixes #477 Stop putting -1 in WAL (#458)
---
.../main/java/org/apache/accumulo/tserver/TabletServer.java | 10 +++++-----
.../org/apache/accumulo/tserver/log/SortedLogRecovery.java | 5 ++++-
.../main/java/org/apache/accumulo/tserver/tablet/Tablet.java | 2 +-
.../java/org/apache/accumulo/tserver/log/LogFileKeyTest.java | 2 ++
4 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
index a0c2a81..f87841d 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
@@ -3276,12 +3276,12 @@ public class TabletServer extends AccumuloServerContext implements Runnable {
logger.recover(fs, extent, tconf, recoveryLogs, tabletFiles, mutationReceiver);
}
- public int createLogId(KeyExtent tablet) {
- AccumuloConfiguration acuTableConf = getTableConfiguration(tablet);
- if (DurabilityImpl.fromString(acuTableConf.get(Property.TABLE_DURABILITY)) != Durability.NONE) {
- return logIdGenerator.incrementAndGet();
+ public int createLogId() {
+ int logId = logIdGenerator.incrementAndGet();
+ if (logId < 0) {
+ throw new IllegalStateException("Log Id rolled");
}
- return -1;
+ return logId;
}
public TableConfiguration getTableConfiguration(KeyExtent extent) {
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/SortedLogRecovery.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/SortedLogRecovery.java
index 5692a81..ebfa92f 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/SortedLogRecovery.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/SortedLogRecovery.java
@@ -78,7 +78,10 @@ public class SortedLogRecovery {
static LogFileKey minKey(LogEvents event) {
LogFileKey key = new LogFileKey();
key.event = event;
- key.tabletId = 0;
+ // see GitHub issue #477. There was a bug that caused -1 to end up in tabletId. If this happens
+ // want to detect it and fail since recovery is dubious in this situation . Other code should
+ // fail if the id is actually -1 in data.
+ key.tabletId = -1;
key.seq = 0;
return key;
}
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 18d8daf..1e0ffcc 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
@@ -330,7 +330,7 @@ public class Tablet implements TabletCommitter {
this.splitCreationTime = data.getSplitTime();
this.tabletTime = TabletTime.getInstance(data.getTime());
this.persistedTime = tabletTime.getTime();
- this.logId = tabletServer.createLogId(extent);
+ this.logId = tabletServer.createLogId();
TableConfiguration tblConf = tabletServer.getTableConfiguration(extent);
if (null == tblConf) {
diff --git a/server/tserver/src/test/java/org/apache/accumulo/tserver/log/LogFileKeyTest.java b/server/tserver/src/test/java/org/apache/accumulo/tserver/log/LogFileKeyTest.java
index 0aacef2..8965094 100644
--- a/server/tserver/src/test/java/org/apache/accumulo/tserver/log/LogFileKeyTest.java
+++ b/server/tserver/src/test/java/org/apache/accumulo/tserver/log/LogFileKeyTest.java
@@ -57,6 +57,8 @@ public class LogFileKeyTest {
// add keys in expected sort order
keys.add(nk(LogEvents.OPEN, 0, 0));
+ // there was a bug that was putting -1 in WAL for tabletId, ensure this data sorts as expected
+ keys.add(nk(LogEvents.DEFINE_TABLET, -1, 0));
keys.add(nk(LogEvents.DEFINE_TABLET, 3, 6));
keys.add(nk(LogEvents.DEFINE_TABLET, 3, 7));
keys.add(nk(LogEvents.DEFINE_TABLET, 4, 2));
--
To stop receiving notification emails like this one, please contact
kturner@apache.org.