Repository: hbase Updated Branches: refs/heads/0.98 4b1c64ec7 -> f6b418544
HBASE-13592 RegionServer sometimes gets stuck during shutdown in case of cache flush failures. (Vikas Vishwakarma) Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/f6b41854 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/f6b41854 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/f6b41854 Branch: refs/heads/0.98 Commit: f6b418544e1174e960a188d6ac3eb0c0c2678af3 Parents: 4b1c64e Author: Lars Hofhansl <[email protected]> Authored: Wed Apr 29 13:01:20 2015 -0700 Committer: Lars Hofhansl <[email protected]> Committed: Wed Apr 29 13:01:20 2015 -0700 ---------------------------------------------------------------------- .../hadoop/hbase/regionserver/HRegion.java | 52 ++++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/f6b41854/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java ---------------------------------------------------------------------- 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 d5e2e86..8837096 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 @@ -1778,34 +1778,34 @@ public class HRegion implements HeapSize { // , Writable{ } finally { this.updatesLock.writeLock().unlock(); } - String s = "Finished memstore snapshotting " + this + - ", syncing WAL and waiting on mvcc, flushsize=" + totalFlushableSize; - status.setStatus(s); - if (LOG.isTraceEnabled()) LOG.trace(s); - - // sync unflushed WAL changes when deferred log sync is enabled - // see HBASE-8208 for details - if (wal != null && !shouldSyncLog()) { - wal.sync(); - } - - // wait for all in-progress transactions to commit to HLog before - // we can start the flush. This prevents - // uncommitted transactions from being written into HFiles. - // We have to block before we start the flush, otherwise keys that - // were removed via a rollbackMemstore could be written to Hfiles. - mvcc.waitForRead(w); - - s = "Flushing stores of " + this; - status.setStatus(s); - if (LOG.isTraceEnabled()) LOG.trace(s); - - // Any failure from here on out will be catastrophic requiring server - // restart so hlog content can be replayed and put back into the memstore. - // Otherwise, the snapshot content while backed up in the hlog, it will not - // be part of the current running servers state. boolean compactionRequested = false; try { + String s = "Finished memstore snapshotting " + this + + ", syncing WAL and waiting on mvcc, flushsize=" + totalFlushableSize; + status.setStatus(s); + if (LOG.isTraceEnabled()) LOG.trace(s); + + // sync unflushed WAL changes when deferred log sync is enabled + // see HBASE-8208 for details + if (wal != null && !shouldSyncLog()) { + wal.sync(); + } + + // wait for all in-progress transactions to commit to HLog before + // we can start the flush. This prevents + // uncommitted transactions from being written into HFiles. + // We have to block before we start the flush, otherwise keys that + // were removed via a rollbackMemstore could be written to Hfiles. + mvcc.waitForRead(w); + + s = "Flushing stores of " + this; + status.setStatus(s); + if (LOG.isTraceEnabled()) LOG.trace(s); + + // Any failure from here on out will be catastrophic requiring server + // restart so hlog content can be replayed and put back into the memstore. + // Otherwise, the snapshot content while backed up in the hlog, it will not + // be part of the current running servers state. // A. Flush memstore to all the HStores. // Keep running vector of all store files that includes both old and the // just-made new flush store file. The new flushed file is still in the
