You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by jd...@apache.org on 2010/08/17 20:44:36 UTC

svn commit: r986448 - in /hbase/trunk: CHANGES.txt src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java

Author: jdcryans
Date: Tue Aug 17 18:44:35 2010
New Revision: 986448

URL: http://svn.apache.org/viewvc?rev=986448&view=rev
Log:
HBASE-2923  Deadlock between HRegion.internalFlushCache and close

Modified:
    hbase/trunk/CHANGES.txt
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java

Modified: hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hbase/trunk/CHANGES.txt?rev=986448&r1=986447&r2=986448&view=diff
==============================================================================
--- hbase/trunk/CHANGES.txt (original)
+++ hbase/trunk/CHANGES.txt Tue Aug 17 18:44:35 2010
@@ -478,6 +478,7 @@ Release 0.21.0 - Unreleased
    HBASE-2909  SoftValueSortedMap is broken, can generate NPEs
    HBASE-2919  initTableReducerJob: Unused method parameter
                (Libor Dener via Stack)
+   HBASE-2923  Deadlock between HRegion.internalFlushCache and close
 
   IMPROVEMENTS
    HBASE-1760  Cleanup TODOs in HTable

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java?rev=986448&r1=986447&r2=986448&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java Tue Aug 17 18:44:35 2010
@@ -470,7 +470,7 @@ public class HRegion implements HeapSize
    *
    * @throws IOException e
    */
-  public synchronized List<StoreFile> close(final boolean abort)
+  public List<StoreFile> close(final boolean abort)
   throws IOException {
     if (isClosed()) {
       LOG.warn("Region " + this + " already closed");
@@ -507,6 +507,10 @@ public class HRegion implements HeapSize
     this.closing.set(true);
     try {
       splitsAndClosesLock.writeLock().lock();
+      if (this.isClosed()) {
+        // SplitTransaction handles the null
+        return null;
+      }
       LOG.debug("Updates disabled for region, no outstanding scanners on " + this);
       try {
         // Write lock means no more row locks can be given out.  Wait on