Author: stack Date: Mon Jun 9 15:31:53 2008 New Revision: 665922 URL: http://svn.apache.org/viewvc?rev=665922&view=rev Log: HBASE-674 memcache size unreliable
Modified: hadoop/hbase/branches/0.1/CHANGES.txt hadoop/hbase/branches/0.1/src/java/org/apache/hadoop/hbase/HLog.java hadoop/hbase/branches/0.1/src/java/org/apache/hadoop/hbase/HRegion.java Modified: hadoop/hbase/branches/0.1/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.1/CHANGES.txt?rev=665922&r1=665921&r2=665922&view=diff ============================================================================== --- hadoop/hbase/branches/0.1/CHANGES.txt (original) +++ hadoop/hbase/branches/0.1/CHANGES.txt Mon Jun 9 15:31:53 2008 @@ -11,6 +11,7 @@ HBASE-659 HLog#cacheFlushLock not cleared; hangs a region HBASE-663 Incorrect sequence number for cache flush HBASE-652 Dropping table fails silently if table isn't disabled + HBASE-674 Memcache size unreliable Release 0.1.2 - 05/13/2008 Modified: hadoop/hbase/branches/0.1/src/java/org/apache/hadoop/hbase/HLog.java URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.1/src/java/org/apache/hadoop/hbase/HLog.java?rev=665922&r1=665921&r2=665922&view=diff ============================================================================== --- hadoop/hbase/branches/0.1/src/java/org/apache/hadoop/hbase/HLog.java (original) +++ hadoop/hbase/branches/0.1/src/java/org/apache/hadoop/hbase/HLog.java Mon Jun 9 15:31:53 2008 @@ -471,8 +471,8 @@ * @throws IOException */ void completeCacheFlush(final Text regionName, final Text tableName, - final long logSeqId) throws IOException { - + final long logSeqId) + throws IOException { try { if (this.closed) { return; Modified: hadoop/hbase/branches/0.1/src/java/org/apache/hadoop/hbase/HRegion.java URL: http://svn.apache.org/viewvc/hadoop/hbase/branches/0.1/src/java/org/apache/hadoop/hbase/HRegion.java?rev=665922&r1=665921&r2=665922&view=diff ============================================================================== --- hadoop/hbase/branches/0.1/src/java/org/apache/hadoop/hbase/HRegion.java (original) +++ hadoop/hbase/branches/0.1/src/java/org/apache/hadoop/hbase/HRegion.java Mon Jun 9 15:31:53 2008 @@ -958,7 +958,7 @@ boolean status = true; doRegionCompactionPrep(); for (HStore store : stores.values()) { - if(!store.compact(force)) { + if (!store.compact(force)) { status = false; } } @@ -1105,8 +1105,10 @@ if (LOG.isDebugEnabled()) { LOG.warn("Memcache size went negative " + size + "; resetting"); } - this.memcacheSize.set(0); } + // Our count is unreliable; HBASE-674. Just set memcache to zero + // rather than rely on our keeping a running accurate count. + this.memcacheSize.set(0); } } catch (Throwable t) { // An exception here means that the snapshot was not persisted. @@ -1129,7 +1131,7 @@ // and that all updates to the log for this regionName that have lower // log-sequence-ids can be safely ignored. this.log.completeCacheFlush(this.regionInfo.getRegionName(), - regionInfo.getTableDesc().getName(), sequenceId); + regionInfo.getTableDesc().getName(), sequenceId); // D. Finally notify anyone waiting on memcache to clear: // e.g. checkResources(). @@ -1466,7 +1468,7 @@ while (this.memcacheSize.get() >= this.blockingMemcacheSize) { if (!blocked) { LOG.info("Blocking updates for '" + Thread.currentThread().getName() + - "': Memcache size " + + "' on region " + getRegionName().toString() + ": Memcache size " + StringUtils.humanReadableInt(this.memcacheSize.get()) + " is >= than blocking " + StringUtils.humanReadableInt(this.blockingMemcacheSize) + " size"); @@ -1633,6 +1635,9 @@ for (Map.Entry<HStoreKey, byte[]> e: updatesByColumn.entrySet()) { HStoreKey key = e.getKey(); byte[] val = e.getValue(); + // What if the update fails? Memcache size will be off by this + // entry's size. Have to discern if the delete is one where data + // failed to get added. St.Ack. size = this.memcacheSize.addAndGet(getEntrySize(key, val)); stores.get(HStoreKey.extractFamily(key.getColumn())).add(key, val); }