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/07/22 23:48:03 UTC

svn commit: r678918 - /hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HStore.java

Author: stack
Date: Tue Jul 22 14:48:03 2008
New Revision: 678918

URL: http://svn.apache.org/viewvc?rev=678918&view=rev
Log:
HBASE-761  IOE: Stream closed exception all over logs

Modified:
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HStore.java

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HStore.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HStore.java?rev=678918&r1=678917&r2=678918&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HStore.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HStore.java Tue Jul 22 14:48:03 2008
@@ -23,6 +23,7 @@
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -861,8 +862,8 @@
    * us to throw out deleted values or obsolete versions.
    */
   private void compactHStoreFiles(final MapFile.Writer compactedOut,
-      final List<MapFile.Reader> readers) throws IOException {
-    
+      final List<MapFile.Reader> readers)
+  throws IOException {
     MapFile.Reader[] rdrs = readers.toArray(new MapFile.Reader[readers.size()]);
     try {
       HStoreKey[] keys = new HStoreKey[rdrs.length];
@@ -897,7 +898,7 @@
         // therefore the one whose value should make it out to the compacted
         // store file.
         int smallestKey = -1;
-        for(int i = 0; i < rdrs.length; i++) {
+        for (int i = 0; i < rdrs.length; i++) {
           if(done[i]) {
             continue;
           }
@@ -941,8 +942,7 @@
 
         // Advance the smallest key.  If that reader's all finished, then 
         // mark it as done.
-        if(!rdrs[smallestKey].next(keys[smallestKey],
-            vals[smallestKey])) {
+        if (!rdrs[smallestKey].next(keys[smallestKey], vals[smallestKey])) {
           done[smallestKey] = true;
           rdrs[smallestKey].close();
           rdrs[smallestKey] = null;
@@ -950,14 +950,16 @@
         }
       }
     } finally {
-      closeCompactionReaders(readers);
+      closeCompactionReaders(Arrays.asList(rdrs));
     }
   }
   
   private void closeCompactionReaders(final List<MapFile.Reader> rdrs) {
     for (MapFile.Reader r: rdrs) {
       try {
-        r.close();
+        if (r != null) {
+          r.close();
+        }
       } catch (IOException e) {
         LOG.warn("Exception closing reader for " + this.storeNameStr, e);
       }