directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Emmanuel Lecharny (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DIRSERVER-2052) Sometimes apacheds will throw ArrayIndexOfBoundsException
Date Thu, 05 Mar 2015 09:50:39 GMT

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

Emmanuel Lecharny commented on DIRSERVER-2052:
----------------------------------------------

The problem here is that we are assuming that the pageIOS *can* contain the data we will read
(which size is read from a {{PageIO}}  at the very beginning of the method). If this size
is corrupted, or if we don't have the right number of {{PageIO}}, then the method will fail
with an exception. We can imagine a size of 2048, for instance, but with only 2 {{PageIO}}
being passed : you'll get a ArrayOutOfBoundException at some point.

But this is mainly a pb because we don't check this specific condition, although it's not
the cause : we have to understand why the size is wrong, or why we don't pass the correct
array of {{PageIO}}.

I somehow agree that some additional check must be done.

> Sometimes apacheds will throw ArrayIndexOfBoundsException
> ---------------------------------------------------------
>
>                 Key: DIRSERVER-2052
>                 URL: https://issues.apache.org/jira/browse/DIRSERVER-2052
>             Project: Directory ApacheDS
>          Issue Type: Bug
>          Components: ldap
>    Affects Versions: 2.0.0-M19
>         Environment: centOS 6.5 with apacheds M19 installed
>            Reporter: linzhao
>            Priority: Blocker
>
> When using multi-thread to add,edit,delete and query apacheds, sometimes it will throw
ArrayIndexOfBoundsException. Exception list below:
> [06:25:40] ERROR [org.apache.directory.server.core.partition.impl.btree.mavibot.MavibotTable]
- ERR_133 Exception while removing 6c7dd69c-0f53-4b49-8ce6-be84b165938b from index 1.3.6.1.4.1.18060.0.4.1.2.50_reverse
> java.lang.ArrayIndexOutOfBoundsException: 6
>         at org.apache.directory.mavibot.btree.RecordManager.readBytes(RecordManager.java:1209)
>         at org.apache.directory.mavibot.btree.RecordManager.readPage(RecordManager.java:1021)
>         at org.apache.directory.mavibot.btree.RecordManager.deserialize(RecordManager.java:989)
>         at org.apache.directory.mavibot.btree.PersistedPageHolder.fetchElement(PersistedPageHolder.java:133)
>         at org.apache.directory.mavibot.btree.PersistedPageHolder.getValue(PersistedPageHolder.java:113)
>         at org.apache.directory.mavibot.btree.AbstractPage.getReference(AbstractPage.java:155)
>         at org.apache.directory.mavibot.btree.RecordManager.serializeNodeValue(RecordManager.java:1708)
>         at org.apache.directory.mavibot.btree.RecordManager.serializePage(RecordManager.java:1653)
>         at org.apache.directory.mavibot.btree.RecordManager.writePage(RecordManager.java:2808)
>         at org.apache.directory.mavibot.btree.PersistedNode.createHolder(PersistedNode.java:906)
>         at org.apache.directory.mavibot.btree.PersistedNode.handleRemoveResult(PersistedNode.java:207)
>         at org.apache.directory.mavibot.btree.PersistedNode.delete(PersistedNode.java:607)
>         at org.apache.directory.mavibot.btree.AbstractPage.delete(AbstractPage.java:217)
>         at org.apache.directory.mavibot.btree.PersistedBTree.processDelete(PersistedBTree.java:332)
>         at org.apache.directory.mavibot.btree.PersistedBTree.delete(PersistedBTree.java:292)
>         at org.apache.directory.mavibot.btree.AbstractBTree.delete(AbstractBTree.java:390)
>         at org.apache.directory.mavibot.btree.AbstractBTree.delete(AbstractBTree.java:324)
>         at org.apache.directory.mavibot.btree.PersistedBTree.delete(PersistedBTree.java:43)
>         at org.apache.directory.server.core.partition.impl.btree.mavibot.MavibotTable.remove(MavibotTable.java:389)
>         at org.apache.directory.server.core.partition.impl.btree.mavibot.MavibotIndex.drop(MavibotIndex.java:391)
>         at org.apache.directory.server.core.partition.impl.btree.mavibot.MavibotIndex.drop(MavibotIndex.java:58)
>         at org.apache.directory.server.core.partition.impl.btree.AbstractBTreePartition.delete(AbstractBTreePartition.java:1078)
>         at org.apache.directory.server.core.partition.impl.btree.AbstractBTreePartition.delete(AbstractBTreePartition.java:917)
>         at org.apache.directory.server.core.shared.partition.DefaultPartitionNexus.delete(DefaultPartitionNexus.java:405)
>         at org.apache.directory.server.core.api.interceptor.BaseInterceptor$1.delete(BaseInterceptor.java:192)
>         at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:490)
>         at org.apache.directory.server.core.journal.JournalInterceptor.delete(JournalInterceptor.java:181)
>         at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:490)
>         at org.apache.directory.server.core.trigger.TriggerInterceptor.delete(TriggerInterceptor.java:336)
>         at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:490)
>         at org.apache.directory.server.core.event.EventInterceptor.delete(EventInterceptor.java:250)
>         at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:490)
>         at org.apache.directory.server.core.subtree.SubentryInterceptor.delete(SubentryInterceptor.java:1058)
>         at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:490)
>         at org.apache.directory.server.core.operational.OperationalAttributeInterceptor.delete(OperationalAttributeInterceptor.java:462)
>         at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:490)
>         at org.apache.directory.server.core.exception.ExceptionInterceptor.delete(ExceptionInterceptor.java:207)
>         at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:490)
>         at org.apache.directory.server.core.admin.AdministrativePointInterceptor.delete(AdministrativePointInterceptor.java:1261)
>         at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:490)
>         at org.apache.directory.server.core.authz.DefaultAuthorizationInterceptor.delete(DefaultAuthorizationInterceptor.java:225)
>         at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:490)
>         at org.apache.directory.server.core.authz.AciAuthorizationInterceptor.delete(AciAuthorizationInterceptor.java:663)
>         at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:490)
>         at org.apache.directory.server.core.referral.ReferralInterceptor.delete(ReferralInterceptor.java:288)
>         at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:490)
>         at org.apache.directory.server.core.authn.AuthenticationInterceptor.delete(AuthenticationInterceptor.java:754)
>         at org.apache.directory.server.core.api.interceptor.BaseInterceptor.next(BaseInterceptor.java:490)
>         at org.apache.directory.server.core.normalization.NormalizationInterceptor.delete(NormalizationInterceptor.java:174)
>         at org.apache.directory.server.core.DefaultOperationManager.delete(DefaultOperationManager.java:641)
>         at org.apache.directory.server.core.shared.DefaultCoreSession.delete(DefaultCoreSession.java:924)
>         at org.apache.directory.server.core.shared.DefaultCoreSession.delete(DefaultCoreSession.java:907)
>         at org.apache.directory.server.ldap.handlers.request.DeleteRequestHandler.handle(DeleteRequestHandler.java:55)
>         at org.apache.directory.server.ldap.handlers.request.DeleteRequestHandler.handle(DeleteRequestHandler.java:39)
>         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:854)
>         at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:542)
>         at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1300(DefaultIoFilterChain.java:48)
>         at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:943)
>         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:475)
>         at org.apache.mina.filter.executor.UnorderedThreadPoolExecutor$Worker.run(UnorderedThreadPoolExecutor.java:429)
>         at java.lang.Thread.run(Thread.java:745)
> [06:36:54] ERROR [org.apache.directory.server.ldap.handlers.LdapRequestHandler] - ERR_732
Cannot process a Request while binding



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message