hchaverri commented on a change in pull request #4092:
URL: https://github.com/apache/hadoop/pull/4092#discussion_r833832354
##########
File path:
hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/token/delegation/AbstractDelegationTokenSecretManager.java
##########
@@ -429,11 +445,16 @@ private synchronized void removeExpiredKeys() {
byte[] password = createPassword(identifier.getBytes(),
currentKey.getKey());
DelegationTokenInformation tokenInfo = new DelegationTokenInformation(now
+ tokenRenewInterval, password, getTrackingIdIfEnabled(identifier));
+ long start = Time.monotonicNow();
try {
storeToken(identifier, tokenInfo);
} catch (IOException ioe) {
LOG.error("Could not store token " + formatTokenId(identifier) + "!!",
ioe);
+ } finally {
+ if (metrics != null) {
+ metrics.addStoreToken(Time.monotonicNow() - start);
+ }
Review comment:
This can help us correlate how changes in latency affect the whole
operation. For example, if calling storeToken times out after x seconds, we
should be able to recognize it by looking at this metric. That's also the
pattern that I see with RpcMetrics
##########
File path:
hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/token/delegation/AbstractDelegationTokenSecretManager.java
##########
@@ -825,4 +860,55 @@ protected void syncTokenOwnerStats() {
addTokenForOwnerStats(id);
}
}
+
+ /**
+ * DelegationTokenSecretManagerMetrics tracks token management operations
+ * and publishes them through the metrics interfaces.
+ */
+ @Metrics(about="Delegation token secret manager metrics", context="token")
+ static class DelegationTokenSecretManagerMetrics implements
IOStatisticsSource {
+ final static String STORE_TOKEN_STAT = "storeToken";
+ final static String UPDATE_TOKEN_STAT = "updateToken";
+ final static String REMOVE_TOKEN_STAT = "removeToken";
+
+ final MetricsRegistry registry = new
MetricsRegistry("DelegationTokenSecretManagerMetrics");
Review comment:
I'm mainly adding it now to reduce the risk of someone changing the
registry name. If we don't add this, metrics will be registered with the class
name ("DelegationTokenSecretManagerMetrics"). However, if someone decides to
add the registry in the future, they could choose a different name and break
something. I prefer to just have it available if someone ever needs it. I've
seen the same pattern in other metrics classes (ClientSCMMetrics,
SharedCacheUploaderMetrics,etc), but I'm open to change this if you see a
bigger problem.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]