[java-shib-attribute] 01/01: IDP-2272 Expose LDAP metrics

Codeberg noreply at shibboleth.net
Wed Jan 7 14:12:45 UTC 2026


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

codeberg pushed a commit to branch IDP-2272
in repository java-shib-attribute.

View the commit online:
https://codeberg.org/Shibboleth/java-shib-attribute/commit/c9435d28c4e1ebfdb989822d389224866c4343e2

commit c9435d28c4e1ebfdb989822d389224866c4343e2
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Tue Apr 1 11:01:14 2025 +0100

    IDP-2272 Expose LDAP metrics
    
    https://shibboleth.atlassian.net/browse/IDP-2272
    
    Add an autowired bean into the LDAPDataConnector to communicate between the
    metrics and ldaptive
---
 .../attribute/resolver/dc/ldap/impl/LDAPDataConnector.java   | 12 ++++++++++++
 .../dc/ldap/ldap-attribute-resolver-spring-context.xml       | 10 +++++++++-
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/LDAPDataConnector.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/LDAPDataConnector.java
index 5c98ecf99..ead1de21b 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/LDAPDataConnector.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/LDAPDataConnector.java
@@ -31,6 +31,7 @@ import org.ldaptive.ssl.SSLContextInitializer;
 import org.ldaptive.ssl.SslConfig;
 import org.ldaptive.ssl.X509SSLContextInitializer;
 import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import net.shibboleth.idp.attribute.IdPAttribute;
 import net.shibboleth.idp.attribute.resolver.ResolutionException;
@@ -45,6 +46,7 @@ import net.shibboleth.shared.annotation.constraint.NotLive;
 import net.shibboleth.shared.annotation.constraint.Unmodifiable;
 import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.logic.Constraint;
+import net.shibboleth.shared.metrics.LDAPMetricAccumulator;
 import net.shibboleth.shared.primitive.LoggerFactory;
 
 /**
@@ -62,6 +64,9 @@ public class LDAPDataConnector extends AbstractSearchDataConnector<ExecutableSea
     /** For executing LDAP searches. */
     @NonnullAfterInit private SearchOperation searchOperation;
 
+    /** Optional Accumulator for Ldaptive events. */
+    @Autowired @Nullable private LDAPMetricAccumulator metricAccumulator;
+
     /** Whether the default validator is being used. */
     private boolean defaultValidator = true;
 
@@ -153,6 +158,9 @@ public class LDAPDataConnector extends AbstractSearchDataConnector<ExecutableSea
                 getValidator().setThrowValidateError(throwValidateError);
             }
             policeForJVMTrust();
+            if (metricAccumulator != null) {
+                metricAccumulator.incrementEventOne();
+            }
         }
         catch (final Exception e) {
             setLastFail(Instant.now());
@@ -205,6 +213,10 @@ public class LDAPDataConnector extends AbstractSearchDataConnector<ExecutableSea
             throw new ResolutionException(getLogPrefix() + " Search filter cannot be null");
         }
 
+        if (metricAccumulator != null) {
+            metricAccumulator.incrementEventTwo();
+        }
+
         try {
             assert searchOperation!=null && connectionFactory!=null;
             final SearchResponse result = filter.execute(searchOperation, connectionFactory);
diff --git a/shib-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldap-attribute-resolver-spring-context.xml b/shib-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldap-attribute-resolver-spring-context.xml
index 55b8014c4..01ba43bb1 100644
--- a/shib-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldap-attribute-resolver-spring-context.xml
+++ b/shib-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldap-attribute-resolver-spring-context.xml
@@ -1,7 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:p="http://www.springframework.org/schema/p"
-    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
+    xmlns:context="http://www.springframework.org/schema/context"
+    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
+                        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
+
+    <context:annotation-config />
+
+    <bean id="shibboleth.metrics.LdapAccumulator" class="net.shibboleth.shared.metrics.LDAPMetricAccumulator" lazy-init="true" />
+
+
     <bean id="connectionFactory" class="org.ldaptive.PooledConnectionFactory" init-method="initialize" destroy-method="close"
           p:blockWaitTime="PT5S"
           p:failFastInitialize="false"

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


More information about the commits mailing list