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 c2785a0..8233071 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.yetus.audience.InterfaceAudience;
-import org.apache.yetus.audience.InterfaceStability;
/**
* Interface to support the aborting of a given server or client.
@@ -29,8 +28,7 @@ import org.apache.yetus.audience.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 2a4b4f3..3f8b3bb 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.getCoprocessorRegionServerServices() instanceof RegionServerServices;
+ rsServices = (RegionServerServices) this.env.getCoprocessorRegionServerServices();
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));
@@ -106,8 +109,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) {
@@ -138,8 +140,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 a730403..20f4bab 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
@@ -65,10 +65,17 @@ 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);
+ private ZooKeeper zk = null;
+
/**
* Internal watcher that keep "data" up to date asynchronously.
*/
@@ -165,11 +172,25 @@ 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);
+ this.zk = new ZooKeeper(ensemble, sessionTimeout, null);
+ re.getSharedData().putIfAbsent(zkkey, new ZKWatcher(zk));
}
}
+ @Override
+ public void stop(CoprocessorEnvironment env) throws IOException {
+ if (this.zk != null) {
+ try {
+ this.zk.close();
+ } catch (InterruptedException e) {
+ LOG.error("Excepion while closing the ZK connection!", e);
+ }
+ }
+ }
+
protected ScanInfo getScanInfo(Store store, RegionCoprocessorEnvironment e) {
byte[] data = ((ZKWatcher) e.getSharedData().get(zkkey)).getData();
if (data == null) {
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 d6492eb..f9cb3be 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
@@ -19,19 +19,17 @@
package org.apache.hadoop.hbase;
import org.apache.hadoop.conf.Configuration;
-import org.apache.yetus.audience.InterfaceAudience;
-import org.apache.yetus.audience.InterfaceStability;
import org.apache.hadoop.hbase.client.ClusterConnection;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;
import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
+import org.apache.yetus.audience.InterfaceAudience;
/**
* 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 519d5f0..c87c56e 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.yetus.audience.InterfaceAudience;
import org.apache.yetus.audience.InterfaceStability;
import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
+import org.apache.hadoop.hbase.regionserver.CoprocessorRegionServerServices;
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();
+ CoprocessorRegionServerServices services = e.getCoprocessorRegionServerServices();
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 2a3d62c..dceb3d4 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
@@ -25,8 +25,8 @@ import org.apache.hadoop.hbase.CoprocessorEnvironment;
import org.apache.hadoop.hbase.HBaseInterfaceAudience;
import org.apache.hadoop.hbase.client.RegionInfo;
import org.apache.hadoop.hbase.metrics.MetricRegistry;
+import org.apache.hadoop.hbase.regionserver.CoprocessorRegionServerServices;
import org.apache.hadoop.hbase.regionserver.Region;
-import org.apache.hadoop.hbase.regionserver.RegionServerServices;
import org.apache.yetus.audience.InterfaceAudience;
import org.apache.yetus.audience.InterfaceStability;
@@ -40,7 +40,7 @@ public interface RegionCoprocessorEnvironment extends CoprocessorEnvironment {
RegionInfo getRegionInfo();
/** @return reference to the region server services */
- RegionServerServices getRegionServerServices();
+ CoprocessorRegionServerServices getCoprocessorRegionServerServices();
/** @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..da3189f 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
@@ -19,16 +19,21 @@
package org.apache.hadoop.hbase.coprocessor;
import org.apache.hadoop.hbase.CoprocessorEnvironment;
+import org.apache.hadoop.hbase.HBaseInterfaceAudience;
import org.apache.hadoop.hbase.metrics.MetricRegistry;
-import org.apache.hadoop.hbase.regionserver.RegionServerServices;
+import org.apache.hadoop.hbase.regionserver.CoprocessorRegionServerServices;
+import org.apache.yetus.audience.InterfaceAudience;
+import org.apache.yetus.audience.InterfaceStability;
+@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)
+@InterfaceStability.Evolving
public interface RegionServerCoprocessorEnvironment extends CoprocessorEnvironment {
/**
* Gets the region server services.
*
* @return the region server services
*/
- RegionServerServices getRegionServerServices();
+ CoprocessorRegionServerServices getCoprocessorRegionServerServices();
/**
* 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/CoprocessorRegionServerServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CoprocessorRegionServerServices.java
new file mode 100644
index 0000000..3d70793
--- /dev/null
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/CoprocessorRegionServerServices.java
@@ -0,0 +1,64 @@
+/**
+ * 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.util.Set;
+
+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.client.Connection;
+import org.apache.yetus.audience.InterfaceAudience;
+import org.apache.yetus.audience.InterfaceStability;
+
+/**
+ * Services exposed to CPs by {@link HRegionServer}
+ */
+@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)
+@InterfaceStability.Evolving
+public interface CoprocessorRegionServerServices extends ImmutableOnlineRegions {
+
+ /**
+ * @return True if this regionserver is stopping.
+ */
+ boolean isStopping();
+
+ /**
+ * @return Return the FileSystem object used by the regionserver
+ */
+ FileSystem getFileSystem();
+
+ /**
+ * @return all the online tables in this RS
+ */
+ Set getOnlineTables();
+
+ /**
+ * 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();
+}
\ No newline at end of file
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 72e0383..e34a9d0 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
@@ -19,19 +19,16 @@
package org.apache.hadoop.hbase.regionserver;
import java.net.InetSocketAddress;
-import java.util.List;
+import java.util.List;
-import org.apache.hadoop.hbase.HBaseInterfaceAudience;
-import org.apache.yetus.audience.InterfaceAudience;
-import org.apache.yetus.audience.InterfaceStability;
import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.ServerName;
+import org.apache.yetus.audience.InterfaceAudience;
/**
* 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/ImmutableOnlineRegions.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ImmutableOnlineRegions.java
new file mode 100644
index 0000000..c9c7848
--- /dev/null
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ImmutableOnlineRegions.java
@@ -0,0 +1,60 @@
+/**
+ *
+ * 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 org.apache.hadoop.hbase.HBaseInterfaceAudience;
+import org.apache.hadoop.hbase.TableName;
+import org.apache.yetus.audience.InterfaceAudience;
+import org.apache.yetus.audience.InterfaceStability;
+
+/**
+ * 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 ImmutableOnlineRegions {
+
+ /**
+ * 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();
+}
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 40a3088..ebb986d 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
@@ -18,23 +18,16 @@
*/
package org.apache.hadoop.hbase.regionserver;
-import java.io.IOException;
-import java.util.List;
-
-import org.apache.yetus.audience.InterfaceAudience;
-import org.apache.yetus.audience.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;
+import org.apache.yetus.audience.InterfaceAudience;
/**
* 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 extends ImmutableOnlineRegions {
+
/**
* Add to online regions.
* @param r
@@ -49,28 +42,4 @@ public interface OnlineRegions extends Server {
* @return True if we removed a region from online list.
*/
boolean removeFromOnlineRegions(final Region r, ServerName destination);
-
- /**
- * 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();
}
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 fe0f30e..19491b4 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
@@ -138,7 +138,7 @@ public class RegionCoprocessorHost
/** @return reference to the region server services */
@Override
- public RegionServerServices getRegionServerServices() {
+ public CoprocessorRegionServerServices getCoprocessorRegionServerServices() {
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 2c80d54..5cb87b5 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
@@ -309,7 +309,7 @@ public class RegionServerCoprocessorHost extends
}
@Override
- public RegionServerServices getRegionServerServices() {
+ public CoprocessorRegionServerServices getCoprocessorRegionServerServices() {
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 209fce8..1d31d5a 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
@@ -21,24 +21,21 @@ 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.yetus.audience.InterfaceAudience;
-import org.apache.yetus.audience.InterfaceStability;
+import org.apache.hadoop.hbase.Server;
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;
import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;
+import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionStateTransition.TransitionCode;
import org.apache.hadoop.hbase.wal.WAL;
+import org.apache.yetus.audience.InterfaceAudience;
import org.apache.zookeeper.KeeperException;
import com.google.protobuf.Service;
@@ -46,13 +43,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, CoprocessorRegionServerServices {
/** @return the WAL for a particular region. Pass null for getting the
* default (common) WAL */
@@ -189,11 +182,6 @@ public interface RegionServerServices extends OnlineRegions, FavoredNodesForRegi
ConcurrentMap getRegionsInTransitionInRS();
/**
- * @return Return the FileSystem object used by the regionserver
- */
- FileSystem getFileSystem();
-
- /**
* @return The RegionServer's "Leases" service
*/
Leases getLeases();
@@ -215,12 +203,6 @@ public interface RegionServerServices extends OnlineRegions, FavoredNodesForRegi
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/replication/regionserver/ReplicationObserver.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationObserver.java
index d0d6181..fdb951b 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationObserver.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/ReplicationObserver.java
@@ -55,7 +55,7 @@ public class ReplicationObserver implements RegionObserver {
+ "data replication.");
return;
}
- HRegionServer rs = (HRegionServer) env.getRegionServerServices();
+ HRegionServer rs = (HRegionServer) env.getCoprocessorRegionServerServices();
Replication rep = (Replication) rs.getReplicationSourceService();
rep.addHFileRefsToQueue(env.getRegionInfo().getTable(), family, pairs);
}
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 5302baf..7081ea1 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
@@ -104,6 +104,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.getCoprocessorRegionServerServices() instanceof RegionServerServices;
+ zk = ((RegionServerServices) rsEnv.getCoprocessorRegionServerServices()).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.getCoprocessorRegionServerServices() instanceof RegionServerServices;
+ zk = ((RegionServerServices) regionEnv.getCoprocessorRegionServerServices()).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/token/TokenProvider.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/TokenProvider.java
index 9d46085..50b8765 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/TokenProvider.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/security/token/TokenProvider.java
@@ -31,6 +31,7 @@ import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;
import org.apache.hadoop.hbase.ipc.RpcServer;
import org.apache.hadoop.hbase.ipc.RpcServerInterface;
import org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos;
+import org.apache.hadoop.hbase.regionserver.RegionServerServices;
import org.apache.hadoop.hbase.security.AccessDeniedException;
import org.apache.hadoop.hbase.security.User;
import org.apache.hadoop.security.UserGroupInformation;
@@ -61,7 +62,9 @@ public class TokenProvider implements AuthenticationProtos.AuthenticationService
if (env instanceof RegionCoprocessorEnvironment) {
RegionCoprocessorEnvironment regionEnv =
(RegionCoprocessorEnvironment)env;
- RpcServerInterface server = regionEnv.getRegionServerServices().getRpcServer();
+ assert regionEnv.getCoprocessorRegionServerServices() instanceof RegionServerServices;
+ RpcServerInterface server = ((RegionServerServices) regionEnv
+ .getCoprocessorRegionServerServices()).getRpcServer();
SecretManager> mgr = ((RpcServer)server).getSecretManager();
if (mgr instanceof AuthenticationTokenSecretManager) {
secretManager = (AuthenticationTokenSecretManager)mgr;
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 8e19a64..26620c1 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,9 @@ public class DefaultVisibilityLabelServiceImpl implements VisibilityLabelService
@Override
public void init(RegionCoprocessorEnvironment e) throws IOException {
- ZooKeeperWatcher zk = e.getRegionServerServices().getZooKeeper();
+ assert e.getCoprocessorRegionServerServices() instanceof RegionServerServices;
+ ZooKeeperWatcher zk = ((RegionServerServices) e.getCoprocessorRegionServerServices())
+ .getZooKeeper();
try {
labelsCache = VisibilityLabelsCache.createAndGet(zk, this.conf);
} catch (IOException ioe) {
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestReplicaWithCluster.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestReplicaWithCluster.java
index 7661ed4..264c646 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestReplicaWithCluster.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestReplicaWithCluster.java
@@ -134,7 +134,7 @@ public class TestReplicaWithCluster {
if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() <= 1) {
LOG.info("Throw Region Server Stopped Exceptoin for replica id " + replicaId);
throw new RegionServerStoppedException("Server " +
- e.getEnvironment().getRegionServerServices().getServerName()
+ e.getEnvironment().getCoprocessorRegionServerServices().getServerName()
+ " not running");
} else {
LOG.info("We're replica region " + replicaId);
@@ -151,7 +151,7 @@ public class TestReplicaWithCluster {
if (e.getEnvironment().getRegion().getRegionInfo().getReplicaId() <= 1) {
LOG.info("Throw Region Server Stopped Exceptoin for replica id " + replicaId);
throw new RegionServerStoppedException("Server " +
- e.getEnvironment().getRegionServerServices().getServerName()
+ e.getEnvironment().getCoprocessorRegionServerServices().getServerName()
+ " not running");
} else {
LOG.info("We're replica region " + replicaId);
@@ -179,8 +179,9 @@ public class TestReplicaWithCluster {
if (!e.getEnvironment().getRegion().getRegionInfo().isMetaRegion() && (replicaId == 0)) {
LOG.info("Get, throw Region Server Stopped Exceptoin for region " + e.getEnvironment()
.getRegion().getRegionInfo());
- throw new RegionServerStoppedException("Server " +
- e.getEnvironment().getRegionServerServices().getServerName() + " not running");
+ throw new RegionServerStoppedException(
+ "Server " + e.getEnvironment().getCoprocessorRegionServerServices().getServerName()
+ + " not running");
}
} else {
LOG.info("Get, We're replica region " + replicaId);
@@ -209,8 +210,9 @@ public class TestReplicaWithCluster {
LOG.info("Scan, throw Region Server Stopped Exceptoin for replica " + e.getEnvironment()
.getRegion().getRegionInfo());
- throw new RegionServerStoppedException("Server " +
- e.getEnvironment().getRegionServerServices().getServerName() + " not running");
+ throw new RegionServerStoppedException(
+ "Server " + e.getEnvironment().getCoprocessorRegionServerServices().getServerName()
+ + " not running");
} else {
LOG.info("Scan, We're replica region " + replicaId);
}
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 ba1e222..5868bf9 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
@@ -53,7 +53,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.Operation;
import org.apache.hadoop.hbase.regionserver.RegionScanner;
@@ -137,12 +136,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
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.java
index 8b4afac..9928a77 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.java
@@ -168,7 +168,7 @@ public class TestRegionServerAbort {
public void prePut(ObserverContext c, Put put, WALEdit edit,
Durability durability) throws IOException {
if (put.getAttribute(DO_ABORT) != null) {
- HRegionServer rs = (HRegionServer) c.getEnvironment().getRegionServerServices();
+ HRegionServer rs = (HRegionServer) c.getEnvironment().getCoprocessorRegionServerServices();
LOG.info("Triggering abort for regionserver " + rs.getServerName());
rs.abort("Aborting for test");
}
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/token/TestTokenAuthentication.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/token/TestTokenAuthentication.java
index 012236c..780a8e0 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/token/TestTokenAuthentication.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/token/TestTokenAuthentication.java
@@ -60,6 +60,7 @@ import org.apache.hadoop.hbase.ipc.ServerRpcController;
import org.apache.hadoop.hbase.ipc.SimpleRpcServer;
import org.apache.hadoop.hbase.metrics.MetricRegistry;
import org.apache.hadoop.hbase.protobuf.generated.AuthenticationProtos;
+import org.apache.hadoop.hbase.regionserver.CoprocessorRegionServerServices;
import org.apache.hadoop.hbase.regionserver.HRegion;
import org.apache.hadoop.hbase.regionserver.RegionServerServices;
import org.apache.hadoop.hbase.security.SecurityInfo;
@@ -265,7 +266,7 @@ public class TestTokenAuthentication {
public HRegion getRegion() { return null; }
@Override
- public RegionServerServices getRegionServerServices() {
+ public CoprocessorRegionServerServices getCoprocessorRegionServerServices() {
return mockServices;
}
diff --git a/hbase-thrift/src/test/java/org/apache/hadoop/hbase/thrift/ErrorThrowingGetObserver.java b/hbase-thrift/src/test/java/org/apache/hadoop/hbase/thrift/ErrorThrowingGetObserver.java
index fcd80d0..b988a58 100644
--- a/hbase-thrift/src/test/java/org/apache/hadoop/hbase/thrift/ErrorThrowingGetObserver.java
+++ b/hbase-thrift/src/test/java/org/apache/hadoop/hbase/thrift/ErrorThrowingGetObserver.java
@@ -62,7 +62,7 @@ public class ErrorThrowingGetObserver implements RegionObserver {
throw new NotServingRegionException("Failing for test");
case REGION_MOVED:
throw new RegionMovedException(
- e.getEnvironment().getRegionServerServices().getServerName(), 1);
+ e.getEnvironment().getCoprocessorRegionServerServices().getServerName(), 1);
case SCANNER_RESET:
throw new ScannerResetException("Failing for test");
case UNKNOWN_SCANNER: