You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@storm.apache.org by ag...@apache.org on 2021/08/13 17:07:19 UTC

[storm] branch master updated: STORM-3790 add meter to track getPassword failures (#3408)

This is an automated email from the ASF dual-hosted git repository.

agresch pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/storm.git


The following commit(s) were added to refs/heads/master by this push:
     new a87172a  STORM-3790 add meter to track getPassword failures (#3408)
a87172a is described below

commit a87172a2abf5208e10f85c73dcd13081d79418e6
Author: agresch <ag...@gmail.com>
AuthorDate: Fri Aug 13 12:07:05 2021 -0500

    STORM-3790 add meter to track getPassword failures (#3408)
---
 docs/ClusterMetrics.md                                            | 1 +
 .../storm/security/auth/workertoken/WorkerTokenAuthorizer.java    | 8 +++++++-
 .../main/java/org/apache/storm/daemon/supervisor/Supervisor.java  | 5 ++++-
 3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/docs/ClusterMetrics.md b/docs/ClusterMetrics.md
index 6aa87eb..6626054 100644
--- a/docs/ClusterMetrics.md
+++ b/docs/ClusterMetrics.md
@@ -218,6 +218,7 @@ Metrics associated with the supervisor, which launches the workers for a topolog
 | supervisor:worker-launch-duration | timer | Time taken for a worker to launch. |
 | supervisor:worker-per-call-clean-up-duration-ns | meter | how long it takes to cleanup a worker (ns). |
 | supervisor:worker-shutdown-duration-ns | meter | how long it takes to shutdown a worker (ns). |
+| supervisor:workerTokenAuthorizer-get-password-failures | meter | Failures getting password for user in WorkerTokenAuthorizer |
 
 
 ## UI Metrics
diff --git a/storm-client/src/jvm/org/apache/storm/security/auth/workertoken/WorkerTokenAuthorizer.java b/storm-client/src/jvm/org/apache/storm/security/auth/workertoken/WorkerTokenAuthorizer.java
index c225e27..80f3d54 100644
--- a/storm-client/src/jvm/org/apache/storm/security/auth/workertoken/WorkerTokenAuthorizer.java
+++ b/storm-client/src/jvm/org/apache/storm/security/auth/workertoken/WorkerTokenAuthorizer.java
@@ -12,8 +12,8 @@
 
 package org.apache.storm.security.auth.workertoken;
 
+import com.codahale.metrics.Meter;
 import java.io.Closeable;
-import java.io.IOException;
 import java.util.Base64;
 import java.util.Map;
 import java.util.Optional;
@@ -45,6 +45,7 @@ public class WorkerTokenAuthorizer implements PasswordProvider, Closeable {
     private static final Logger LOG = LoggerFactory.getLogger(WorkerTokenAuthorizer.class);
     private final LoadingCache<WorkerTokenInfo, PrivateWorkerKey> keyCache;
     private final IStormClusterState state;
+    private static final Meter passwordFailures = new Meter();
 
     /**
      * Constructor.
@@ -134,11 +135,16 @@ public class WorkerTokenAuthorizer implements PasswordProvider, Closeable {
             byte[] password = getSignedPasswordFor(user, deser);
             return Optional.of(Base64.getEncoder().encodeToString(password).toCharArray());
         } catch (Exception e) {
+            passwordFailures.mark();
             LOG.error("Could not get password for token {}/{}", deser.get_userName(), deser.get_topologyId(), e);
             return Optional.empty();
         }
     }
 
+    public static Meter getPasswordFailuresMeter() {
+        return passwordFailures;
+    }
+
     @Override
     public String userName(String userName) {
         byte[] user = Base64.getDecoder().decode(userName);
diff --git a/storm-server/src/main/java/org/apache/storm/daemon/supervisor/Supervisor.java b/storm-server/src/main/java/org/apache/storm/daemon/supervisor/Supervisor.java
index c72b4cb..978cc9b 100644
--- a/storm-server/src/main/java/org/apache/storm/daemon/supervisor/Supervisor.java
+++ b/storm-server/src/main/java/org/apache/storm/daemon/supervisor/Supervisor.java
@@ -66,6 +66,7 @@ import org.apache.storm.security.auth.IAuthorizer;
 import org.apache.storm.security.auth.ReqContext;
 import org.apache.storm.security.auth.ThriftConnectionType;
 import org.apache.storm.security.auth.ThriftServer;
+import org.apache.storm.security.auth.workertoken.WorkerTokenAuthorizer;
 import org.apache.storm.shade.com.google.common.annotations.VisibleForTesting;
 import org.apache.storm.thrift.TException;
 import org.apache.storm.thrift.TProcessor;
@@ -186,7 +187,6 @@ public class Supervisor implements DaemonCommon, AutoCloseable {
         this.workerHeartbeatTimer = new StormTimer("WorkerHBTimer", new DefaultUncaughtExceptionHandler());
 
         this.eventTimer = new StormTimer("EventTimer", new DefaultUncaughtExceptionHandler());
-        
         this.supervisorThriftInterface = createSupervisorIface();
     }
 
@@ -324,6 +324,7 @@ public class Supervisor implements DaemonCommon, AutoCloseable {
         ReportWorkerHeartbeats reportWorkerHeartbeats = new ReportWorkerHeartbeats(conf, this);
         Integer workerHeartbeatFrequency = ObjectReader.getInt(conf.get(Config.WORKER_HEARTBEAT_FREQUENCY_SECS));
         workerHeartbeatTimer.scheduleRecurring(0, workerHeartbeatFrequency, reportWorkerHeartbeats);
+
         LOG.info("Starting supervisor with id {} at host {}.", getId(), getHostName());
     }
 
@@ -345,6 +346,8 @@ public class Supervisor implements DaemonCommon, AutoCloseable {
             metricsRegistry.registerMeter("supervisor:num-shell-exceptions", ShellUtils.numShellExceptions);
             metricsRegistry.registerMeter(Constants.SUPERVISOR_HEALTH_CHECK_TIMEOUTS);
             killErrorMeter = metricsRegistry.registerMeter("supervisor:num-kill-worker-errors");
+            metricsRegistry.registerMeter("supervisor:workerTokenAuthorizer-get-password-failures",
+                    WorkerTokenAuthorizer.getPasswordFailuresMeter());
             metricsRegistry.startMetricsReporters(conf);
             Utils.addShutdownHookWithForceKillIn1Sec(() -> {
                 metricsRegistry.stopMetricsReporters();