Index: hbase-server/src/test/java/org/apache/hadoop/hbase/util/MockRegionServerServices.java =================================================================== --- hbase-server/src/test/java/org/apache/hadoop/hbase/util/MockRegionServerServices.java (revision 1370614) +++ hbase-server/src/test/java/org/apache/hadoop/hbase/util/MockRegionServerServices.java (working copy) @@ -32,6 +32,7 @@ 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 void setFileSystem(FileSystem hfs) { this.hfs = (HFileSystem)hfs; } + + @Override + public Leases getLeases() { + return null; + } } Index: hbase-server/src/test/java/org/apache/hadoop/hbase/master/MockRegionServer.java =================================================================== --- hbase-server/src/test/java/org/apache/hadoop/hbase/master/MockRegionServer.java (revision 1370614) +++ hbase-server/src/test/java/org/apache/hadoop/hbase/master/MockRegionServer.java (working copy) @@ -80,6 +80,7 @@ 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; @@ -508,4 +509,10 @@ // TODO Auto-generated method stub return null; } + + @Override + public Leases getLeases() { + // TODO Auto-generated method stub + return null; + } } Index: hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java =================================================================== --- hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java (revision 1370614) +++ hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java (working copy) @@ -34,6 +34,7 @@ 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.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 @@ 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", 2000, null); + leases.cancelLease("x"); + Integer lid = re.getRegion().getLock(null, Bytes.toBytes("some row"), true); + re.getRegion().releaseRowLock(lid); + } + + @Override public void preOpen(ObserverContext c) { hadPreOpen = true; } Index: hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerServices.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerServices.java (revision 1370614) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerServices.java (working copy) @@ -86,4 +86,9 @@ * @return Return the FileSystem object used by the regionserver */ public FileSystem getFileSystem(); + + /** + * @return The RegionServer's "Leases" service + */ + public Leases getLeases(); } Index: hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java (revision 1370614) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java (working copy) @@ -3270,7 +3270,7 @@ * 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) { Index: hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (revision 1370614) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (working copy) @@ -2125,10 +2125,8 @@ throw new IOException("Unknown protocol: " + protocol); } - /** - * @return Return the leases. - */ - protected Leases getLeases() { + @Override + public Leases getLeases() { return leases; }