[
https://issues.apache.org/jira/browse/OAK-2783?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Davide Giannella closed OAK-2783.
---------------------------------
Bulk close for 1.0.14
> Make LDAP connection pool 'testOnBorrow' configurable
> -----------------------------------------------------
>
> Key: OAK-2783
> URL: https://issues.apache.org/jira/browse/OAK-2783
> Project: Jackrabbit Oak
> Issue Type: Improvement
> Components: auth-ldap
> Affects Versions: 1.2
> Reporter: Tobias Bocanegra
> Assignee: Tobias Bocanegra
> Priority: Minor
> Labels: docs-impacting, resilience
> Fix For: 1.3.0, 1.0.14, 1.2.3
>
>
> Depending of the LDAP server configuration, it fails to connect as the server
> doesn't allow the connection validation query.
> It fails on
> {quote}
> Caused by: java.util.NoSuchElementException: Could not create a validated
> object, cause: ValidateObject failed
> at
> org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1233)
> at
> org.apache.directory.ldap.client.api.LdapConnectionPool.getConnection(LdapConnectionPool.java:56)
> at
> org.apache.jackrabbit.oak.security.authentication.ldap.impl.LdapIdentityProvider.connect(LdapIdentityProvider.java:532)
> ... 92 common frames omitted
> {quote}
> Based on customer analyze of Oak code this is the reason it fails:
> {quote}
> I think I have found a solution for the problem. While the system is
> initializing the connection it tries to validate the connection. This is the
> reason for the strange search request:
> SearchRequest
> baseDn : ''
> filter : '(objectClass=*)'
> scope : base object
> Because such kind of requests are not allowed in the client's ldap system the
> connection is being rejected (as invalid). It is configurable if the
> connection should be validated. The class
> org.apache.jackrabbit.oak.security.authentication.ldap.impl.LdapIdentityProvider
> contains this code
> if (config.getAdminPoolConfig().getMaxActive() != 0) {
> adminPool = new LdapConnectionPool(adminConnectionFactory);
> adminPool.setTestOnBorrow(true);
> adminPool.setMaxActive(config.getAdminPoolConfig().getMaxActive());
> adminPool.setWhenExhaustedAction(GenericObjectPool.WHEN_EXHAUSTED_BLOCK);
> }
> A solution for our Problem would most probably be to change the
> connectionPool configuration adminPool.setTestOnBorrow(false);
> This Parameter comes sadly not from the identity provider configuration.
> Is there a way to change this this parameter without creating an own
> implementation of the identity provider?
> {quote}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)