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