diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/metrics/FederationMBean.java b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/metrics/FederationMBean.java index 53b27038d4..5fa4755868 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/metrics/FederationMBean.java +++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/metrics/FederationMBean.java @@ -193,66 +193,87 @@ public interface FederationMBean { /** * When the router started. * @return Date as a string the router started. + * @deprecated Use {@link RouterMBean#getRouterStarted()} instead. */ + @Deprecated String getRouterStarted(); /** * Get the version of the router. * @return Version of the router. + * @deprecated Use {@link RouterMBean#getVersion()} instead. */ + @Deprecated String getVersion(); /** * Get the compilation date of the router. * @return Compilation date of the router. + * @deprecated Use {@link RouterMBean#getCompiledDate()} instead. */ + @Deprecated String getCompiledDate(); /** * Get the compilation info of the router. * @return Compilation info of the router. + * @deprecated Use {@link RouterMBean#getCompileInfo()} instead. */ + @Deprecated String getCompileInfo(); /** * Get the host and port of the router. * @return Host and port of the router. + * @deprecated Use {@link RouterMBean#getHostAndPort()} instead. */ + @Deprecated String getHostAndPort(); /** * Get the identifier of the router. * @return Identifier of the router. + * @deprecated Use {@link RouterMBean#getRouterId()} instead. */ + @Deprecated String getRouterId(); /** - * Get the host and port of the router. - * @return Host and port of the router. + * Gets the cluster ids of the namenodes. + * @return the cluster ids of the namenodes. + * @deprecated Use {@link RouterMBean#getClusterId()} instead. */ String getClusterId(); /** - * Get the host and port of the router. - * @return Host and port of the router. + * Gets the block pool ids of the namenodes. + * @return the block pool ids of the namenodes. + * @deprecated Use {@link RouterMBean#getBlockPoolId()} instead. */ + @Deprecated String getBlockPoolId(); /** * Get the current state of the router. * @return String label for the current router state. + * @deprecated Use {@link RouterMBean#getRouterStatus()} instead. */ + @Deprecated String getRouterStatus(); /** * Get the current number of delegation tokens in memory. * @return number of DTs + * @deprecated Use {@link RouterMBean#getCurrentTokensCount()} instead. */ + @Deprecated long getCurrentTokensCount(); /** * Get the security status of the router. * @return Security status. + * @deprecated Use {@link RouterMBean#isSecurityEnabled()} instead. */ + @Deprecated boolean isSecurityEnabled(); } diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/metrics/NamenodeBeanMetrics.java b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/metrics/NamenodeBeanMetrics.java index 50ec175fa9..6d26aa0945 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/metrics/NamenodeBeanMetrics.java +++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/metrics/NamenodeBeanMetrics.java @@ -45,7 +45,6 @@ import org.apache.hadoop.hdfs.server.federation.router.RBFConfigKeys; import org.apache.hadoop.hdfs.server.federation.router.Router; import org.apache.hadoop.hdfs.server.federation.router.RouterRpcServer; -import org.apache.hadoop.hdfs.server.federation.router.RouterServiceState; import org.apache.hadoop.hdfs.server.federation.router.SubClusterTimeoutException; import org.apache.hadoop.hdfs.server.federation.store.MembershipStore; import org.apache.hadoop.hdfs.server.federation.store.StateStoreService; @@ -169,8 +168,8 @@ public void close() { } } - private FederationMetrics getFederationMetrics() throws IOException { - FederationMetrics metrics = getRouter().getMetrics(); + private RBFMetrics getRBFMetrics() throws IOException { + RBFMetrics metrics = getRouter().getMetrics(); if (metrics == null) { throw new IOException("Federated metrics is not initialized"); } @@ -194,7 +193,7 @@ public String getSoftwareVersion() { @Override public long getUsed() { try { - return getFederationMetrics().getUsedCapacity(); + return getRBFMetrics().getUsedCapacity(); } catch (IOException e) { LOG.debug("Failed to get the used capacity", e.getMessage()); } @@ -204,7 +203,7 @@ public long getUsed() { @Override public long getFree() { try { - return getFederationMetrics().getRemainingCapacity(); + return getRBFMetrics().getRemainingCapacity(); } catch (IOException e) { LOG.debug("Failed to get remaining capacity", e.getMessage()); } @@ -214,7 +213,7 @@ public long getFree() { @Override public long getTotal() { try { - return getFederationMetrics().getTotalCapacity(); + return getRBFMetrics().getTotalCapacity(); } catch (IOException e) { LOG.debug("Failed to Get total capacity", e.getMessage()); } @@ -224,7 +223,7 @@ public long getTotal() { @Override public long getProvidedCapacity() { try { - return getFederationMetrics().getProvidedSpace(); + return getRBFMetrics().getProvidedSpace(); } catch (IOException e) { LOG.debug("Failed to get provided capacity", e.getMessage()); } @@ -234,29 +233,11 @@ public long getProvidedCapacity() { @Override public String getSafemode() { try { - if (getRouter().isRouterState(RouterServiceState.SAFEMODE)) { - return "Safe mode is ON. " + this.getSafeModeTip(); - } + return getRBFMetrics().getSafemode(); } catch (IOException e) { return "Failed to get safemode status. Please check router" + "log for more detail."; } - return ""; - } - - private String getSafeModeTip() throws IOException { - Router rt = getRouter(); - String cmd = "Use \"hdfs dfsrouteradmin -safemode leave\" " - + "to turn safe mode off."; - if (rt.isRouterState(RouterServiceState.INITIALIZING) - || rt.isRouterState(RouterServiceState.UNINITIALIZED)) { - return "Router is in" + rt.getRouterState() - + "mode, the router will immediately return to " - + "normal mode after some time. " + cmd; - } else if (rt.isRouterState(RouterServiceState.SAFEMODE)) { - return "It was turned on manually. " + cmd; - } - return ""; } @Override @@ -309,7 +290,7 @@ public float getPercentBlockPoolUsed() { @Override public long getTotalBlocks() { try { - return getFederationMetrics().getNumBlocks(); + return getRBFMetrics().getNumBlocks(); } catch (IOException e) { LOG.debug("Failed to get number of blocks", e.getMessage()); } @@ -319,7 +300,7 @@ public long getTotalBlocks() { @Override public long getNumberOfMissingBlocks() { try { - return getFederationMetrics().getNumOfMissingBlocks(); + return getRBFMetrics().getNumOfMissingBlocks(); } catch (IOException e) { LOG.debug("Failed to get number of missing blocks", e.getMessage()); } @@ -330,7 +311,7 @@ public long getNumberOfMissingBlocks() { @Deprecated public long getPendingReplicationBlocks() { try { - return getFederationMetrics().getNumOfBlocksPendingReplication(); + return getRBFMetrics().getNumOfBlocksPendingReplication(); } catch (IOException e) { LOG.debug("Failed to get number of blocks pending replica", e.getMessage()); @@ -341,7 +322,7 @@ public long getPendingReplicationBlocks() { @Override public long getPendingReconstructionBlocks() { try { - return getFederationMetrics().getNumOfBlocksPendingReplication(); + return getRBFMetrics().getNumOfBlocksPendingReplication(); } catch (IOException e) { LOG.debug("Failed to get number of blocks pending replica", e.getMessage()); @@ -353,7 +334,7 @@ public long getPendingReconstructionBlocks() { @Deprecated public long getUnderReplicatedBlocks() { try { - return getFederationMetrics().getNumOfBlocksUnderReplicated(); + return getRBFMetrics().getNumOfBlocksUnderReplicated(); } catch (IOException e) { LOG.debug("Failed to get number of blocks under replicated", e.getMessage()); @@ -364,7 +345,7 @@ public long getUnderReplicatedBlocks() { @Override public long getLowRedundancyBlocks() { try { - return getFederationMetrics().getNumOfBlocksUnderReplicated(); + return getRBFMetrics().getNumOfBlocksUnderReplicated(); } catch (IOException e) { LOG.debug("Failed to get number of blocks under replicated", e.getMessage()); @@ -375,7 +356,7 @@ public long getLowRedundancyBlocks() { @Override public long getPendingDeletionBlocks() { try { - return getFederationMetrics().getNumOfBlocksPendingDeletion(); + return getRBFMetrics().getNumOfBlocksPendingDeletion(); } catch (IOException e) { LOG.debug("Failed to get number of blocks pending deletion", e.getMessage()); @@ -620,7 +601,7 @@ public long getProvidedCapacityTotal() { @Override public long getFilesTotal() { try { - return getFederationMetrics().getNumFiles(); + return getRBFMetrics().getNumFiles(); } catch (IOException e) { LOG.debug("Failed to get number of files", e.getMessage()); } @@ -635,7 +616,7 @@ public int getTotalLoad() { @Override public int getNumLiveDataNodes() { try { - return getFederationMetrics().getNumLiveNodes(); + return getRBFMetrics().getNumLiveNodes(); } catch (IOException e) { LOG.debug("Failed to get number of live nodes", e.getMessage()); } @@ -645,7 +626,7 @@ public int getNumLiveDataNodes() { @Override public int getNumDeadDataNodes() { try { - return getFederationMetrics().getNumDeadNodes(); + return getRBFMetrics().getNumDeadNodes(); } catch (IOException e) { LOG.debug("Failed to get number of dead nodes", e.getMessage()); } @@ -655,7 +636,7 @@ public int getNumDeadDataNodes() { @Override public int getNumStaleDataNodes() { try { - return getFederationMetrics().getNumStaleNodes(); + return getRBFMetrics().getNumStaleNodes(); } catch (IOException e) { LOG.debug("Failed to get number of stale nodes", e.getMessage()); } @@ -665,7 +646,7 @@ public int getNumStaleDataNodes() { @Override public int getNumDecomLiveDataNodes() { try { - return getFederationMetrics().getNumDecomLiveNodes(); + return getRBFMetrics().getNumDecomLiveNodes(); } catch (IOException e) { LOG.debug("Failed to get the number of live decommissioned datanodes", e.getMessage()); @@ -676,7 +657,7 @@ public int getNumDecomLiveDataNodes() { @Override public int getNumDecomDeadDataNodes() { try { - return getFederationMetrics().getNumDecomDeadNodes(); + return getRBFMetrics().getNumDecomDeadNodes(); } catch (IOException e) { LOG.debug("Failed to get the number of dead decommissioned datanodes", e.getMessage()); @@ -687,7 +668,7 @@ public int getNumDecomDeadDataNodes() { @Override public int getNumDecommissioningDataNodes() { try { - return getFederationMetrics().getNumDecommissioningNodes(); + return getRBFMetrics().getNumDecommissioningNodes(); } catch (IOException e) { LOG.debug("Failed to get number of decommissioning nodes", e.getMessage()); @@ -698,7 +679,7 @@ public int getNumDecommissioningDataNodes() { @Override public int getNumInMaintenanceLiveDataNodes() { try { - return getFederationMetrics().getNumInMaintenanceLiveDataNodes(); + return getRBFMetrics().getNumInMaintenanceLiveDataNodes(); } catch (IOException e) { LOG.debug("Failed to get number of live in maintenance nodes", e.getMessage()); @@ -709,7 +690,7 @@ public int getNumInMaintenanceLiveDataNodes() { @Override public int getNumInMaintenanceDeadDataNodes() { try { - return getFederationMetrics().getNumInMaintenanceDeadDataNodes(); + return getRBFMetrics().getNumInMaintenanceDeadDataNodes(); } catch (IOException e) { LOG.debug("Failed to get number of dead in maintenance nodes", e.getMessage()); @@ -720,7 +701,7 @@ public int getNumInMaintenanceDeadDataNodes() { @Override public int getNumEnteringMaintenanceDataNodes() { try { - return getFederationMetrics().getNumEnteringMaintenanceDataNodes(); + return getRBFMetrics().getNumEnteringMaintenanceDataNodes(); } catch (IOException e) { LOG.debug("Failed to get number of entering maintenance nodes", e.getMessage()); @@ -803,6 +784,12 @@ public String getHostAndPort() { @Override public boolean isSecurityEnabled() { + try { + return getRBFMetrics().isSecurityEnabled(); + } catch (IOException e) { + LOG.debug("Failed to get security status.", + e.getMessage()); + } return false; } diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/metrics/FederationMetrics.java b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/metrics/RBFMetrics.java similarity index 93% rename from hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/metrics/FederationMetrics.java rename to hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/metrics/RBFMetrics.java index c219a43ab6..9aa469d831 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/metrics/FederationMetrics.java +++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/metrics/RBFMetrics.java @@ -57,6 +57,7 @@ import org.apache.hadoop.hdfs.server.federation.router.RBFConfigKeys; import org.apache.hadoop.hdfs.server.federation.router.Router; import org.apache.hadoop.hdfs.server.federation.router.RouterRpcServer; +import org.apache.hadoop.hdfs.server.federation.router.RouterServiceState; import org.apache.hadoop.hdfs.server.federation.router.security.RouterSecurityManager; import org.apache.hadoop.hdfs.server.federation.store.MembershipStore; import org.apache.hadoop.hdfs.server.federation.store.MountTableStore; @@ -90,10 +91,10 @@ /** * Implementation of the Router metrics collector. */ -public class FederationMetrics implements FederationMBean { +public class RBFMetrics implements RouterMBean, FederationMBean { private static final Logger LOG = - LoggerFactory.getLogger(FederationMetrics.class); + LoggerFactory.getLogger(RBFMetrics.class); /** Format for a date. */ private static final String DATE_FORMAT = "yyyy/MM/dd HH:mm:ss"; @@ -106,7 +107,8 @@ public class FederationMetrics implements FederationMBean { private final Router router; /** FederationState JMX bean. */ - private ObjectName beanName; + private ObjectName routerBeanName; + private ObjectName federationBeanName; /** Resolve the namenode for each namespace. */ private final ActiveNamenodeResolver namenodeResolver; @@ -121,17 +123,26 @@ public class FederationMetrics implements FederationMBean { private RouterStore routerStore; - public FederationMetrics(Router router) throws IOException { + public RBFMetrics(Router router) throws IOException { this.router = router; try { - StandardMBean bean = new StandardMBean(this, FederationMBean.class); - this.beanName = MBeans.register("Router", "FederationState", bean); - LOG.info("Registered Router MBean: {}", this.beanName); + StandardMBean bean = new StandardMBean(this, RouterMBean.class); + this.routerBeanName = MBeans.register("Router", "Router", bean); + LOG.info("Registered Router MBean: {}", this.routerBeanName); } catch (NotCompliantMBeanException e) { throw new RuntimeException("Bad Router MBean setup", e); } + try { + StandardMBean bean = new StandardMBean(this, FederationMBean.class); + this.federationBeanName = MBeans.register("Router", "FederationState", + bean); + LOG.info("Registered FederationState MBean: {}", this.federationBeanName); + } catch (NotCompliantMBeanException e) { + throw new RuntimeException("Bad FederationState MBean setup", e); + } + // Resolve namenode for each nameservice this.namenodeResolver = this.router.getNamenodeResolver(); @@ -159,8 +170,11 @@ public FederationMetrics(Router router) throws IOException { * Unregister the JMX beans. */ public void close() { - if (this.beanName != null) { - MBeans.unregister(beanName); + if (this.routerBeanName != null) { + MBeans.unregister(routerBeanName); + } + if (this.federationBeanName != null) { + MBeans.unregister(federationBeanName); } } @@ -616,10 +630,34 @@ public long getCurrentTokensCount() { return -1; } + @Override public boolean isSecurityEnabled() { return UserGroupInformation.isSecurityEnabled(); } + @Override + public String getSafemode() { + if (this.router.isRouterState(RouterServiceState.SAFEMODE)) { + return "Safe mode is ON. " + this.getSafeModeTip(); + } else { + return ""; + } + } + + private String getSafeModeTip() { + String cmd = "Use \"hdfs dfsrouteradmin -safemode leave\" " + + "to turn safe mode off."; + if (this.router.isRouterState(RouterServiceState.INITIALIZING) + || this.router.isRouterState(RouterServiceState.UNINITIALIZED)) { + return "Router is in" + this.router.getRouterState() + + "mode, the router will immediately return to " + + "normal mode after some time. " + cmd; + } else if (this.router.isRouterState(RouterServiceState.SAFEMODE)) { + return "It was turned on manually. " + cmd; + } + return ""; + } + /** * Build a set of unique values found in all namespaces. * diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/metrics/RouterMBean.java b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/metrics/RouterMBean.java new file mode 100644 index 0000000000..daec1548b5 --- /dev/null +++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/metrics/RouterMBean.java @@ -0,0 +1,104 @@ +/** + * 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.hdfs.server.federation.metrics; + +import org.apache.hadoop.classification.InterfaceAudience; +import org.apache.hadoop.classification.InterfaceStability; + +/** + * JMX interface for the router specific metrics. + */ +@InterfaceAudience.Private +@InterfaceStability.Evolving +public interface RouterMBean { + + /** + * When the router started. + * @return Date as a string the router started. + */ + String getRouterStarted(); + + /** + * Get the version of the router. + * @return Version of the router. + */ + String getVersion(); + + /** + * Get the compilation date of the router. + * @return Compilation date of the router. + */ + String getCompiledDate(); + + /** + * Get the compilation info of the router. + * @return Compilation info of the router. + */ + String getCompileInfo(); + + /** + * Get the host and port of the router. + * @return Host and port of the router. + */ + String getHostAndPort(); + + /** + * Get the identifier of the router. + * @return Identifier of the router. + */ + String getRouterId(); + + /** + * Get the current state of the router. + * + * @return String label for the current router state. + */ + String getRouterStatus(); + + /** + * Gets the cluster ids of the namenodes. + * @return the cluster ids of the namenodes. + */ + String getClusterId(); + + /** + * Gets the block pool ids of the namenodes. + * @return the block pool ids of the namenodes. + */ + String getBlockPoolId(); + + /** + * Get the current number of delegation tokens in memory. + * @return number of DTs + */ + long getCurrentTokensCount(); + + /** + * Gets the safemode status. + * + * @return the safemode status. + */ + String getSafemode(); + + /** + * Gets if security is enabled. + * + * @return true, if security is enabled. + */ + boolean isSecurityEnabled(); +} diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/Router.java b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/Router.java index 539c6c8d4a..b6d188d21c 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/Router.java +++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/Router.java @@ -39,7 +39,7 @@ import org.apache.hadoop.hdfs.HAUtil; import org.apache.hadoop.hdfs.security.token.delegation.DelegationTokenIdentifier; import org.apache.hadoop.hdfs.server.common.TokenVerifier; -import org.apache.hadoop.hdfs.server.federation.metrics.FederationMetrics; +import org.apache.hadoop.hdfs.server.federation.metrics.RBFMetrics; import org.apache.hadoop.hdfs.server.federation.metrics.NamenodeBeanMetrics; import org.apache.hadoop.hdfs.server.federation.resolver.ActiveNamenodeResolver; import org.apache.hadoop.hdfs.server.federation.resolver.FileSubclusterResolver; @@ -634,9 +634,9 @@ public RouterMetrics getRouterMetrics() { * * @return Federation metrics. */ - public FederationMetrics getMetrics() { + public RBFMetrics getMetrics() { if (this.metrics != null) { - return this.metrics.getFederationMetrics(); + return this.metrics.getRBFMetrics(); } return null; } diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterMetricsService.java b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterMetricsService.java index 1887ed6bce..1ed15bfd1b 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterMetricsService.java +++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterMetricsService.java @@ -18,7 +18,7 @@ package org.apache.hadoop.hdfs.server.federation.router; import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.hdfs.server.federation.metrics.FederationMetrics; +import org.apache.hadoop.hdfs.server.federation.metrics.RBFMetrics; import org.apache.hadoop.hdfs.server.federation.metrics.NamenodeBeanMetrics; import org.apache.hadoop.metrics2.source.JvmMetrics; import org.apache.hadoop.service.AbstractService; @@ -34,7 +34,7 @@ public class RouterMetricsService extends AbstractService { /** Router metrics. */ private RouterMetrics routerMetrics; /** Federation metrics. */ - private FederationMetrics federationMetrics; + private RBFMetrics rbfMetrics; /** Namenode mock metrics. */ private NamenodeBeanMetrics nnMetrics; @@ -55,14 +55,14 @@ protected void serviceStart() throws Exception { this.nnMetrics = new NamenodeBeanMetrics(this.router); // Federation MBean JMX interface - this.federationMetrics = new FederationMetrics(this.router); + this.rbfMetrics = new RBFMetrics(this.router); } @Override protected void serviceStop() throws Exception { // Remove JMX interfaces - if (this.federationMetrics != null) { - this.federationMetrics.close(); + if (this.rbfMetrics != null) { + this.rbfMetrics.close(); } // Remove Namenode JMX interfaces @@ -90,8 +90,8 @@ public RouterMetrics getRouterMetrics() { * * @return Federation metrics. */ - public FederationMetrics getFederationMetrics() { - return this.federationMetrics; + public RBFMetrics getRBFMetrics() { + return this.rbfMetrics; } /** diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/webapps/router/federationhealth.html b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/webapps/router/federationhealth.html index 99eb6ecc39..105755d439 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/webapps/router/federationhealth.html +++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/webapps/router/federationhealth.html @@ -75,8 +75,8 @@