From c591a25f3c88cda5cde67f2b9dff44e0545f3008 Mon Sep 17 00:00:00 2001 From: Jeffrey Zhong Date: Fri, 27 Jun 2014 17:58:32 -0700 Subject: [PATCH] HBASE-11430: lastFlushSeqId has been updated wrongly during region open --- .../apache/hadoop/hbase/master/ServerManager.java | 13 ++++++------- .../apache/hadoop/hbase/regionserver/HRegion.java | 4 ++-- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java index b20231bce51..62042063a7c 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java @@ -274,13 +274,12 @@ public class ServerManager { long l = entry.getValue().getCompleteSequenceId(); if (existingValue != null) { if (l != -1 && l < existingValue) { - if (LOG.isDebugEnabled()) { - LOG.debug("RegionServer " + sn + - " indicates a last flushed sequence id (" + entry.getValue() + - ") that is less than the previous last flushed sequence id (" + - existingValue + ") for region " + - Bytes.toString(entry.getKey()) + " Ignoring."); - } + LOG.warn("RegionServer " + sn + + " indicates a last flushed sequence id (" + entry.getValue() + + ") that is less than the previous last flushed sequence id (" + + existingValue + ") for region " + + Bytes.toString(entry.getKey()) + " Ignoring."); + continue; // Don't let smaller sequence ids override greater // sequence ids. } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java index a035c1a662f..c1389386b9f 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java @@ -763,7 +763,6 @@ public class HRegion implements HeapSize { // , Writable{ this.closing.set(false); this.closed.set(false); - this.lastFlushSeqId = nextSeqid; if (coprocessorHost != null) { status.setStatus("Running coprocessor post-open hooks"); coprocessorHost.postOpen(); @@ -1626,7 +1625,8 @@ public class HRegion implements HeapSize { // , Writable{ */ boolean shouldFlush() { // This is a rough measure. - if (this.lastFlushSeqId + this.flushPerChanges < this.sequenceId.get()) { + if (this.lastFlushSeqId > 0 + && (this.lastFlushSeqId + this.flushPerChanges < this.sequenceId.get())) { return true; } if (flushCheckInterval <= 0) { //disabled