[ 
https://issues.apache.org/jira/browse/DIRSERVER-2369?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17520637#comment-17520637
 ] 

Alexander Schwartz commented on DIRSERVER-2369:
-----------------------------------------------

After enabling debug logging in ApacheDS, I saw for the OPERATIONS_ERROR a 
stack trace in ApacheDS. It complains about a NPE in AbstractBTreePartition. It 
looks similar to the one in DIRSERVER-1853, still I didn't use any reverting of 
partitions.
{code:java}
16:36:33,627 DEBUG 
[org.apache.directory.server.ldap.handlers.request.SearchRequestHandler] 
(pool-48-thread-2) OPERATIONS_ERROR: failed for MessageType : SEARCH_REQUEST
Message ID : 2172
    SearchRequest
        baseDn : 'cn=non-returned-role-17,ou=RealmRoles,dc=keycloak,dc=org'
        filter : '(objectClass=*)'
        scope : single level
        typesOnly : false
        Size Limit : no limit
        Time Limit : no limit
        Deref Aliases : deref Always
        attributes : 
org.apache.directory.api.ldap.model.message.SearchRequestImpl@c5d74c63    
ManageDsaITImpl Control
        Type OID    : '2.16.840.1.113730.3.4.2'
        Criticality : 'false'
'
: null
org.apache.directory.api.ldap.model.exception.LdapOperationErrorException
    at 
org.apache.directory.server.core.partition.impl.btree.AbstractBTreePartition.getChildCount(AbstractBTreePartition.java:2903)
    at 
org.apache.directory.server.xdbm.search.impl.DefaultOptimizer.getScopeScan(DefaultOptimizer.java:507)
    at 
org.apache.directory.server.xdbm.search.impl.DefaultOptimizer.annotate(DefaultOptimizer.java:140)
    at 
org.apache.directory.server.xdbm.search.impl.DefaultSearchEngine.computeResult(DefaultSearchEngine.java:245)
    at 
org.apache.directory.server.core.partition.impl.btree.AbstractBTreePartition.search(AbstractBTreePartition.java:1219)
    at 
org.apache.directory.server.core.shared.partition.DefaultPartitionNexus.search(DefaultPartitionNexus.java:647)
    at 
org.apache.directory.server.core.api.interceptor.BaseInterceptor$1.search(BaseInterceptor.java:206)
    at 
org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:596)
    at 
org.apache.directory.server.core.subtree.SubentryInterceptor.search(SubentryInterceptor.java:1646)
    at 
org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:596)
    at 
org.apache.directory.server.core.collective.CollectiveAttributeInterceptor.search(CollectiveAttributeInterceptor.java:181)
    at 
org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:596)
    at 
org.apache.directory.server.core.operational.OperationalAttributeInterceptor.search(OperationalAttributeInterceptor.java:544)
    at 
org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:596)
    at 
org.apache.directory.server.core.schema.SchemaInterceptor.search(SchemaInterceptor.java:1497)
    at 
org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:596)
    at 
org.apache.directory.server.core.authz.DefaultAuthorizationInterceptor.search(DefaultAuthorizationInterceptor.java:365)
    at 
org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:596)
    at 
org.apache.directory.server.core.authz.AciAuthorizationInterceptor.search(AciAuthorizationInterceptor.java:1247)
    at 
org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:596)
    at 
org.apache.directory.server.core.authn.AuthenticationInterceptor.search(AuthenticationInterceptor.java:1390)
    at 
org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:596)
    at 
org.keycloak.util.ldap.RangedAttributeInterceptor.search(RangedAttributeInterceptor.java:257)
    at 
org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:596)
    at 
org.apache.directory.server.core.normalization.NormalizationInterceptor.search(NormalizationInterceptor.java:414)
    at 
org.apache.directory.server.core.DefaultOperationManager.search(DefaultOperationManager.java:1831)
    at 
