You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by in...@apache.org on 2019/07/30 20:45:37 UTC
[hadoop] branch trunk updated: HDFS-14449. Expose total number of
DT in JMX for Namenode. Contributed by Fengnan Li.
This is an automated email from the ASF dual-hosted git repository.
inigoiri pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/trunk by this push:
new 7849bdc HDFS-14449. Expose total number of DT in JMX for Namenode. Contributed by Fengnan Li.
7849bdc is described below
commit 7849bdcf70b8170ad50712dde52bfbd1dfccb28a
Author: Inigo Goiri <in...@apache.org>
AuthorDate: Tue Jul 30 13:45:27 2019 -0700
HDFS-14449. Expose total number of DT in JMX for Namenode. Contributed by Fengnan Li.
---
.../federation/metrics/NamenodeBeanMetrics.java | 5 +++++
.../hadoop/hdfs/server/namenode/FSNamesystem.java | 7 +++++++
.../server/namenode/metrics/FSNamesystemMBean.java | 6 ++++++
.../hadoop/hdfs/security/TestDelegationToken.java | 24 +++++++++++++++++++++-
4 files changed, 41 insertions(+), 1 deletion(-)
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 6d26aa0..2e54765 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
@@ -838,6 +838,11 @@ public class NamenodeBeanMetrics
return null;
}
+ @Override
+ public long getCurrentTokensCount() {
+ return 0;
+ }
+
private Router getRouter() throws IOException {
if (this.router == null) {
throw new IOException("Router is not initialized");
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
index 70b65f3..36402af 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
@@ -4423,6 +4423,13 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
return dir.ezManager.getNumEncryptionZones();
}
+ @Override // FSNamesystemMBean
+ @Metric({ "CurrentTokensCount", "The number of delegation tokens"})
+ public long getCurrentTokensCount() {
+ return dtSecretManager != null ?
+ dtSecretManager.getCurrentTokensSize() : -1;
+ }
+
/**
* Returns the length of the wait Queue for the FSNameSystemLock.
*
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/metrics/FSNamesystemMBean.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/metrics/FSNamesystemMBean.java
index c25bafd..7dbddc2 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/metrics/FSNamesystemMBean.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/metrics/FSNamesystemMBean.java
@@ -242,4 +242,10 @@ public interface FSNamesystemMBean {
* @return Number of ENTERING_MAINTENANCE data nodes
*/
int getNumEnteringMaintenanceDataNodes();
+
+ /**
+ * Get the current number of delegation tokens in memory.
+ * @return number of DTs
+ */
+ long getCurrentTokensCount();
}
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/security/TestDelegationToken.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/security/TestDelegationToken.java
index e50c397..077b103 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/security/TestDelegationToken.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/security/TestDelegationToken.java
@@ -20,6 +20,7 @@ package org.apache.hadoop.hdfs.security;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -41,6 +42,7 @@ import org.apache.hadoop.hdfs.MiniDFSCluster;
import org.apache.hadoop.hdfs.security.token.delegation.DelegationTokenIdentifier;
import org.apache.hadoop.hdfs.security.token.delegation.DelegationTokenSecretManager;
import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.StartupOption;
+import org.apache.hadoop.hdfs.server.namenode.FSNamesystem;
import org.apache.hadoop.hdfs.server.namenode.NameNode;
import org.apache.hadoop.hdfs.server.namenode.NameNodeAdapter;
import org.apache.hadoop.hdfs.server.namenode.web.resources.NamenodeWebHdfsMethods;
@@ -153,7 +155,27 @@ public class TestDelegationToken {
// PASS
}
}
-
+
+ @Test
+ public void testDelegationTokenMetrics() throws Exception {
+ FSNamesystem namesystem = cluster.getNamesystem();
+ // should start with no token
+ assertEquals(0, namesystem.getCurrentTokensCount());
+
+ // get token
+ Token<DelegationTokenIdentifier> token = generateDelegationToken(
+ "SomeUser", "JobTracker");
+ assertEquals(1, namesystem.getCurrentTokensCount());
+
+ // Renew token shouldn't change the count of tokens
+ dtSecretManager.renewToken(token, "JobTracker");
+ assertEquals(1, namesystem.getCurrentTokensCount());
+
+ // Cancel token should remove the token from memory
+ dtSecretManager.cancelToken(token, "JobTracker");
+ assertEquals(0, namesystem.getCurrentTokensCount());
+ }
+
@Test
public void testAddDelegationTokensDFSApi() throws Exception {
UserGroupInformation ugi = UserGroupInformation.createRemoteUser("JobTracker");
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org