HBASE-15688 Use MasterServices directly instead of casting to HMaster when 
possible


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/1ecb10ce
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/1ecb10ce
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/1ecb10ce

Branch: refs/heads/HBASE-14850
Commit: 1ecb10ce071a4b3aa6cd52bd346bf3c49437ed8d
Parents: bfca2a4
Author: Matteo Bertozzi <[email protected]>
Authored: Fri Apr 22 09:31:56 2016 -0700
Committer: Matteo Bertozzi <[email protected]>
Committed: Fri Apr 22 10:15:58 2016 -0700

----------------------------------------------------------------------
 .../hadoop/hbase/master/MasterServices.java     |   9 +-
 .../hadoop/hbase/master/ServerManager.java      |   2 +-
 .../master/procedure/MasterProcedureEnv.java    |  10 +-
 .../hbase/master/MockNoopMasterServices.java    | 329 +++++++++++++++++++
 .../hadoop/hbase/master/TestCatalogJanitor.java | 247 +-------------
 5 files changed, 343 insertions(+), 254 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/1ecb10ce/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterServices.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterServices.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterServices.java
index d6802fe..d095183 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterServices.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterServices.java
@@ -101,7 +101,7 @@ public interface MasterServices extends Server {
    * @return Master's instance of {@link MasterQuotaManager}
    */
   MasterQuotaManager getMasterQuotaManager();
-  
+
   /**
    * @return Master's instance of {@link RegionNormalizer}
    */
@@ -288,6 +288,11 @@ public interface MasterServices extends Server {
   ) throws IOException;
 
   /**
+   * @return true if master is the active one
+   */
+  boolean isActiveMaster();
+
+  /**
    * @return true if master is initialized
    */
   boolean isInitialized();
@@ -297,7 +302,7 @@ public interface MasterServices extends Server {
    * @param procId ID of the procedure
    * @param mayInterruptIfRunning if the proc completed at least one step, 
should it be aborted?
    * @return true if aborted, false if procedure already completed or does not 
exist
-   * @throws IOException 
+   * @throws IOException
    */
   public boolean abortProcedure(final long procId, final boolean 
mayInterruptIfRunning)
       throws IOException;

http://git-wip-us.apache.org/repos/asf/hbase/blob/1ecb10ce/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
index dabef71..d69c7aa 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java
@@ -430,7 +430,7 @@ public class ServerManager {
     }
     // remove dead server with same hostname and port of newly checking in rs 
after master
     // initialization.See HBASE-5916 for more information.
-    if ((this.services == null || ((HMaster) this.services).isInitialized())
+    if ((this.services == null || this.services.isInitialized())
         && this.deadservers.cleanPreviousInstance(serverName)) {
       // This server has now become alive after we marked it as dead.
       // We removed it's previous entry from the dead list to reflect it.

http://git-wip-us.apache.org/repos/asf/hbase/blob/1ecb10ce/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.java
index 090b8cc..3b5eced 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.java
@@ -47,9 +47,9 @@ public class MasterProcedureEnv {
 
   @InterfaceAudience.Private
   public static class WALStoreLeaseRecovery implements 
WALProcedureStore.LeaseRecovery {
-    private final HMaster master;
+    private final MasterServices master;
 
-    public WALStoreLeaseRecovery(final HMaster master) {
+    public WALStoreLeaseRecovery(final MasterServices master) {
       this.master = master;
     }
 
@@ -70,9 +70,9 @@ public class MasterProcedureEnv {
   @InterfaceAudience.Private
   public static class MasterProcedureStoreListener
       implements ProcedureStore.ProcedureStoreListener {
-    private final HMaster master;
+    private final MasterServices master;
 
-    public MasterProcedureStoreListener(final HMaster master) {
+    public MasterProcedureStoreListener(final MasterServices master) {
       this.master = master;
     }
 
@@ -83,7 +83,7 @@ public class MasterProcedureEnv {
 
     @Override
     public void abortProcess() {
-      master.abort("The Procedure Store lost the lease");
+      master.abort("The Procedure Store lost the lease", null);
     }
   }
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/1ecb10ce/hbase-server/src/test/java/org/apache/hadoop/hbase/master/MockNoopMasterServices.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/MockNoopMasterServices.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/MockNoopMasterServices.java
new file mode 100644
index 0000000..0882716
--- /dev/null
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/MockNoopMasterServices.java
@@ -0,0 +1,329 @@
+/**
+ * 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.master;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hbase.ChoreService;
+import org.apache.hadoop.hbase.CoordinatedStateManager;
+import org.apache.hadoop.hbase.HColumnDescriptor;
+import org.apache.hadoop.hbase.HRegionInfo;
+import org.apache.hadoop.hbase.HTableDescriptor;
+import org.apache.hadoop.hbase.ProcedureInfo;
+import org.apache.hadoop.hbase.Server;
+import org.apache.hadoop.hbase.ServerName;
+import org.apache.hadoop.hbase.TableDescriptors;
+import org.apache.hadoop.hbase.TableName;
+import org.apache.hadoop.hbase.client.ClusterConnection;
+import org.apache.hadoop.hbase.executor.ExecutorService;
+import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;
+import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;
+import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;
+import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;
+import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;
+import org.apache.hadoop.hbase.quotas.MasterQuotaManager;
+import org.apache.hadoop.hbase.security.User;
+import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;
+import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
+import org.mockito.Mockito;
+
+import com.google.protobuf.Service;
+
+public class MockNoopMasterServices implements MasterServices, Server {
+  private final Configuration conf;
+
+  public MockNoopMasterServices() {
+    this(null);
+  }
+
+  public MockNoopMasterServices(final Configuration conf) {
+    this.conf = conf;
+  }
+
+  @Override
+  public void checkTableModifiable(TableName tableName) throws IOException {
+    //no-op
+  }
+
+  @Override
+  public long createTable(
+      final HTableDescriptor desc,
+      final byte[][] splitKeys,
+      final long nonceGroup,
+      final long nonce) throws IOException {
+    // no-op
+    return -1;
+  }
+
+  @Override
+  public AssignmentManager getAssignmentManager() {
+    return null;
+  }
+
+  @Override
+  public ExecutorService getExecutorService() {
+    return null;
+  }
+
+  @Override
+  public ChoreService getChoreService() {
+    return null;
+  }
+
+  @Override
+  public RegionNormalizer getRegionNormalizer() {
+    return null;
+  }
+
+  @Override
+  public MasterFileSystem getMasterFileSystem() {
+    return null;
+  }
+
+  @Override
+  public MasterCoprocessorHost getMasterCoprocessorHost() {
+    return null;
+  }
+
+  @Override
+  public MasterQuotaManager getMasterQuotaManager() {
+    return null;
+  }
+
+  @Override
+  public ProcedureExecutor<MasterProcedureEnv> getMasterProcedureExecutor() {
+    return null;
+  }
+
+  @Override
+  public ServerManager getServerManager() {
+    return null;
+  }
+
+  @Override
+  public ZooKeeperWatcher getZooKeeper() {
+    return null;
+  }
+
+  @Override
+  public CoordinatedStateManager getCoordinatedStateManager() {
+    return null;
+  }
+
+  @Override
+  public MetaTableLocator getMetaTableLocator() {
+    return null;
+  }
+
+  @Override
+  public ClusterConnection getConnection() {
+    return null;
+  }
+
+  @Override
+  public Configuration getConfiguration() {
+    return conf;
+  }
+
+  @Override
+  public ServerName getServerName() {
+    return ServerName.valueOf("mock.master", 12345, 1);
+  }
+
+  @Override
+  public void abort(String why, Throwable e) {
+    //no-op
+  }
+
+  @Override
+  public boolean isAborted() {
+    return false;
+  }
+
+  private boolean stopped = false;
+
+  @Override
+  public void stop(String why) {
+    stopped = true;
+  }
+
+  @Override
+  public boolean isStopped() {
+    return stopped;
+  }
+
+  @Override
+  public TableDescriptors getTableDescriptors() {
+    return null;
+  }
+
+  @Override
+  public boolean isServerCrashProcessingEnabled() {
+    return true;
+  }
+
+  @Override
+  public boolean registerService(Service instance) {
+    return false;
+  }
+
+  @Override
+  public boolean abortProcedure(final long procId, final boolean 
mayInterruptIfRunning)
+      throws IOException {
+    return false;  //To change body of implemented methods use File | Settings 
| File Templates.
+  }
+
+  @Override
+  public List<ProcedureInfo> listProcedures() throws IOException {
+    return null;  //To change body of implemented methods use File | Settings 
| File Templates.
+  }
+
+  @Override
+  public List<HTableDescriptor> listTableDescriptorsByNamespace(String name) 
throws IOException {
+    return null;  //To change body of implemented methods use File | Settings 
| File Templates.
+  }
+
+  @Override
+  public List<TableName> listTableNamesByNamespace(String name) throws 
IOException {
+    return null;
+  }
+
+  @Override
+  public long deleteTable(
+      final TableName tableName,
+      final long nonceGroup,
+      final long nonce) throws IOException {
+    return -1;
+  }
+
+  @Override
+  public long truncateTable(
+      final TableName tableName,
+      final boolean preserveSplits,
+      final long nonceGroup,
+      final long nonce) throws IOException {
+    return -1;
+  }
+
+
+  @Override
+  public long modifyTable(
+      final TableName tableName,
+      final HTableDescriptor descriptor,
+      final long nonceGroup,
+      final long nonce) throws IOException {
+    return -1;
+  }
+
+  @Override
+  public long enableTable(
+      final TableName tableName,
+      final long nonceGroup,
+      final long nonce) throws IOException {
+    return -1;
+  }
+
+  @Override
+  public long disableTable(
+      TableName tableName,
+      final long nonceGroup,
+      final long nonce) throws IOException {
+    return -1;
+  }
+
+  @Override
+  public long addColumn(final TableName tableName, final HColumnDescriptor 
columnDescriptor,
+      final long nonceGroup, final long nonce) throws IOException {
+    return -1;
+  }
+
+  @Override
+  public long modifyColumn(final TableName tableName, final HColumnDescriptor 
descriptor,
+      final long nonceGroup, final long nonce) throws IOException {
+    return -1;
+  }
+
+  @Override
+  public long deleteColumn(final TableName tableName, final byte[] columnName,
+      final long nonceGroup, final long nonce) throws IOException {
+    return -1;
+  }
+
+  @Override
+  public TableLockManager getTableLockManager() {
+    return null;
+  }
+
+  @Override
+  public TableStateManager getTableStateManager() {
+    return null;
+  }
+
+  @Override
+  public void dispatchMergingRegions(HRegionInfo region_a, HRegionInfo 
region_b,
+      boolean forcible, User user) throws IOException {
+  }
+
+  @Override
+  public boolean isActiveMaster() {
+    return true;
+  }
+
+  @Override
+  public boolean isInitialized() {
+    return false;
+  }
+
+  @Override
+  public long getLastMajorCompactionTimestamp(TableName table) throws 
IOException {
+    return 0;
+  }
+
+  @Override
+  public long getLastMajorCompactionTimestampForRegion(byte[] regionName) 
throws IOException {
+    return 0;
+  }
+
+  @Override
+  public ClusterSchema getClusterSchema() {
+    return null;
+  }
+
+  @Override
+  public ClusterConnection getClusterConnection() {
+    // TODO Auto-generated method stub
+    return null;
+  }
+
+  @Override
+  public LoadBalancer getLoadBalancer() {
+    return null;
+  }
+
+  @Override
+  public SnapshotManager getSnapshotManager() {
+    return null;
+  }
+
+   @Override
+  public MasterProcedureManagerHost getMasterProcedureManagerHost() {
+    return null;
+  }
+}

http://git-wip-us.apache.org/repos/asf/hbase/blob/1ecb10ce/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java
index e417c8e..e850ed0 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestCatalogJanitor.java
@@ -64,8 +64,6 @@ import org.apache.hadoop.hbase.io.Reference;
 import 
org.apache.hadoop.hbase.master.CatalogJanitor.SplitParentFirstComparator;
 import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;
 import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;
-import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;
-import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;
 import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;
 import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
 import org.apache.hadoop.hbase.protobuf.generated.AdminProtos;
@@ -220,7 +218,7 @@ public class TestCatalogJanitor {
   /**
    * Mock MasterServices for tests below.
    */
-  class MockMasterServices implements MasterServices {
+  class MockMasterServices extends MockNoopMasterServices {
     private final MasterFileSystem mfs;
     private final AssignmentManager asm;
 
@@ -230,128 +228,21 @@ public class TestCatalogJanitor {
     }
 
     @Override
-    public void checkTableModifiable(TableName tableName) throws IOException {
-      //no-op
-    }
-
-    @Override
-    public long createTable(
-        final HTableDescriptor desc,
-        final byte[][] splitKeys,
-        final long nonceGroup,
-        final long nonce) throws IOException {
-      // no-op
-      return -1;
-    }
-
-    @Override
-    public SnapshotManager getSnapshotManager() {
-      return null;
-    }
-
-    @Override
-    public MasterProcedureManagerHost getMasterProcedureManagerHost() {
-      return null;
-    }
-
-    @Override
     public AssignmentManager getAssignmentManager() {
       return this.asm;
     }
 
     @Override
-    public ExecutorService getExecutorService() {
-      return null;
-    }
-
-    @Override
-    public ChoreService getChoreService() {
-      return null;
-    }
-
-    @Override
-    public RegionNormalizer getRegionNormalizer() {
-      return null;
-    }
-
-    @Override
     public MasterFileSystem getMasterFileSystem() {
       return this.mfs;
     }
 
     @Override
-    public MasterCoprocessorHost getMasterCoprocessorHost() {
-      return null;
-    }
-
-    @Override
-    public MasterQuotaManager getMasterQuotaManager() {
-      return null;
-    }
-
-    @Override
-    public ProcedureExecutor<MasterProcedureEnv> getMasterProcedureExecutor() {
-      return null;
-    }
-
-    @Override
-    public ServerManager getServerManager() {
-      return null;
-    }
-
-    @Override
-    public ZooKeeperWatcher getZooKeeper() {
-      return null;
-    }
-
-    @Override
-    public CoordinatedStateManager getCoordinatedStateManager() {
-      return null;
-    }
-
-    @Override
-    public MetaTableLocator getMetaTableLocator() {
-      return null;
-    }
-
-    @Override
-    public ClusterConnection getConnection() {
-      return null;
-    }
-
-    @Override
     public Configuration getConfiguration() {
       return mfs.conf;
     }
 
     @Override
-    public ServerName getServerName() {
-      return null;
-    }
-
-    @Override
-    public void abort(String why, Throwable e) {
-      //no-op
-    }
-
-    @Override
-    public boolean isAborted() {
-      return false;
-    }
-
-    private boolean stopped = false;
-
-    @Override
-    public void stop(String why) {
-      stopped = true;
-    }
-
-    @Override
-    public boolean isStopped() {
-      return stopped;
-    }
-
-    @Override
     public TableDescriptors getTableDescriptors() {
       return new TableDescriptors() {
         @Override
@@ -407,142 +298,6 @@ public class TestCatalogJanitor {
         }
       };
     }
-
-    @Override
-    public boolean isServerCrashProcessingEnabled() {
-      return true;
-    }
-
-    @Override
-    public boolean registerService(Service instance) {
-      return false;
-    }
-
-    @Override
-    public boolean abortProcedure(final long procId, final boolean 
mayInterruptIfRunning)
-        throws IOException {
-      return false;  //To change body of implemented methods use File | 
Settings | File Templates.
-    }
-
-    @Override
-    public List<ProcedureInfo> listProcedures() throws IOException {
-      return null;  //To change body of implemented methods use File | 
Settings | File Templates.
-    }
-
-    @Override
-    public List<HTableDescriptor> listTableDescriptorsByNamespace(String name) 
throws IOException {
-      return null;  //To change body of implemented methods use File | 
Settings | File Templates.
-    }
-
-    @Override
-    public List<TableName> listTableNamesByNamespace(String name) throws 
IOException {
-      return null;
-    }
-
-    @Override
-    public long deleteTable(
-        final TableName tableName,
-        final long nonceGroup,
-        final long nonce) throws IOException {
-      return -1;
-    }
-    public LoadBalancer getLoadBalancer() {
-      return null;
-    }
-
-    @Override
-    public long truncateTable(
-        final TableName tableName,
-        final boolean preserveSplits,
-        final long nonceGroup,
-        final long nonce) throws IOException {
-      return -1;
-    }
-
-
-    @Override
-    public long modifyTable(
-        final TableName tableName,
-        final HTableDescriptor descriptor,
-        final long nonceGroup,
-        final long nonce) throws IOException {
-      return -1;
-    }
-
-    @Override
-    public long enableTable(
-        final TableName tableName,
-        final long nonceGroup,
-        final long nonce) throws IOException {
-      return -1;
-    }
-
-    @Override
-    public long disableTable(
-        TableName tableName,
-        final long nonceGroup,
-        final long nonce) throws IOException {
-      return -1;
-    }
-
-    @Override
-    public long addColumn(final TableName tableName, final HColumnDescriptor 
columnDescriptor,
-        final long nonceGroup, final long nonce) throws IOException {
-      return -1;
-    }
-
-    @Override
-    public long modifyColumn(final TableName tableName, final 
HColumnDescriptor descriptor,
-        final long nonceGroup, final long nonce) throws IOException {
-      return -1;
-    }
-
-    @Override
-    public long deleteColumn(final TableName tableName, final byte[] 
columnName,
-        final long nonceGroup, final long nonce) throws IOException {
-      return -1;
-    }
-
-    @Override
-    public TableLockManager getTableLockManager() {
-      return null;
-    }
-
-    @Override
-    public TableStateManager getTableStateManager() {
-      return null;
-    }
-
-    @Override
-    public void dispatchMergingRegions(HRegionInfo region_a, HRegionInfo 
region_b,
-        boolean forcible, User user) throws IOException {
-    }
-
-    @Override
-    public boolean isInitialized() {
-      return false;
-    }
-
-    @Override
-    public long getLastMajorCompactionTimestamp(TableName table) throws 
IOException {
-      return 0;
-    }
-
-    @Override
-    public long getLastMajorCompactionTimestampForRegion(byte[] regionName) 
throws IOException {
-      return 0;
-    }
-
-    @Override
-    public ClusterSchema getClusterSchema() {
-      return null;
-    }
-
-    @Override
-    public ClusterConnection getClusterConnection() {
-      // TODO Auto-generated method stub
-      return null;
-    }
   }
 
   @Test

Reply via email to