org.apache.directory.server.core.shared.DefaultCoreSession.search(DefaultCoreSession.java:1219)
    at 
org.apache.directory.server.ldap.handlers.request.SearchRequestHandler.doSimpleSearch(SearchRequestHandler.java:797)
    at 
org.apache.directory.server.ldap.handlers.request.SearchRequestHandler.handleIgnoringReferrals(SearchRequestHandler.java:1147)
    at 
org.apache.directory.server.ldap.handlers.request.SearchRequestHandler.handle(SearchRequestHandler.java:201)
    at 
org.apache.directory.server.ldap.handlers.request.SearchRequestHandler.handle(SearchRequestHandler.java:94)
    at 
org.apache.directory.server.ldap.handlers.LdapRequestHandler.handleMessage(LdapRequestHandler.java:209)
    at 
org.apache.directory.server.ldap.handlers.LdapRequestHandler.handleMessage(LdapRequestHandler.java:57)
    at 
org.apache.mina.handler.demux.DemuxingIoHandler.messageReceived(DemuxingIoHandler.java:243)
    at 
org.apache.directory.server.ldap.LdapProtocolHandler.messageReceived(LdapProtocolHandler.java:224)
    at 
org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:1015)
    at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:650)
    at 
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1300(DefaultIoFilterChain.java:49)
    at 
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:1128)
    at 
org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:106)
    at org.apache.mina.core.session.IoEvent.run(IoEvent.java:89)
    at 
org.apache.mina.filter.executor.UnorderedThreadPoolExecutor$Worker.runTask(UnorderedThreadPoolExecutor.java:541)
    at 
org.apache.mina.filter.executor.UnorderedThreadPoolExecutor$Worker.run(UnorderedThreadPoolExecutor.java:493)
    at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.NullPointerException
    at 
org.apache.directory.server.core.partition.impl.btree.AbstractBTreePartition.getChildCount(AbstractBTreePartition.java:2899)
    ... 43 more{code}
 

> ignoring message received from null session
> -------------------------------------------
>
>                 Key: DIRSERVER-2369
>                 URL: https://issues.apache.org/jira/browse/DIRSERVER-2369
>             Project: Directory ApacheDS
>          Issue Type: Bug
>    Affects Versions: 2.0.0.AM26
>            Reporter: Alexander Schwartz
>            Priority: Major
>
> In a test setup we regularly saw the warning that an unbind request wasn't 
> processed (see log snippet below). This lead to errors later in our test, as 
> it assumed that the unbind would have been successful. 
> Looking at the comment in the code of LdapRequestHandler, it reads: "in some 
> cases the session is becoming null though the client is sending the 
> UnbindRequest before closing".
> Our workaround attempt is now to enable Java's LDAP connection pooling so 
> that we don't close the LDAP session right after sending the unbind request. 
> Ideally we would like to see the unbind request being processes regardless of 
> the closed session, as the caller doesn't really have means to determine if 
> the asynchronous processing has completed.
> It would be great if ApacheDS would handle this case.
>  
> The workaround for Java LDAP connection pooling:
>  * com.sun.jndi.ldap.connect.pool set to true to enable connection pooling
>  * com.sun.jndi.ldap.connect.pool.maxsize set to the same value  as 
> com.sun.jndi.ldap.connect.pool.prefsize to avoid short-lived connections
>  
> The log:
> {{11:05:56,830 INFO 
> [org.apache.directory.server.ldap.handlers.LdapRequestHandler] 
> (pool-26-thread-1) ignoring the message MessageType : UNBIND_REQUEST}}
> {{Message ID : 3}}
> {{UnBind 
> Requestorg.apache.directory.api.ldap.model.message.UnbindRequestImpl@cffb7dca 
> ManageDsaITImpl Control}}
> {{Type OID : '2.16.840.1.113730.3.4.2'}}
> {{Criticality : 'false'}}
> {{'}}
> {{received from null session}}
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to