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