diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/Abortable.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/Abortable.java
index 72f41a7c..0790afe 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/Abortable.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/Abortable.java
@@ -19,7 +19,6 @@
package org.apache.hadoop.hbase;
import org.apache.hadoop.hbase.classification.InterfaceAudience;
-import org.apache.hadoop.hbase.classification.InterfaceStability;
/**
* Interface to support the aborting of a given server or client.
@@ -29,8 +28,7 @@ import org.apache.hadoop.hbase.classification.InterfaceStability;
*
* Implemented by the Master, RegionServer, and TableServers (client).
*/
-@InterfaceAudience.LimitedPrivate({HBaseInterfaceAudience.COPROC, HBaseInterfaceAudience.PHOENIX})
-@InterfaceStability.Evolving
+@InterfaceAudience.Private
public interface Abortable {
/**
* Abort the server or client.
diff --git a/hbase-endpoint/src/main/java/org/apache/hadoop/hbase/security/access/SecureBulkLoadEndpoint.java b/hbase-endpoint/src/main/java/org/apache/hadoop/hbase/security/access/SecureBulkLoadEndpoint.java
index 9bc592f..ca7324d 100644
--- a/hbase-endpoint/src/main/java/org/apache/hadoop/hbase/security/access/SecureBulkLoadEndpoint.java
+++ b/hbase-endpoint/src/main/java/org/apache/hadoop/hbase/security/access/SecureBulkLoadEndpoint.java
@@ -42,6 +42,7 @@ import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier.Re
import org.apache.hadoop.hbase.protobuf.generated.SecureBulkLoadProtos.SecureBulkLoadHFilesRequest;
import org.apache.hadoop.hbase.protobuf.generated.SecureBulkLoadProtos.SecureBulkLoadHFilesResponse;
import org.apache.hadoop.hbase.protobuf.generated.SecureBulkLoadProtos.SecureBulkLoadService;
+import org.apache.hadoop.hbase.regionserver.RegionServerServices;
import org.apache.hadoop.hbase.regionserver.SecureBulkLoadManager;
import com.google.protobuf.RpcCallback;
@@ -62,10 +63,13 @@ public class SecureBulkLoadEndpoint extends SecureBulkLoadService
private static final Log LOG = LogFactory.getLog(SecureBulkLoadEndpoint.class);
private RegionCoprocessorEnvironment env;
+ private RegionServerServices rsServices;
@Override
public void start(CoprocessorEnvironment env) {
this.env = (RegionCoprocessorEnvironment)env;
+ assert this.env.getRegionServerServices() instanceof RegionServerServices;
+ rsServices = (RegionServerServices) this.env.getRegionServerServices();
LOG.warn("SecureBulkLoadEndpoint is deprecated. It will be removed in future releases.");
LOG.warn("Secure bulk load has been integrated into HBase core.");
}
@@ -78,8 +82,7 @@ public class SecureBulkLoadEndpoint extends SecureBulkLoadService
public void prepareBulkLoad(RpcController controller, PrepareBulkLoadRequest request,
RpcCallback done) {
try {
- SecureBulkLoadManager secureBulkLoadManager =
- this.env.getRegionServerServices().getSecureBulkLoadManager();
+ SecureBulkLoadManager secureBulkLoadManager = this.rsServices.getSecureBulkLoadManager();
String bulkToken = secureBulkLoadManager.prepareBulkLoad(this.env.getRegion(),
convert(request));
done.run(PrepareBulkLoadResponse.newBuilder().setBulkToken(bulkToken).build());
@@ -105,8 +108,7 @@ public class SecureBulkLoadEndpoint extends SecureBulkLoadService
public void cleanupBulkLoad(RpcController controller, CleanupBulkLoadRequest request,
RpcCallback done) {
try {
- SecureBulkLoadManager secureBulkLoadManager =
- this.env.getRegionServerServices().getSecureBulkLoadManager();
+ SecureBulkLoadManager secureBulkLoadManager = this.rsServices.getSecureBulkLoadManager();
secureBulkLoadManager.cleanupBulkLoad(this.env.getRegion(), convert(request));
done.run(CleanupBulkLoadResponse.newBuilder().build());
} catch (IOException e) {
@@ -133,8 +135,7 @@ public class SecureBulkLoadEndpoint extends SecureBulkLoadService
boolean loaded = false;
Map> map = null;
try {
- SecureBulkLoadManager secureBulkLoadManager =
- this.env.getRegionServerServices().getSecureBulkLoadManager();
+ SecureBulkLoadManager secureBulkLoadManager = this.rsServices.getSecureBulkLoadManager();
BulkLoadHFileRequest bulkLoadHFileRequest = ConvertSecureBulkLoadHFilesRequest(request);
map = secureBulkLoadManager.secureBulkLoadHFiles(this.env.getRegion(),
convert(bulkLoadHFileRequest));
diff --git a/hbase-examples/src/main/java/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.java b/hbase-examples/src/main/java/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.java
index b489fe4..8f20a87 100644
--- a/hbase-examples/src/main/java/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.java
+++ b/hbase-examples/src/main/java/org/apache/hadoop/hbase/coprocessor/example/ZooKeeperScanPolicyObserver.java
@@ -64,6 +64,11 @@ import org.apache.zookeeper.ZooKeeper;
* listeners registered with ZooKeeperWatcher cannot be removed.
*/
public class ZooKeeperScanPolicyObserver implements RegionObserver {
+ // The zk ensemble info is put in hbase config xml with given custom key.
+ public static final String ZK_ENSEMBLE_KEY = "ZooKeeperScanPolicyObserver.zookeeper.ensemble";
+ public static final String ZK_SESSION_TIMEOUT_KEY =
+ "ZooKeeperScanPolicyObserver.zookeeper.session.timeout";
+ public static final int ZK_SESSION_TIMEOUT_DEFAULT = 30 * 1000; // 30 secs
public static final String node = "/backup/example/lastbackup";
public static final String zkkey = "ZK";
private static final Log LOG = LogFactory.getLog(ZooKeeperScanPolicyObserver.class);
@@ -164,10 +169,11 @@ public class ZooKeeperScanPolicyObserver implements RegionObserver {
if (!re.getSharedData().containsKey(zkkey)) {
// there is a short race here
// in the worst case we create a watcher that will be notified once
- re.getSharedData().putIfAbsent(
- zkkey,
- new ZKWatcher(re.getRegionServerServices().getZooKeeper()
- .getRecoverableZooKeeper().getZooKeeper()));
+ String ensemble = re.getConfiguration().get(ZK_ENSEMBLE_KEY);
+ int sessionTimeout = re.getConfiguration().getInt(ZK_SESSION_TIMEOUT_KEY,
+ ZK_SESSION_TIMEOUT_DEFAULT);
+ ZooKeeper zk = new ZooKeeper(ensemble, sessionTimeout, null);
+ re.getSharedData().putIfAbsent(zkkey, new ZKWatcher(zk));
}
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/Server.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/Server.java
index 26454f0..36c6a52 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/Server.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/Server.java
@@ -20,7 +20,6 @@ package org.apache.hadoop.hbase;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.classification.InterfaceAudience;
-import org.apache.hadoop.hbase.classification.InterfaceStability;
import org.apache.hadoop.hbase.client.ClusterConnection;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;
@@ -30,8 +29,7 @@ import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
* Defines the set of shared functions implemented by HBase servers (Masters
* and RegionServers).
*/
-@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)
-@InterfaceStability.Evolving
+@InterfaceAudience.Private
public interface Server extends Abortable, Stoppable {
/**
* Gets the configuration object for this server.
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/client/CoprocessorHConnection.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/client/CoprocessorHConnection.java
index 1d1cce9..a7da801 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/client/CoprocessorHConnection.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/client/CoprocessorHConnection.java
@@ -25,8 +25,8 @@ import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.classification.InterfaceAudience;
import org.apache.hadoop.hbase.classification.InterfaceStability;
import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
+import org.apache.hadoop.hbase.regionserver.CoprocessorRSServices;
import org.apache.hadoop.hbase.regionserver.HRegionServer;
-import org.apache.hadoop.hbase.regionserver.RegionServerServices;
import org.apache.hadoop.hbase.security.UserProvider;
/**
@@ -54,7 +54,7 @@ public class CoprocessorHConnection extends ConnectionImplementation {
// this bit is a little hacky - just trying to get it going for the moment
if (env instanceof RegionCoprocessorEnvironment) {
RegionCoprocessorEnvironment e = (RegionCoprocessorEnvironment) env;
- RegionServerServices services = e.getRegionServerServices();
+ CoprocessorRSServices services = e.getRegionServerServices();
if (services instanceof HRegionServer) {
return new CoprocessorHConnection((HRegionServer) services);
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.java
index 3566f06..90b1deb 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.java
@@ -27,8 +27,8 @@ import org.apache.hadoop.hbase.HRegionInfo;
import org.apache.hadoop.hbase.classification.InterfaceAudience;
import org.apache.hadoop.hbase.classification.InterfaceStability;
import org.apache.hadoop.hbase.metrics.MetricRegistry;
+import org.apache.hadoop.hbase.regionserver.CoprocessorRSServices;
import org.apache.hadoop.hbase.regionserver.Region;
-import org.apache.hadoop.hbase.regionserver.RegionServerServices;
@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)
@InterfaceStability.Evolving
@@ -40,7 +40,7 @@ public interface RegionCoprocessorEnvironment extends CoprocessorEnvironment {
HRegionInfo getRegionInfo();
/** @return reference to the region server services */
- RegionServerServices getRegionServerServices();
+ CoprocessorRSServices getRegionServerServices();
/** @return shared data between all instances of this coprocessor */
ConcurrentMap getSharedData();
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.java
index f42556a..4ce9d80 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessorEnvironment.java
@@ -20,7 +20,7 @@ package org.apache.hadoop.hbase.coprocessor;
import org.apache.hadoop.hbase.CoprocessorEnvironment;
import org.apache.hadoop.hbase.metrics.MetricRegistry;
-import org.apache.hadoop.hbase.regionserver.RegionServerServices;
+import org.apache.hadoop.hbase.regionserver.CoprocessorRSServices;
public interface RegionServerCoprocessorEnvironment extends CoprocessorEnvironment {
/**
@@ -28,7 +28,7 @@ public interface RegionServerCoprocessorEnvironment extends CoprocessorEnvironme
*
* @return the region server services
*/
- RegionServerServices getRegionServerServices();
+ CoprocessorRSServices getRegionServerServices();
/**
* Returns a MetricRegistry that can be used to track metrics at the region server level.
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CoprocessorRSServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CoprocessorRSServices.java
new file mode 100644
index 0000000..6b423ee
--- /dev/null
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CoprocessorRSServices.java
@@ -0,0 +1,103 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.regionserver;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.hbase.HBaseInterfaceAudience;
+import org.apache.hadoop.hbase.ServerName;
+import org.apache.hadoop.hbase.TableName;
+import org.apache.hadoop.hbase.classification.InterfaceAudience;
+import org.apache.hadoop.hbase.classification.InterfaceStability;
+import org.apache.hadoop.hbase.client.Connection;
+import org.apache.hadoop.hbase.ipc.RpcServerInterface;
+
+/**
+ * Services exposed to CPs by {@link HRegionServer}
+ */
+@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)
+@InterfaceStability.Evolving
+public interface CoprocessorRSServices {
+
+ /**
+ * @return True if this regionserver is stopping.
+ */
+ boolean isStopping();
+
+ /**
+ * Returns a reference to the region server's RPC server
+ */
+ RpcServerInterface getRpcServer();
+
+ /**
+ * @return Return the FileSystem object used by the regionserver
+ */
+ FileSystem getFileSystem();
+
+ /**
+ * @return set of recovering regions on the hosting region server
+ */
+ Map getRecoveringRegions();
+
+ /**
+ * @return all the online tables in this RS
+ */
+ Set getOnlineTables();
+
+ /**
+ * Return {@link Region} instance.
+ * Only works if caller is in same context, in same JVM. Region is not
+ * serializable.
+ * @param encodedRegionName
+ * @return Region for the passed encoded encodedRegionName or
+ * null if named region is not member of the online regions.
+ */
+ Region getFromOnlineRegions(String encodedRegionName);
+
+ /**
+ * Get all online regions of a table in this RS.
+ * @param tableName
+ * @return List of Region
+ * @throws java.io.IOException
+ */
+ List getOnlineRegions(TableName tableName) throws IOException;
+
+ /**
+ * Get all online regions in this RS.
+ * @return List of online Region
+ */
+ List getOnlineRegions();
+
+ /**
+ * Returns a reference to the servers' connection.
+ *
+ * Important note: this method returns a reference to Connection which is managed
+ * by Server itself, so callers must NOT attempt to close connection obtained.
+ */
+ Connection getConnection();
+
+ /**
+ * @return The unique server name for this server.
+ */
+ ServerName getServerName();
+}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/FavoredNodesForRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/FavoredNodesForRegion.java
index 508bb32..55bd980 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/FavoredNodesForRegion.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/FavoredNodesForRegion.java
@@ -21,17 +21,14 @@ package org.apache.hadoop.hbase.regionserver;
import java.net.InetSocketAddress;
import java.util.List;
-import org.apache.hadoop.hbase.HBaseInterfaceAudience;
import org.apache.hadoop.hbase.classification.InterfaceAudience;
-import org.apache.hadoop.hbase.classification.InterfaceStability;
import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.ServerName;
/**
* Abstraction that allows different modules in RegionServer to update/get
* the favored nodes information for regions.
*/
-@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)
-@InterfaceStability.Evolving
+@InterfaceAudience.Private
public interface FavoredNodesForRegion {
/**
* Used to update the favored nodes mapping when required.
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/OnlineRegions.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/OnlineRegions.java
index 310108c..7ba578e 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/OnlineRegions.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/OnlineRegions.java
@@ -22,19 +22,15 @@ import java.io.IOException;
import java.util.List;
import org.apache.hadoop.hbase.classification.InterfaceAudience;
-import org.apache.hadoop.hbase.classification.InterfaceStability;
-import org.apache.hadoop.hbase.HBaseInterfaceAudience;
import org.apache.hadoop.hbase.TableName;
-import org.apache.hadoop.hbase.Server;
import org.apache.hadoop.hbase.ServerName;
/**
* Interface to Map of online regions. In the Map, the key is the region's
* encoded name and the value is an {@link Region} instance.
*/
-@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)
-@InterfaceStability.Evolving
-public interface OnlineRegions extends Server {
+@InterfaceAudience.Private
+public interface OnlineRegions {
/**
* Add to online regions.
* @param r
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java
index 63d79d3..2146866 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java
@@ -139,7 +139,7 @@ public class RegionCoprocessorHost
/** @return reference to the region server services */
@Override
- public RegionServerServices getRegionServerServices() {
+ public CoprocessorRSServices getRegionServerServices() {
return rsServices;
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.java
index 9e9e29c..ad5e589 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.java
@@ -380,7 +380,7 @@ public class RegionServerCoprocessorHost extends
}
@Override
- public RegionServerServices getRegionServerServices() {
+ public CoprocessorRSServices getRegionServerServices() {
return regionServerServices;
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerServices.java
index 5afa652..33422b7 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerServices.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerServices.java
@@ -20,20 +20,14 @@ package org.apache.hadoop.hbase.regionserver;
import java.io.IOException;
import java.util.List;
-import java.util.Map;
-import java.util.Set;
import java.util.concurrent.ConcurrentMap;
-import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.hbase.Abortable;
-import org.apache.hadoop.hbase.HBaseInterfaceAudience;
import org.apache.hadoop.hbase.HRegionInfo;
-import org.apache.hadoop.hbase.TableName;
+import org.apache.hadoop.hbase.Server;
import org.apache.hadoop.hbase.classification.InterfaceAudience;
-import org.apache.hadoop.hbase.classification.InterfaceStability;
import org.apache.hadoop.hbase.client.locking.EntityLock;
import org.apache.hadoop.hbase.executor.ExecutorService;
-import org.apache.hadoop.hbase.ipc.RpcServerInterface;
import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode;
import org.apache.hadoop.hbase.quotas.RegionServerRpcQuotaManager;
import org.apache.hadoop.hbase.quotas.RegionServerSpaceQuotaManager;
@@ -46,13 +40,9 @@ import com.google.protobuf.Service;
/**
* Services provided by {@link HRegionServer}
*/
-@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)
-@InterfaceStability.Evolving
-public interface RegionServerServices extends OnlineRegions, FavoredNodesForRegion {
- /**
- * @return True if this regionserver is stopping.
- */
- boolean isStopping();
+@InterfaceAudience.Private
+public interface RegionServerServices
+ extends Server, OnlineRegions, FavoredNodesForRegion, CoprocessorRSServices {
/** @return the WAL for a particular region. Pass null for getting the
* default (common) WAL */
@@ -183,22 +173,12 @@ public interface RegionServerServices extends OnlineRegions, FavoredNodesForRegi
boolean reportRegionStateTransition(TransitionCode code, HRegionInfo... hris);
/**
- * Returns a reference to the region server's RPC server
- */
- RpcServerInterface getRpcServer();
-
- /**
* Get the regions that are currently being opened or closed in the RS
* @return map of regions in transition in this RS
*/
ConcurrentMap getRegionsInTransitionInRS();
/**
- * @return Return the FileSystem object used by the regionserver
- */
- FileSystem getFileSystem();
-
- /**
* @return The RegionServer's "Leases" service
*/
Leases getLeases();
@@ -209,23 +189,12 @@ public interface RegionServerServices extends OnlineRegions, FavoredNodesForRegi
ExecutorService getExecutorService();
/**
- * @return set of recovering regions on the hosting region server
- */
- Map getRecoveringRegions();
-
- /**
* Only required for "old" log replay; if it's removed, remove this.
* @return The RegionServer's NonceManager
*/
public ServerNonceManager getNonceManager();
/**
- * @return all the online tables in this RS
- */
- Set getOnlineTables();
-
-
- /**
* Registers a new protocol buffer {@link Service} subclass as a coprocessor endpoint to be
* available for handling
* @param service the {@code Service} subclass instance to expose as a coprocessor endpoint
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java
index 1e63b13..fda9b41 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java
@@ -89,6 +89,7 @@ import org.apache.hadoop.hbase.regionserver.InternalScanner;
import org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress;
import org.apache.hadoop.hbase.regionserver.Region;
import org.apache.hadoop.hbase.regionserver.RegionScanner;
+import org.apache.hadoop.hbase.regionserver.RegionServerServices;
import org.apache.hadoop.hbase.regionserver.ScanType;
import org.apache.hadoop.hbase.regionserver.ScannerContext;
import org.apache.hadoop.hbase.regionserver.Store;
@@ -949,12 +950,14 @@ public class AccessController implements MasterObserver, RegionObserver, RegionS
zk = mEnv.getMasterServices().getZooKeeper();
} else if (env instanceof RegionServerCoprocessorEnvironment) {
RegionServerCoprocessorEnvironment rsEnv = (RegionServerCoprocessorEnvironment) env;
- zk = rsEnv.getRegionServerServices().getZooKeeper();
+ assert rsEnv.getRegionServerServices() instanceof RegionServerServices;
+ zk = ((RegionServerServices) rsEnv.getRegionServerServices()).getZooKeeper();
} else if (env instanceof RegionCoprocessorEnvironment) {
// if running at region
regionEnv = (RegionCoprocessorEnvironment) env;
conf.addBytesMap(regionEnv.getRegion().getTableDescriptor().getValues());
- zk = regionEnv.getRegionServerServices().getZooKeeper();
+ assert regionEnv.getRegionServerServices() instanceof RegionServerServices;
+ zk = ((RegionServerServices) regionEnv.getRegionServerServices()).getZooKeeper();
compatibleEarlyTermination = conf.getBoolean(AccessControlConstants.CF_ATTRIBUTE_EARLY_OUT,
AccessControlConstants.DEFAULT_ATTRIBUTE_EARLY_OUT);
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/DefaultVisibilityLabelServiceImpl.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/DefaultVisibilityLabelServiceImpl.java
index 672da8a..c6bd5a1 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/DefaultVisibilityLabelServiceImpl.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/visibility/DefaultVisibilityLabelServiceImpl.java
@@ -62,6 +62,7 @@ import org.apache.hadoop.hbase.io.util.StreamUtils;
import org.apache.hadoop.hbase.regionserver.OperationStatus;
import org.apache.hadoop.hbase.regionserver.Region;
import org.apache.hadoop.hbase.regionserver.RegionScanner;
+import org.apache.hadoop.hbase.regionserver.RegionServerServices;
import org.apache.hadoop.hbase.security.Superusers;
import org.apache.hadoop.hbase.security.User;
import org.apache.hadoop.hbase.util.Bytes;
@@ -111,7 +112,8 @@ public class DefaultVisibilityLabelServiceImpl implements VisibilityLabelService
@Override
public void init(RegionCoprocessorEnvironment e) throws IOException {
- ZooKeeperWatcher zk = e.getRegionServerServices().getZooKeeper();
+ assert e.getRegionServerServices() instanceof RegionServerServices;
+ ZooKeeperWatcher zk = ((RegionServerServices) e.getRegionServerServices()).getZooKeeper();
try {
labelsCache = VisibilityLabelsCache.createAndGet(zk, this.conf);
} catch (IOException ioe) {
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java
index c03eb54..f3dbfc2 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java
@@ -41,7 +41,6 @@ import org.apache.hadoop.hbase.io.Reference;
import org.apache.hadoop.hbase.io.hfile.CacheConfig;
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.MiniBatchOperationInProgress;
import org.apache.hadoop.hbase.regionserver.Region;
import org.apache.hadoop.hbase.regionserver.Region.Operation;
@@ -140,12 +139,6 @@ public class SimpleRegionObserver implements RegionObserver {
@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(re.getRegion().getRegionInfo().getRegionNameAsString(), 2000, null);
- leases.cancelLease(re.getRegion().getRegionInfo().getRegionNameAsString());
}
@Override