HBASE-2018 Updates to .META. blocked under high MemStore load

git-svn-id: https://svn.apache.org/repos/asf/hadoop/hbase/trunk@887054 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Andrew Kyle Purtell 2009-12-04 04:30:56 +00:00
parent 6f56688341
commit c3eb2c844f
2 changed files with 19 additions and 11 deletions

View File

@ -118,6 +118,7 @@ Release 0.21.0 - Unreleased
something... something...
HBASE-1997 zk tick time bounds maximum zk session time HBASE-1997 zk tick time bounds maximum zk session time
HBASE-2003 [shell] deleteall ignores column if specified HBASE-2003 [shell] deleteall ignores column if specified
HBASE-2018 Updates to .META. blocked under high MemStore load
IMPROVEMENTS IMPROVEMENTS
HBASE-1760 Cleanup TODOs in HTable HBASE-1760 Cleanup TODOs in HTable

View File

@ -1654,7 +1654,9 @@ public class HRegionServer implements HConstants, HRegionInterface,
this.requestCount.incrementAndGet(); this.requestCount.incrementAndGet();
HRegion region = getRegion(regionName); HRegion region = getRegion(regionName);
try { try {
cacheFlusher.reclaimMemStoreMemory(); if (!region.getRegionInfo().isMetaTable()) {
this.cacheFlusher.reclaimMemStoreMemory();
}
region.put(put, getLockFromId(put.getLockId())); region.put(put, getLockFromId(put.getLockId()));
this.syncWal(region); this.syncWal(region);
@ -1671,7 +1673,9 @@ public class HRegionServer implements HConstants, HRegionInterface,
HRegion region = null; HRegion region = null;
try { try {
region = getRegion(regionName); region = getRegion(regionName);
this.cacheFlusher.reclaimMemStoreMemory(); if (!region.getRegionInfo().isMetaTable()) {
this.cacheFlusher.reclaimMemStoreMemory();
}
Integer[] locks = new Integer[puts.length]; Integer[] locks = new Integer[puts.length];
for (i = 0; i < puts.length; i++) { for (i = 0; i < puts.length; i++) {
this.requestCount.incrementAndGet(); this.requestCount.incrementAndGet();
@ -1715,10 +1719,11 @@ public class HRegionServer implements HConstants, HRegionInterface,
this.requestCount.incrementAndGet(); this.requestCount.incrementAndGet();
HRegion region = getRegion(regionName); HRegion region = getRegion(regionName);
try { try {
cacheFlusher.reclaimMemStoreMemory(); if (!region.getRegionInfo().isMetaTable()) {
this.cacheFlusher.reclaimMemStoreMemory();
}
boolean retval = region.checkAndPut(row, family, qualifier, value, put, boolean retval = region.checkAndPut(row, family, qualifier, value, put,
getLockFromId(put.getLockId()), true); getLockFromId(put.getLockId()), true);
this.syncWal(region); this.syncWal(region);
return retval; return retval;
} catch (Throwable t) { } catch (Throwable t) {
@ -1862,12 +1867,13 @@ public class HRegionServer implements HConstants, HRegionInterface,
checkOpen(); checkOpen();
try { try {
boolean writeToWAL = true; boolean writeToWAL = true;
this.cacheFlusher.reclaimMemStoreMemory();
this.requestCount.incrementAndGet(); this.requestCount.incrementAndGet();
Integer lid = getLockFromId(delete.getLockId());
HRegion region = getRegion(regionName); HRegion region = getRegion(regionName);
if (!region.getRegionInfo().isMetaTable()) {
this.cacheFlusher.reclaimMemStoreMemory();
}
Integer lid = getLockFromId(delete.getLockId());
region.delete(delete, lid, writeToWAL); region.delete(delete, lid, writeToWAL);
this.syncWal(region); this.syncWal(region);
} catch (Throwable t) { } catch (Throwable t) {
throw convertThrowableToIOE(cleanup(t)); throw convertThrowableToIOE(cleanup(t));
@ -1882,10 +1888,11 @@ public class HRegionServer implements HConstants, HRegionInterface,
HRegion region = null; HRegion region = null;
try { try {
boolean writeToWAL = true; boolean writeToWAL = true;
this.cacheFlusher.reclaimMemStoreMemory();
Integer[] locks = new Integer[deletes.length];
region = getRegion(regionName); region = getRegion(regionName);
if (!region.getRegionInfo().isMetaTable()) {
this.cacheFlusher.reclaimMemStoreMemory();
}
Integer[] locks = new Integer[deletes.length];
for (i = 0; i < deletes.length; i++) { for (i = 0; i < deletes.length; i++) {
this.requestCount.incrementAndGet(); this.requestCount.incrementAndGet();
locks[i] = getLockFromId(deletes[i].getLockId()); locks[i] = getLockFromId(deletes[i].getLockId());