You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2011/07/07 23:52:21 UTC
svn commit: r1144065 - in /hbase/trunk: CHANGES.txt
src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
Author: tedyu
Date: Thu Jul 7 21:52:21 2011
New Revision: 1144065
URL: http://svn.apache.org/viewvc?rev=1144065&view=rev
Log:
HBASE-3893 HRegion.internalObtainRowLock shouldn't wait forever
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=1144065&r1=1144064&r2=1144065&view=diff
==============================================================================
--- hbase/trunk/CHANGES.txt (original)
+++ hbase/trunk/CHANGES.txt Thu Jul 7 21:52:21 2011
@@ -158,6 +158,7 @@ Release 0.91.0 - Unreleased
RS entries in master (Weihua via Ted Yu)
HBASE-4077 Deadlock if WrongRegionException is thrown from getLock in
HRegion.delete (Adam Warrington via Ted Yu)
+ HBASE-3893 HRegion.internalObtainRowLock shouldn't wait forever
IMPROVEMENTS
HBASE-3290 Max Compaction Size (Nicolas Spiegelberg via Stack)
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=1144065&r1=1144064&r2=1144065&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 Thu Jul 7 21:52:21 2011
@@ -42,6 +42,7 @@ import java.util.TreeMap;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentSkipListMap;
import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
@@ -59,12 +60,12 @@ import org.apache.hadoop.hbase.DroppedSn
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HConstants;
-import org.apache.hadoop.hbase.HConstants.OperationStatusCode;
import org.apache.hadoop.hbase.HRegionInfo;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.NotServingRegionException;
import org.apache.hadoop.hbase.UnknownScannerException;
+import org.apache.hadoop.hbase.HConstants.OperationStatusCode;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Increment;
@@ -75,10 +76,10 @@ import org.apache.hadoop.hbase.client.Ro
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.coprocessor.Exec;
import org.apache.hadoop.hbase.client.coprocessor.ExecResult;
-import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.filter.IncompatibleFilterException;
import org.apache.hadoop.hbase.filter.WritableByteArrayComparable;
+import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
import org.apache.hadoop.hbase.io.HeapSize;
import org.apache.hadoop.hbase.io.TimeRange;
import org.apache.hadoop.hbase.io.hfile.BlockCache;
@@ -90,18 +91,17 @@ import org.apache.hadoop.hbase.regionser
import org.apache.hadoop.hbase.regionserver.wal.HLog;
import org.apache.hadoop.hbase.regionserver.wal.HLogKey;
import org.apache.hadoop.hbase.regionserver.wal.WALEdit;
-import org.apache.hadoop.hbase.util.HashedBytes;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.CancelableProgressable;
import org.apache.hadoop.hbase.util.ClassSize;
import org.apache.hadoop.hbase.util.CompressionTest;
import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
import org.apache.hadoop.hbase.util.FSUtils;
+import org.apache.hadoop.hbase.util.HashedBytes;
import org.apache.hadoop.hbase.util.Pair;
import org.apache.hadoop.hbase.util.Writables;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.util.StringUtils;
-
import org.cliffc.high_scale_lib.Counter;
import com.google.common.base.Preconditions;
@@ -195,6 +195,8 @@ public class HRegion implements HeapSize
final HLog log;
final FileSystem fs;
final Configuration conf;
+ final int rowLockWaitDuration;
+ static final int DEFAULT_ROWLOCK_WAIT_DURATION = 30000;
final HRegionInfo regionInfo;
final Path regiondir;
KeyValue.KVComparator comparator;
@@ -274,6 +276,7 @@ public class HRegion implements HeapSize
this.tableDir = null;
this.blockingMemStoreSize = 0L;
this.conf = null;
+ this.rowLockWaitDuration = DEFAULT_ROWLOCK_WAIT_DURATION;
this.rsServices = null;
this.fs = null;
this.memstoreFlushSize = 0L;
@@ -316,6 +319,8 @@ public class HRegion implements HeapSize
this.log = log;
this.fs = fs;
this.conf = conf;
+ this.rowLockWaitDuration = conf.getInt("hbase.rowlock.wait.duration",
+ DEFAULT_ROWLOCK_WAIT_DURATION);
this.regionInfo = regionInfo;
this.htableDescriptor = htd;
this.rsServices = rsServices;
@@ -2400,7 +2405,10 @@ public class HRegion implements HeapSize
return null;
}
try {
- existingLatch.await();
+ if (!existingLatch.await(this.rowLockWaitDuration,
+ TimeUnit.MILLISECONDS)) {
+ return null;
+ }
} catch (InterruptedException ie) {
// Empty
}