[java-identity-provider] 01/02: IDP-1848 Expose any missing settings for LDAP pooling

Rod Widdowson rdw at steadingsoftware.com
Mon Aug 23 15:53:52 UTC 2021


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

rdw pushed a commit to branch main
in repository java-identity-provider.

View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=e1d158a61d828db377e416a3d190b4581a3f17da

commit e1d158a61d828db377e416a3d190b4581a3f17da
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Mon Aug 23 16:17:57 2021 +0100

    IDP-1848 Expose any missing settings for LDAP pooling
    
    https://shibboleth.atlassian.net/browse/IDP-1848
    
    Add support for idp.pool.LDAP.prunePeriod to the attribute resolver.
---
 .../resolver/spring/dc/ldap/impl/LDAPDataConnectorParser.java     | 5 +++++
 .../idp/attribute/resolver/spring/dc/ldap/ldap-v2.properties      | 1 +
 .../spring/dc/ldap/resolver/ldap-attribute-resolver-v2-props.xml  | 1 +
 .../src/main/resources/conf/examples/attribute-resolver-ldap.xml  | 1 +
 .../src/main/resources/schema/shibboleth-attribute-resolver.xsd   | 8 ++++++++
 5 files changed, 16 insertions(+)

diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParser.java
index c33af7f97..814fa8009 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/impl/LDAPDataConnectorParser.java
@@ -624,8 +624,13 @@ public class LDAPDataConnectorParser extends AbstractDataConnectorParser {
                 pool.addPropertyValue("blockWaitTime", blockWaitTime);
             }
             if (expirationTime != null) {
+                final String prunePeriod =
+                        AttributeSupport.getAttributeValue(poolConfigElement, new QName("prunePeriod"));
                 final BeanDefinitionBuilder strategy =
                         BeanDefinitionBuilder.genericBeanDefinition(IdlePruneStrategy.class);
+                if (prunePeriod != null) {
+                    strategy.addConstructorArgValue(prunePeriod);
+                }
                 strategy.addConstructorArgValue(expirationTime);
                 pool.addPropertyValue("pruneStrategy", strategy.getBeanDefinition());
             }
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldap-v2.properties b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldap-v2.properties
index 8fb999d25..d04f9de9b 100644
--- a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldap-v2.properties
+++ b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/ldap-v2.properties
@@ -19,6 +19,7 @@ connectionPool.expirationTime=PT10M
 connectionPool.minPoolSize=5
 connectionPool.maxPoolSize=10
 connectionPool.validatePeriodically=true
+connectionPool.prunePeriod=PT5M
 connectionPool.validatePeriod=PT15M
 connectionPool.validator.baseDn=dc=shibboleth,dc=net
 connectionPool.validator.filter=(ou=people)
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/resolver/ldap-attribute-resolver-v2-props.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/resolver/ldap-attribute-resolver-v2-props.xml
index cc8742413..fea3f5dfe 100644
--- a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/resolver/ldap-attribute-resolver-v2-props.xml
+++ b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/ldap/resolver/ldap-attribute-resolver-v2-props.xml
@@ -49,6 +49,7 @@
             validateTimerPeriod="%{connectionPool.validatePeriod}"
             validateDN="%{connectionPool.validator.baseDn}"
             validateFilter="%{connectionPool.validator.filter}"
+            prunePeriod="%{connectionPool.prunePeriod}"
             failFastInitialize="%{connectionPool.failFastInitialize}"/>
         <ResultCache
             expireAfterAccess="%{cache.TTL}"
diff --git a/idp-conf/src/main/resources/conf/examples/attribute-resolver-ldap.xml b/idp-conf/src/main/resources/conf/examples/attribute-resolver-ldap.xml
index ec375b43f..4c235b902 100644
--- a/idp-conf/src/main/resources/conf/examples/attribute-resolver-ldap.xml
+++ b/idp-conf/src/main/resources/conf/examples/attribute-resolver-ldap.xml
@@ -80,6 +80,7 @@
             validateTimerPeriod="%{idp.pool.LDAP.validatePeriod:PT5M}"
             validateDN="%{idp.pool.LDAP.validateDN:}"
             validateFilter="%{idp.pool.LDAP.validateFilter:(objectClass=*)}"
+            prunePeriod="%{idp.pool.LDAP.prunePeriod:PT5M}"
             expirationTime="%{idp.pool.LDAP.idleTime:PT10M}"/>
     </DataConnector>
 
diff --git a/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd b/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd
index ce24edd16..674af1c99 100644
--- a/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd
+++ b/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd
@@ -1874,6 +1874,14 @@
                 </documentation>
             </annotation>
         </attribute>
+        <attribute name="prunePeriod" type="resolver:string">
+            <annotation>
+                <documentation>
+                    Duration between looking for idle connections to reduce the pool back
+                    to its minimum size.
+                </documentation>
+            </annotation>
+        </attribute>
         <attribute name="expirationTime" type="resolver:string">
             <annotation>
                 <documentation>

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


More information about the commits mailing list