[prev in list] [next in list] [prev in thread] [next in thread] 

List:       activemq-dev
Subject:    [jira] [Updated] (AMQ-3870) ArrayIndexOutOfBoundsException when using Multi kahaDB (mKahaDB) adapter
From:       "Phillip McCarley (JIRA)" <jira () apache ! org>
Date:       2012-05-31 0:40:23
Message-ID: 1771015363.19673.1338424823404.JavaMail.jiratomcat () issues-vm
[Download RAW message or body]


     [ https://issues.apache.org/jira/browse/AMQ-3870?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel \
]

Phillip McCarley updated AMQ-3870:
----------------------------------

    Attachment: TopicConsumer.java
    
> ArrayIndexOutOfBoundsException when using Multi kahaDB (mKahaDB) adapter, \
>                 per-destination adapters and Topics
> -------------------------------------------------------------------------------------------------------------
>  
> Key: AMQ-3870
> URL: https://issues.apache.org/jira/browse/AMQ-3870
> Project: ActiveMQ
> Issue Type: Bug
> Components: Message Store
> Affects Versions: 5.6.0
> Environment: Java v1.6.0_21
> Windows XP SP3
> Reporter: Phillip McCarley
> Attachments: TopicConsumer.java, activemq.log, activemq.xml
> 
> 
> Steps to reproduce the issue:
> - Unpack clean "apache-activemq-5.6.0-bin.zip" to local drive.
> - Change the default configuration to use the mKahaDB adapter and per-destination \
> instances (exactly as given at http://activemq.apache.org/kahadb.html in the very \
>                 last config snippet). See also attached activemq.xml
> - Start up ActiveMQ from bin/activemq.bat
> - Run a small test program that simply creates a Topic and attempts to consume \
> (that main point here is that the Topic is created and due to "per-destination" \
>                 mKahaDB, a folder is created in the data directory specifically for \
>                 this Topic.
> - Shutdown ActiveMQ normally.
> - Restart ActiveMQ normally, and the ArrayIndexOutOfBoundsException will be thrown. \
> (see attached activemq.log) I have done some investigation and it seems that on \
> restart when it is attempting to "registerExistingAdapter", it wants to register \
> each adapter with one of the destinations (the first in fact) that each adapter \
> applies to (adapter.getDestinations()...[0]). However, in getDestinations(), empty \
> topics get filtered out of the return value, and since we are using \
> per-destination="true" there can be adapters for topics only and so a chance that \
> getDestinations() returns an empty List. Hence causing the Exception when trying to \
> access the first destination from that list. The reason that I haven't gone \
> further, to supply a patch, is that I am unsure of what would be an appropriate way \
> to register these adapters, or if you could leave them and not register them \
> anyway, since they are empty topics. Note, that if you extend the configuration of \
> the mKahaDB adapter to provide an explicit adapter for all topics, then the issue \
> goes away. (see commented part of mKahaDB config in activemq.xml attached)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: \
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more \
information on JIRA, see: http://www.atlassian.com/software/jira

        


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic