In some cases the ID Generator will be called after the JournalStorage was stopped.
AS a result you could have cases where the ID generator is called and the journal storage is stopped.
Also I added some check to IDs and added some code to cleanup old IDS on the BatchIDManager
https://issues.apache.org/jira/browse/ACTIVEMQ6-7
Connection Factory is now externalizable and is now serialized as a string that represents a URI. There are schemas for every possible type for connection factory and server locator.
The client JNDI representation of factories has also been changed to be consistent with this.
https://issues.apache.org/jira/browse/ACTIVEMQ6-78 performance work
There are two aspects of this work. First avoid asynchronous packets and avoid
context switch over the executors. Packet had a method to make certain packets such
as commit to use a different executor. Since it's NIO everything is done at the Netty thread now.
The second aspect was to make sure we use the proper buffering
To support HornetQ clients we must pass back HornetQ connector factory
names. Currently the connector factory name returned as part of node up
broadcast group (after initial client connection and client sends suscribe
topology packet) is what ever the server is configured to use in its
cluster discovery. Since the server has now been repackaged to
org.apache.activemq, the older HornetQ clients can not find the
connector factory class on it's class path. To get around this problem
the server now checks the version of the client and if the client is
HornetQ the server renames the to org.hornetq and returns before sending
to the client.
Implements a new feature for the broker whereby it may automatically
create and delete queues which are not explicitly defined through
the management API or file-based configuration when a client sends a
message to or consumes from a queue via the STOMP protocol. Note,
the destination has to be named like "jms.queue.*" to be auto-
created. The queue may subsequently be deleted when it no longer has
any messages and consumers. Auto-creation and auto-deletion can both
be turned on/off via address-setting.
Implements a feature whereby the broker will not shutdown while there are
clients connected. A timeout can be specified so that even if there are
clients connected the broker will still shutdown after a certain time.
https://issues.apache.org/jira/browse/ACTIVEMQ6-67
fixed distribution so that file based security works and hot deployers as broken and no longer needed with new bootstrap.
Also combined the jms and core configuration files.
Implements a new feature for the broker whereby it may automatically
create and delete JMS queues which are not explicitly defined through
the management API or file-based configuration. A JMS queue is created
in response to a sent message or connected consumer. The queue may
subsequently be deleted when it no longer has any messages and
consumers. Auto-creation and auto-deletion can both be turned on/off
via address-setting.
https://issues.apache.org/jira/browse/ACTIVEMQ6-68
The logic on transferring method is a bit complex, where
I found a better way to calculate the targetIDs.
This will also fix a few ScaleDownTests
I also added some extra tests using ScaleDownDirect
https://issues.apache.org/jira/browse/ACTIVEMQ6-64
The redelivery list was not isolated on the PageIterator. This is moving the
redelivery list to the Iterator so we would have proper isolation of the functionality.
The previous version was assuming a single instance of PageIterator, QueueImpl and PageSubscription.
When we started using more than one instance of the Iterator we created this bug.
- added missing license headers found by maven rat plugin.
most of them added automatically via apache-rat
a few manually added
- added apache-rat maven plugin to the build cycle
on the replication channel
The connection-ttl and client-failure-check-period are not passed
to the server locator used to create replication connection. So the
fix sets the two parameters in SharedNothingBackupActivation.
The SelectorParser class in amq6 source code conflicts
with the same class in activemq 5 client jar. The activemq 5
client jar is needed to run openwire tests where the activemq5
client interacts with amq6 broker. In tests they are usually
in the same VM, so depending on the classpath order, whichever
class is loaded it will be used by both client and broker.
Unfortunately the method parse() in the class has different
return types in the client jar and broker side jar.
That will cause NoSuchMethod exception.
The fix moves the broker side class into a different package, i.e.
from
org.apache.activemq.selector.SelectorParser
to
org.apache.activemq.selector.impl.SelectorParser
https://issues.apache.org/jira/browse/ACTIVEMQ6-54
Changing the order of depaging introduced an extra check that needs to be checked now.
This will probably take care of the issue by checking if the page is complete before depage.
https://issues.apache.org/jira/browse/ACTIVEMQ6-54
This is fixing a few issues around paging:
- Browsing it not looking towards Paging. I'm using the queue.totalIterator which is a read-only iterator that goes towards the pages messages.
- Depage is not kicking correctly in some scenarios. I have improved the logic on scheduling depage for that.
When compiled by JDK 8 targeting Java 6 and then run on JDK 6 or 7 the
ConcurrentHashMap#keyset() method can fail because the return types
changed in Java 8. Using ConcurrentMap interface to resolve the issue.
https://issues.apache.org/jira/browse/ACTIVEMQ6-3
We are renaming packages from activemq6 to activemq as that's more generic and version independent
The previous commit renamed the directories. On this commit now I'm changing the code.
If we changed the code and the directories on the same commit git would remove and add a lot of files
without recognizing the renames.
https://issues.apache.org/jira/browse/ACTIVEMQ6-3
We are renaming packages from activemq6 to activemq as that's more generic and version independent
On this first commit I'm just renaming the directories otherwise the history would be lost. The next commit will rename the text on the directories.
If I squash these two commits git will make us delete / add again.