[
https://issues.apache.org/jira/browse/DIRSERVER-1902?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13780762#comment-13780762
]
Kiran Ayyagari commented on DIRSERVER-1902:
-------------------------------------------
aren't those collective attributes always added to the cloned entry? The idea
was that lookupCache() is always used internally by the fetch()
method in the partition and fetch() will always return a cloned entry.
> Concurrent reads cause LDAP:Error 80, LDAP: Error 1 and LDAP: error code 49
> errors
> ----------------------------------------------------------------------------------
>
> Key: DIRSERVER-1902
> URL: https://issues.apache.org/jira/browse/DIRSERVER-1902
> Project: Directory ApacheDS
> Issue Type: Bug
> Components: core, ldap
> Affects Versions: 2.0.0-M15
> Environment: Linux 2.6.32-279.14.1.el6.x86_64 #1 SMP Tue Nov 6
> 23:43:09 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
> and Max OS X 10.8.5 MacBook Pro
> Reporter: Paul Bayliss
> Assignee: Kiran Ayyagari
> Priority: Blocker
> Fix For: 2.0.0-M16
>
> Attachments: Main.java
>
>
> Concurrent reads cause ApacheDS 2.0.0.M15 to periodically return the
> following incorrect responses.
> [LDAP: error code 49 - INVALID_CREDENTIALS: Bind failed: null] - despite
> credentials being correct
> [LDAP: error code 80 - OTHER: failed for MessageType : SEARCH_REQUEST -
> despite the entry being searched existing
> [LDAP: error code 1 - OPERATIONS_ERROR: failed for MessageType :
> SEARCH_REQUEST - despite the entry being searched existing.
> This can be reproduced using the default configuration distributed with
> ApacheDS 2.0.0.M15. I am unable to replicate the same behavior using ApacheDS
> 2.0.0.M14. My harness to produce the problem creates 5 LDAP search requests
> simultaneously for the same dn. All searches are exactly the same. However
> some of these searches fail at the BIND with the error 49 or at the search
> with error 1 or 80
> When the requests fail I see the following ConcurrentModificationException
> written in the logs. For example in the case of BIND failure I see this.
> [16:54:04] DEBUG [org.apache.directory.api.CODEC_LOG] - Encoded message
> MessageType : BIND_RESPONSE
> Message ID : 1
> BindResponse
> Ldap Result
> Result code : (INVALID_CREDENTIALS) invalidCredentials
> Matched Dn : 'null'
> Diagnostic message : 'INVALID_CREDENTIALS: Bind failed: null:
> java.util.ConcurrentModificationException
> at java.util.HashMap$HashIterator.nextEntry(HashMap.java:894)
> at java.util.HashMap$ValueIterator.next(HashMap.java:922)
> at
> java.util.Collections$UnmodifiableCollection$1.next(Collections.java:1067)
> at
> org.apache.directory.server.core.api.entry.ServerEntryUtils.filterContents(ServerEntryUtils.java:771)
> at
> org.apache.directory.server.core.schema.SchemaInterceptor.lookup(SchemaInterceptor.java:1130)
> at
> org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:558)
> at
> org.apache.directory.server.core.authz.DefaultAuthorizationInterceptor.lookup(DefaultAuthorizationInterceptor.java:235)
> at
> org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:558)
> at
> org.apache.directory.server.core.authz.AciAuthorizationInterceptor.lookup(AciAuthorizationInterceptor.java:777)
> at
> org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:558)
> at
> org.apache.directory.server.core.authn.AuthenticationInterceptor.lookup(AuthenticationInterceptor.java:802)
> at
> org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:558)
> at
> org.apache.directory.server.core.normalization.NormalizationInterceptor.lookup(NormalizationInterceptor.java:192)
> at
> org.apache.directory.server.core.DefaultOperationManager.lookup(DefaultOperationManager.java:772)
> at
> org.apache.directory.server.core.shared.DefaultCoreSession.lookup(DefaultCoreSession.java:542)
> at
> org.apache.directory.server.ldap.handlers.request.BindRequestHandler.handleSimpleAuth(BindRequestHandler.java:147)
> at
> org.apache.directory.server.ldap.handlers.request.BindRequestHandler.handle(BindRequestHandler.java:626)
> at
> org.apache.directory.server.ldap.handlers.request.BindRequestHandler.handle(BindRequestHandler.java:66)
> at
> org.apache.directory.server.ldap.handlers.LdapRequestHandler.handleMessage(LdapRequestHandler.java:193)
> at
> org.apache.directory.server.ldap.handlers.LdapRequestHandler.handleMessage(LdapRequestHandler.java:56)
> at
> org.apache.mina.handler.demux.DemuxingIoHandler.messageReceived(DemuxingIoHandler.java:221)
> at
> org.apache.directory.server.ldap.LdapProtocolHandler.messageReceived(LdapProtocolHandler.java:217)
> at
> org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:690)
> at
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417)
> at
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:47)
> at
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:765)
> at
> org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:74)
> at org.apache.mina.core.session.IoEvent.run(IoEvent.java:63)
> at
> org.apache.mina.filter.executor.UnorderedThreadPoolExecutor$Worker.runTask(UnorderedThreadPoolExecutor.java:474)
> at
> org.apache.mina.filter.executor.UnorderedThreadPoolExecutor$Worker.run(UnorderedThreadPoolExecutor.java:428)
> at java.lang.Thread.run(Thread.java:722)
> And for the Search failure I see this.
> [16:56:19] DEBUG [org.apache.directory.api.CODEC_LOG] - Encoded message
> MessageType : SEARCH_RESULT_DONE
> Message ID : 5
> Search Result Done
> Ldap Result
> Result code : (OTHER) other
> Matched Dn : 'null'
> Diagnostic message : 'OTHER: failed for MessageType :
> SEARCH_REQUEST
> Message ID : 5
> SearchRequest
> baseDn : 'uid=pbayliss,ou=users,dc=example,dc=com'
> filter : '(objectClass=*)'
> scope : base object
> typesOnly : false
> Size Limit : no limit
> Time Limit : no limit
> Deref Aliases : deref Always
> attributes :
> org.apache.directory.api.ldap.model.message.SearchRequestImpl@83c6a562
> ManageDsaITImpl Control
> Type OID : '2.16.840.1.113730.3.4.2'
> Criticality : 'false'
> '
> : null:
> java.util.ConcurrentModificationException
> at java.util.HashMap$HashIterator.nextEntry(HashMap.java:894)
> at java.util.HashMap$ValueIterator.next(HashMap.java:922)
> at
> java.util.Collections$UnmodifiableCollection$1.next(Collections.java:1067)
> at
> org.apache.directory.server.core.api.entry.ServerEntryUtils.filterContents(ServerEntryUtils.java:771)
> at
> org.apache.directory.server.core.schema.SchemaInterceptor$TopFilter.accept(SchemaInterceptor.java:883)
> at
> org.apache.directory.server.core.api.filtering.BaseEntryFilteringCursor.next(BaseEntryFilteringCursor.java:427)
> at
> org.apache.directory.server.ldap.handlers.request.SearchRequestHandler.writeResults(SearchRequestHandler.java:391)
> at
> org.apache.directory.server.ldap.handlers.request.SearchRequestHandler.doSimpleSearch(SearchRequestHandler.java:845)
> at
> org.apache.directory.server.ldap.handlers.request.SearchRequestHandler.handleIgnoringReferrals(SearchRequestHandler.java:1153)
> at
> org.apache.directory.server.ldap.handlers.request.SearchRequestHandler.handle(SearchRequestHandler.java:206)
> at
> org.apache.directory.server.ldap.handlers.request.SearchRequestHandler.handle(SearchRequestHandler.java:92)
> at
> org.apache.directory.server.ldap.handlers.LdapRequestHandler.handleMessage(LdapRequestHandler.java:207)
> at
> org.apache.directory.server.ldap.handlers.LdapRequestHandler.handleMessage(LdapRequestHandler.java:56)
> at
> org.apache.mina.handler.demux.DemuxingIoHandler.messageReceived(DemuxingIoHandler.java:221)
> at
> org.apache.directory.server.ldap.LdapProtocolHandler.messageReceived(LdapProtocolHandler.java:217)
> at
> org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:690)
> at
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:417)
> at
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:47)
> at
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:765)
> at
> org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:74)
> at org.apache.mina.core.session.IoEvent.run(IoEvent.java:63)
> at
> org.apache.mina.filter.executor.UnorderedThreadPoolExecutor$Worker.runTask(UnorderedThreadPoolExecutor.java:474)
> at
> org.apache.mina.filter.executor.UnorderedThreadPoolExecutor$Worker.run(UnorderedThreadPoolExecutor.java:428)
> at java.lang.Thread.run(Thread.java:722)
> Please let me know what you need to work this issue. I can provide the
> harness that I used, Wireshark traces, instance data from the directories and
> anything else you need such as logs.
> Many thanks,
> Paul
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira