You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@directory.apache.org by "jack yan (JIRA)" <ji...@apache.org> on 2015/03/05 10:10:38 UTC
[jira] [Comment Edited] (DIRSERVER-2052) Sometimes apacheds will
throw ArrayIndexOfBoundsException
[ https://issues.apache.org/jira/browse/DIRSERVER-2052?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14348448#comment-14348448 ]
jack yan edited comment on DIRSERVER-2052 at 3/5/15 9:10 AM:
-------------------------------------------------------------
hi Emmanuel Lecharny
when encapsulation of ByteBuffer with pageIOs array, there is a lack of condition or not , for example. 1186 line in RecordManager.java (readBytes method), finished modification and done testing many times , this issue no reproduce, as following source code
before changing of source code
while ( length > 0 )
{
{color:red}if ( length <= remaining ){color}
{
//TO-DO
}
//TO-DO
}
after changing of source code
while ( length > 0 )
{
{color:red}if ( length <= remaining || pageNb + 2 > pageIos.length){color}
{
//TO-DO
}
//TO-DO
}
changing source code to add "pageNb + 2 > pageIos.length". is it correct?
was (Author: jackyan):
when encapsulation of ByteBuffer with pageIOs array, there is a lack of condition or not , for example. 1186 line in RecordManager.java (readBytes method), finished modification and done testing many times , this issue no reproduce, as following source code
before changing of source code
while ( length > 0 )
{
{color:red}if ( length <= remaining ){color}
{
//TO-DO
}
//TO-DO
}
after changing of source code
while ( length > 0 )
{
{color:red}if ( length <= remaining || pageNb + 2 > pageIos.length){color}
{
//TO-DO
}
//TO-DO
}
changing source code to add "pageNb + 2 > pageIos.length". is it correct?
> 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)