Connection pooling- problem with ldapcompare operation

Mark Cairney mark.cairney at ed.ac.uk
Fri Dec 21 05:28:52 EST 2012


Hi,

I've been trying to set up LDAP connection pooling on Our Test IdP- the config is as shown below:


  <ConnectionPool minPoolSize="3"
                    maxPoolSize="8"
                    blockWhenEmpty="true"
                    validatePeriodically="true"
                    validateTimerPeriod="PT1M"
                    validateDN="ou=central,dc=authorise-test,dc=ed,dc=ed,dc=ac,dc=uk"
                    validateFilter="(objectClass=organizationalUnit)"
                    expirationTime="PT1M"/>


I'm using extremely short TimerPeriod and expirationTime on purpose for troubleshooting.

The validate filter always fails no matter what combination of validateDN and validateFilter I use.

10:25:05.234 - DEBUG [edu.vt.middleware.ldap.pool.CompareLdapValidator:113] - validation failed for compare filter=(ou=people),filterArgs=[]
javax.naming.NameNotFoundException: [LDAP: error code 32 - No Such Object]
	at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3092) ~[na:1.6.0_38]
	at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:3013) ~[na:1.6.0_38]
	at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2820) ~[na:1.6.0_38]
	at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1824) ~[na:1.6.0_38]
	at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1752) ~[na:1.6.0_38]
	at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1769) ~[na:1.6.0_38]
	at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:394) ~[na:1.6.0_38]
	at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:376) ~[na:1.6.0_38]
	at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:358) ~[na:1.6.0_38]
	at edu.vt.middleware.ldap.AbstractLdap.compare(AbstractLdap.java:138) ~[vt-ldap-3.3.6.jar:na]
	at edu.vt.middleware.ldap.Ldap.compare(Ldap.java:200) ~[vt-ldap-3.3.6.jar:na]
	at edu.vt.middleware.ldap.pool.CompareLdapValidator.validate(CompareLdapValidator.java:110) [vt-ldap-3.3.6.jar:na]
	at edu.vt.middleware.ldap.pool.CompareLdapValidator.validate(CompareLdapValidator.java:29) [vt-ldap-3.3.6.jar:na]
	at edu.vt.middleware.ldap.pool.AbstractLdapFactory.validate(AbstractLdapFactory.java:168) [vt-ldap-3.3.6.jar:na]
	at edu.vt.middleware.ldap.pool.AbstractLdapPool.validate(AbstractLdapPool.java:506) [vt-ldap-3.3.6.jar:na]
	at edu.vt.middleware.ldap.pool.ValidatePoolTask.run(ValidatePoolTask.java:60) [vt-ldap-3.3.6.jar:na]
	at java.util.TimerThread.mainLoop(Timer.java:512) [na:1.6.0_38]
	at java.util.TimerThread.run(Timer.java:462) [na:1.6.0_38]
10:25:05.234 - WARN [edu.vt.middleware.ldap.pool.BlockingLdapPool:513] - ldap object failed validation: edu.vt.middleware.ldap.Ldap at 23216101::config=edu.vt.middleware.ldap.LdapConfig at 9699830::env={java.naming.provider.url=ldap://authorise-test.is.ed.ac.uk, java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory, java.naming.ldap.derefAliases=never}
10:25:05.234 - DEBUG [edu.vt.middleware.ldap.Ldap:118] - Compare with the following parameters:
10:25:05.235 - DEBUG [edu.vt.middleware.ldap.Ldap:119] -   dn = ou=people,ou=central,dc=authorise-test,dc=ed,dc=ed,dc=ac,dc=uk
10:25:05.235 - DEBUG [edu.vt.middleware.ldap.Ldap:120] -   filter = (ou=people)
10:25:05.235 - DEBUG [edu.vt.middleware.ldap.Ldap:121] -   filterArgs = []
10:25:05.236 - DEBUG [edu.vt.middleware.ldap.pool.CompareLdapValidator:113] - validation failed for compare filter=(ou=people),filterArgs=[]
javax.naming.NameNotFoundException: [LDAP: error code 32 - No Such Object]
	at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3092) ~[na:1.6.0_38]
	at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:3013) ~[na:1.6.0_38]
	at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2820) ~[na:1.6.0_38]
	at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1824) ~[na:1.6.0_38]
	at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1752) ~[na:1.6.0_38]
	at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1769) ~[na:1.6.0_38]
	at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:394) ~[na:1.6.0_38]
	at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:376) ~[na:1.6.0_38]
	at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:358) ~[na:1.6.0_38]
	at edu.vt.middleware.ldap.AbstractLdap.compare(AbstractLdap.java:138) ~[vt-ldap-3.3.6.jar:na]
	at edu.vt.middleware.ldap.Ldap.compare(Ldap.java:200) ~[vt-ldap-3.3.6.jar:na]
	at edu.vt.middleware.ldap.pool.CompareLdapValidator.validate(CompareLdapValidator.java:110) [vt-ldap-3.3.6.jar:na]
	at edu.vt.middleware.ldap.pool.CompareLdapValidator.validate(CompareLdapValidator.java:29) [vt-ldap-3.3.6.jar:na]
	at edu.vt.middleware.ldap.pool.AbstractLdapFactory.validate(AbstractLdapFactory.java:168) [vt-ldap-3.3.6.jar:na]
	at edu.vt.middleware.ldap.pool.AbstractLdapPool.validate(AbstractLdapPool.java:506) [vt-ldap-3.3.6.jar:na]
	at edu.vt.middleware.ldap.pool.ValidatePoolTask.run(ValidatePoolTask.java:60) [vt-ldap-3.3.6.jar:na]
	at java.util.TimerThread.mainLoop(Timer.java:512) [na:1.6.0_38]
	at java.util.TimerThread.run(Timer.java:462) [na:1.6.0_38]

If I perform an ldapcompare anonymously from the same machine it works as expected:
ldapcompare -x -Z -H ldap://authorise-test.is.ed.ac.uk ou=people,ou=central,dc=authorise-test,dc=ed,dc=ac,dc=uk ou:people
TRUE

Has anyone else managed to get this working against OpenLDAP?




/****************************

Mark R Cairney
ITI UNIX Section
Information Services

Tel: 0131 650 6565
Email: Mark.Cairney at ed.ac.uk

****************************/


-- 
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.



More information about the users mailing list