You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by la...@apache.org on 2012/08/09 03:07:44 UTC
svn commit: r1371026 - in /hbase/branches/0.94/src:
main/java/org/apache/hadoop/hbase/regionserver/
test/java/org/apache/hadoop/hbase/coprocessor/
test/java/org/apache/hadoop/hbase/util/
Author: larsh
Date: Thu Aug 9 01:07:44 2012
New Revision: 1371026
URL: http://svn.apache.org/viewvc?rev=1371026&view=rev
Log:
HBASE-6522 Expose locks and leases to Coprocessors
Modified:
hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerServices.java
hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java
hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/util/MockRegionServerServices.java
Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java?rev=1371026&r1=1371025&r2=1371026&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java Thu Aug 9 01:07:44 2012
@@ -3169,7 +3169,7 @@ public class HRegion implements HeapSize
* simply return null if it could not acquire the lock.
* @return lockid or null if waitForLock is false and the lock was unavailable.
*/
- private Integer getLock(Integer lockid, byte [] row, boolean waitForLock)
+ public Integer getLock(Integer lockid, byte [] row, boolean waitForLock)
throws IOException {
Integer lid = null;
if (lockid == null) {
Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=1371026&r1=1371025&r2=1371026&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java Thu Aug 9 01:07:44 2012
@@ -3182,10 +3182,8 @@ public class HRegionServer implements HR
throw new IOException("Unknown protocol: " + protocol);
}
- /**
- * @return Return the leases.
- */
- protected Leases getLeases() {
+ @Override
+ public Leases getLeases() {
return leases;
}
Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerServices.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerServices.java?rev=1371026&r1=1371025&r2=1371026&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerServices.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerServices.java Thu Aug 9 01:07:44 2012
@@ -84,4 +84,9 @@ public interface RegionServerServices ex
* @return Return the FileSystem object used by the regionserver
*/
public FileSystem getFileSystem();
+
+ /**
+ * @return The RegionServer's "Leases" service
+ */
+ public Leases getLeases();
}
Modified: hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java?rev=1371026&r1=1371025&r2=1371026&view=diff
==============================================================================
--- hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java (original)
+++ hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java Thu Aug 9 01:07:44 2012
@@ -34,6 +34,7 @@ import java.util.NavigableSet;
import com.google.common.collect.ImmutableList;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.hbase.CoprocessorEnvironment;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Put;
@@ -44,6 +45,7 @@ import org.apache.hadoop.hbase.client.Sc
import org.apache.hadoop.hbase.regionserver.HRegion;
import org.apache.hadoop.hbase.regionserver.InternalScanner;
import org.apache.hadoop.hbase.regionserver.KeyValueScanner;
+import org.apache.hadoop.hbase.regionserver.Leases;
import org.apache.hadoop.hbase.regionserver.RegionScanner;
import org.apache.hadoop.hbase.regionserver.ScanType;
import org.apache.hadoop.hbase.regionserver.Store;
@@ -98,6 +100,18 @@ public class SimpleRegionObserver extend
boolean hadPostBulkLoadHFile = false;
@Override
+ public void start(CoprocessorEnvironment e) throws IOException {
+ // this only makes sure that leases and locks are available to coprocessors
+ // from external packages
+ RegionCoprocessorEnvironment re = (RegionCoprocessorEnvironment)e;
+ Leases leases = re.getRegionServerServices().getLeases();
+ leases.createLease("x", null);
+ leases.cancelLease("x");
+ Integer lid = re.getRegion().getLock(null, Bytes.toBytes("some row"), true);
+ re.getRegion().releaseRowLock(lid);
+ }
+
+ @Override
public void preOpen(ObserverContext<RegionCoprocessorEnvironment> c) {
hadPreOpen = true;
}
Modified: hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/util/MockRegionServerServices.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/util/MockRegionServerServices.java?rev=1371026&r1=1371025&r2=1371026&view=diff
==============================================================================
--- hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/util/MockRegionServerServices.java (original)
+++ hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/util/MockRegionServerServices.java Thu Aug 9 01:07:44 2012
@@ -32,6 +32,7 @@ import org.apache.hadoop.hbase.ipc.RpcSe
import org.apache.hadoop.hbase.regionserver.CompactionRequestor;
import org.apache.hadoop.hbase.regionserver.FlushRequester;
import org.apache.hadoop.hbase.regionserver.HRegion;
+import org.apache.hadoop.hbase.regionserver.Leases;
import org.apache.hadoop.hbase.regionserver.RegionServerAccounting;
import org.apache.hadoop.hbase.regionserver.RegionServerServices;
import org.apache.hadoop.hbase.regionserver.wal.HLog;
@@ -156,4 +157,9 @@ public class MockRegionServerServices im
public void setFileSystem(FileSystem hfs) {
this.hfs = (HFileSystem)hfs;
}
+
+ @Override
+ public Leases getLeases() {
+ return null;
+ }
}