[
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]