You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2008/11/18 16:49:55 UTC
svn commit: r718636 - in /hadoop/hbase/trunk: CHANGES.txt
src/java/org/apache/hadoop/hbase/regionserver/MemcacheFlusher.java
Author: stack
Date: Tue Nov 18 07:49:54 2008
New Revision: 718636
URL: http://svn.apache.org/viewvc?rev=718636&view=rev
Log:
HBASE-990 NoSuchElementException in flushSomeRegions; took two attempts
Modified:
hadoop/hbase/trunk/CHANGES.txt
hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/MemcacheFlusher.java
Modified: hadoop/hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=718636&r1=718635&r2=718636&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Tue Nov 18 07:49:54 2008
@@ -69,7 +69,7 @@
HBASE-951 Either shut down master or let it finish cleanup
HBASE-964, HBASE-678 provide for safe-mode without locking up HBase "waiting
for root region"
- HBASE-990 NoSuchElementException in flushSomeRegions
+ HBASE-990 NoSuchElementException in flushSomeRegions; took two attempts.
HBASE-602 HBase Crash when network card has a IPv6 address
HBASE-996 Migration script to up the versions in catalog tables
HBASE-991 Update the mapred package document examples so they work with
Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/MemcacheFlusher.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/MemcacheFlusher.java?rev=718636&r1=718635&r2=718636&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/MemcacheFlusher.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/MemcacheFlusher.java Tue Nov 18 07:49:54 2008
@@ -219,15 +219,17 @@
* to this regionserver are blocked.
*/
private synchronized void flushSomeRegions() {
- SortedMap<Long, HRegion> m =
- this.server.getCopyOfOnlineRegionsSortedBySize();
- if (m.size() <= 0) {
- LOG.info("No online regions to flush though we've been asked flush some.");
- return;
- }
// keep flushing until we hit the low water mark
- while (server.getGlobalMemcacheSize() >= globalMemcacheLimitLowMark) {
+ for (SortedMap<Long, HRegion> m =
+ this.server.getCopyOfOnlineRegionsSortedBySize();
+ server.getGlobalMemcacheSize() >= globalMemcacheLimitLowMark;) {
// flush the region with the biggest memcache
+ if (m.size() <= 0) {
+ LOG.info("No online regions to flush though we've been asked flush " +
+ "some; globalMemcacheSize=" + this.server.getGlobalMemcacheSize() +
+ ", globalMemcacheLimitLowMark=" + this.globalMemcacheLimitLowMark);
+ break;
+ }
HRegion biggestMemcacheRegion = m.remove(m.firstKey());
if (!flushRegion(biggestMemcacheRegion, true)) {
// Something bad happened - give up.