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

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

Phillip McCarley created AMQ-3870:
-------------------------------------

             Summary: 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


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