[java-shib-profile] branch main updated: IDP-2118 - Add metrics for request processing

Scott Cantor cantor.2 at osu.edu
Thu May 25 18:51:22 UTC 2023


This is an automated email from the git hooks/post-receive script.

scantor pushed a commit to branch main
in repository java-shib-profile.

View the commit online:
http://git.shibboleth.net/view/?p=java-shib-profile.git;a=commit;h=c7b701d72695836f94159bde2e72b65dbee62d53

The following commit(s) were added to refs/heads/main by this push:
     new c7b701d  IDP-2118 - Add metrics for request processing
c7b701d is described below

commit c7b701d72695836f94159bde2e72b65dbee62d53
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Thu May 25 14:51:20 2023 -0400

    IDP-2118 - Add metrics for request processing
    
    https://shibboleth.atlassian.net/browse/IDP-2118
    
    Add a counter for overrides.
---
 .../DefaultRelyingPartyConfigurationResolver.java  | 27 ++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/shib-profile-impl/src/main/java/net/shibboleth/profile/relyingparty/impl/DefaultRelyingPartyConfigurationResolver.java b/shib-profile-impl/src/main/java/net/shibboleth/profile/relyingparty/impl/DefaultRelyingPartyConfigurationResolver.java
index 3f62de5..d365b9a 100644
--- a/shib-profile-impl/src/main/java/net/shibboleth/profile/relyingparty/impl/DefaultRelyingPartyConfigurationResolver.java
+++ b/shib-profile-impl/src/main/java/net/shibboleth/profile/relyingparty/impl/DefaultRelyingPartyConfigurationResolver.java
@@ -27,6 +27,7 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import org.opensaml.core.criterion.EntityIdCriterion;
+import org.opensaml.core.metrics.MetricsSupport;
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.opensaml.profile.criterion.ProfileRequestContextCriterion;
 import org.opensaml.saml.common.messaging.context.SAMLMetadataContext;
@@ -39,6 +40,8 @@ import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 
+import com.codahale.metrics.MetricRegistry;
+
 import net.shibboleth.profile.context.RelyingPartyContext;
 import net.shibboleth.profile.relyingparty.RelyingPartyConfiguration;
 import net.shibboleth.profile.relyingparty.RelyingPartyConfigurationResolver;
@@ -49,6 +52,7 @@ import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.primitive.LoggerFactory;
+import net.shibboleth.shared.primitive.StringSupport;
 import net.shibboleth.shared.resolver.CriteriaSet;
 import net.shibboleth.shared.resolver.Criterion;
 import net.shibboleth.shared.resolver.ResolverException;
@@ -92,6 +96,9 @@ public class DefaultRelyingPartyConfigurationResolver extends AbstractIdentifiab
     
     /** The global list of all configured encryption credentials. */
     @Nonnull private List<Credential> encryptionCredentials;
+    
+    /** Prefix for counter metric for overrides. */
+    @Nullable private String overrideCounterPrefix;
 
     /** Constructor. */
     public DefaultRelyingPartyConfigurationResolver() {
@@ -166,6 +173,20 @@ public class DefaultRelyingPartyConfigurationResolver extends AbstractIdentifiab
         
         unverifiedConfiguration = configuration;
     }
+    
+    /**
+     * Set prefix to use for counters maintained when {@link #resolveSingle(CriteriaSet)} returns
+     * an override.
+     * 
+     * @param prefix counter prefix for override tracking
+     * 
+     * @since 5.0.0
+     */
+    public void setOverrideCounterPrefix(@Nullable final String prefix) {
+        checkSetterPreconditions();
+        
+        overrideCounterPrefix = StringSupport.trimOrNull(prefix);
+    }
 
     /** {@inheritDoc} */
     @Override protected void doInitialize() throws ComponentInitializationException {
@@ -257,6 +278,12 @@ public class DefaultRelyingPartyConfigurationResolver extends AbstractIdentifiab
             log.debug("Checking if relying party configuration {} is applicable", configuration.getId());
             if (configuration.test(context)) {
                 log.debug("Relying party configuration {} is applicable", configuration.getId());
+                if (overrideCounterPrefix != null && configuration.getId() != null) {
+                    final MetricRegistry registry = MetricsSupport.getMetricRegistry();
+                    if (registry != null) {
+                        registry.counter(MetricRegistry.name(overrideCounterPrefix, configuration.getId())).inc();
+                    }
+                }
                 return configuration;
             }
             log.debug("Relying party configuration {} is not applicable", configuration.getId());

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list