Hi,

this seems to be an error in the replication engine. I think that we
need to add some more logic to avoid such concurrent access, but as we
are currently reviewing and refactoring the Attributes classes, it's
pretty clear we will review this point.

I would suggest you fill a JIRA with this stack trace, providing more
informations, like the server versions, Java version, etc.

thanks !

On 10/15/07, B G <[EMAIL PROTECTED]> wrote:
> I am consistently getting the following exception:
> java.util.ConcurrentModificationException
>         at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
>         at java.util.HashMap$KeyIterator.next(HashMap.java:827)
>         at org.apache.directory.shared.ldap.message.AttributesImpl.clone(
> AttributesImpl.java:499)
>         at
> org.apache.directory.server.core.partition.impl.btree.IndexRecord.getAttributes
> (IndexRecord.java:128)
>         at
> org.apache.directory.server.core.partition.impl.btree.BTreeSearchResultEnumeration.next
> (BTreeSearchResultEnumeration.java:192)
>         at
> org.apache.directory.server.core.partition.impl.btree.BTreeSearchResultEnumeration.next
> (BTreeSearchResultEnumeration.java:52)
>         at
> org.apache.directory.server.core.enumeration.SearchResultFilteringEnumeration.prefetch
> (SearchResultFilteringEnumeration.java:303)
>         at
> org.apache.directory.server.core.enumeration.SearchResultFilteringEnumeration
> .<init>(SearchResultFilteringEnumeration.java:118)
>         at org.apache.directory.mitosis.service.ReplicationService.search(
> ReplicationService.java:552)
>         at
> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.search
> (InterceptorChain.java:1268)
>         at
> org.apache.directory.server.core.interceptor.BaseInterceptor.search(
> BaseInterceptor.java:199)
>         at
> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.search
> (InterceptorChain.java:1268)
>         at
> org.apache.directory.server.core.interceptor.BaseInterceptor.search(
> BaseInterceptor.java:199)
>         at
> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.search
> (InterceptorChain.java:1268)
>         at
> org.apache.directory.server.core.collective.CollectiveAttributeService.search
> (CollectiveAttributeService.java:320)
>         at
> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.search
> (InterceptorChain.java:1268)
>         at org.apache.directory.server.core.subtree.SubentryService.search(
> SubentryService.java:248)
>         at
> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.search
> (InterceptorChain.java:1268)
>         at org.apache.directory.server.core.schema.SchemaService.search(
> SchemaService.java:517)
>         at
> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.search
> (InterceptorChain.java:1268)
>         at
> org.apache.directory.server.core.operational.OperationalAttributeService.search
> (OperationalAttributeService.java:310)
>         at
> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.search
> (InterceptorChain.java:1268)
>         at
> org.apache.directory.server.core.exception.ExceptionService.search(
> ExceptionService.java:525)
>         at
> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.search
> (InterceptorChain.java:1268)
>         at
> org.apache.directory.server.core.authz.DefaultAuthorizationService.search(
> DefaultAuthorizationService.java:510)
>         at
> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.search
> (InterceptorChain.java:1268)
>         at
> org.apache.directory.server.core.authz.AuthorizationService.search(
> AuthorizationService.java:945)
>         at
> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.search
> (InterceptorChain.java:1268)
>         at org.apache.directory.server.core.referral.ReferralService.search(
> ReferralService.java:975)
>         at
> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.search
> (InterceptorChain.java:1268)
>         at
> org.apache.directory.server.core.authn.AuthenticationService.search(
> AuthenticationService.java:458)
>         at
> org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.search
> (InterceptorChain.java:1268)
>         at
> org.apache.directory.server.core.normalization.NormalizationService.search(
> NormalizationService.java:349)
>         at
> org.apache.directory.server.core.interceptor.InterceptorChain.search(
> InterceptorChain.java:880)
>         at
> org.apache.directory.server.core.partition.PartitionNexusProxy.search(
> PartitionNexusProxy.java:492)
>         at
> org.apache.directory.server.core.partition.PartitionNexusProxy.search(
> PartitionNexusProxy.java:434)
>         at
> org.apache.directory.server.core.jndi.ServerContext.doSearchOperation(
> ServerContext.java:249)
>         at org.apache.directory.server.core.jndi.ServerDirContext.search(
> ServerDirContext.java:642)
>         at
> org.apache.directory.server.ldap.support.SearchHandler.messageReceived(
> SearchHandler.java:376)
>         at org.apache.mina.handler.demux.DemuxingIoHandler.messageReceived(
> DemuxingIoHandler.java:141)
>         at
> org.apache.directory.server.ldap.LdapProtocolProvider$LdapProtocolHandler.messageReceived
> (LdapProtocolProvider.java:428)
>         at
> org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived
> (AbstractIoFilterChain.java:570)
>         at
> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived
> (AbstractIoFilterChain.java:299)
>         at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(
> AbstractIoFilterChain.java:53)
>         at
> org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived
> (AbstractIoFilterChain.java:648)
>         at
> org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(
> SimpleProtocolDecoderOutput.java:58)
>         at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(
> ProtocolCodecFilter.java:176)
>         at
> org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived
> (AbstractIoFilterChain.java:299)
>         at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(
> AbstractIoFilterChain.java:53)
>         at
> org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived
> (AbstractIoFilterChain.java:648)
>         at org.apache.mina.filter.executor.ExecutorFilter.processEvent(
> ExecutorFilter.java:220)
>         at
> org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(
> ExecutorFilter.java:264)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(
> ThreadPoolExecutor.java:885)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(
> ThreadPoolExecutor.java:907)
>         at java.lang.Thread.run(Thread.java:619)
> javax.naming.NamingException: [LDAP: error code 36 - failed on search
> operation: Unexpected exception.]; remaining name
> 'verastreamuuid=e76ce690-fe53-4647-b33d-e25c1241a401,cn=servers,cn=vms,cn=applications'
>         at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:2981)
>         at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2951)
>         at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2758)
>         at com.sun.jndi.ldap.LdapCtx.c_lookup(LdapCtx.java:997)
>         at com.sun.jndi.toolkit.ctx.ComponentContext.p_lookup(
> ComponentContext.java:526)
>         at com.sun.jndi.toolkit.ctx.PartialCompositeContext.lookup(
> PartialCompositeContext.java:159)
>         at com.sun.jndi.toolkit.ctx.PartialCompositeContext.lookup(
> PartialCompositeContext.java:148)
>         at javax.naming.InitialContext.lookup(InitialContext.java:392)
>         at
> com.attachmate.vms.peermgmt.datastore.directory.DirectoryPeerManagerDataStore.directoryDataChanged
> (DirectoryPeerManagerDataStore.java:376)
>         at
> org.apache.directory.mitosis.operation.support.EventUtil$EventFire.run(
> EventUtil.java:68)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(
> ThreadPoolExecutor.java:885)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(
> ThreadPoolExecutor.java:907)
>         at java.lang.Thread.run(Thread.java:619)
>
> I took a look at the offending code and it seems to me that AttributesImpl
> is not thread safe specially with repsect to its inner class iterator
> implementation. I through some synchronization code in and seemed to have
> fixed the problem, at least I am not seeing it manifest in my application.
>
> Is this a known issue? Should this class be thread safe?
>
> Any insight would be appreciated...
>


-- 
Regards,
Cordialement,
Emmanuel Lécharny
www.iktek.com

Reply via email to