Commit Graph

289 Commits

Author SHA1 Message Date
Stanislav Knot 5063488b21 ARTEMIS-1798 DEBUG message bad write method arg count - fix 2018-04-10 13:23:30 -04:00
Francesco Nigro f6e8345dbe ARTEMIS-1772 Reduce memory footprint and allocations of QueueImpl
It includes:
- Message References: no longer uses boxed primitives and AtomicInteger
- Node: intrusive nodes no longer need a reference field holding itself
- RefCountMessage: no longer uses AtomicInteger, but AtomicIntegerFieldUpdater
2018-04-03 11:01:38 -04:00
Clebert Suconic e86acd4824 ARTEMIS-1765 Fixing Large Message Compression and Conversion 2018-03-22 16:11:11 -04:00
Clebert Suconic 920af19adb [maven-release-plugin] prepare for next development iteration 2018-03-12 12:46:27 -04:00
Clebert Suconic 5f5b1dcf8f [maven-release-plugin] prepare release 2.5.0 2018-03-12 12:46:16 -04:00
Christopher L. Shannon (cshannon) 29250466ae ARTEMIS-1727 - Make sure transport is stopped on failed OpenWire
connection

To prevent a socket from hanging open by a bad client the broker should
make sure to stop the transport if a connection attempt fails by an
OpenWire client
2018-03-05 07:45:42 -05:00
Christopher L. Shannon (cshannon) da3dd29101 ARTEMIS-1726 - check proper permissions when using OpenWire
Ensure that on queue creation and deletion that the proper permissions
are checked
2018-03-02 16:47:23 -05:00
Christopher L. Shannon (cshannon) 8e9ee80892 ARTEMIS-1711 - Fix openwire exlusive divert
Fixing the failure on send from an OpenWire producer when an exclusive
divert exists
2018-02-28 17:35:56 -05:00
Christopher L. Shannon (cshannon) d4041b5a72 ARTEMIS-1713 - Fix NPE inside OpenWireConnection
fix NPE inside getClientId() in OpenWireConnection
2018-02-28 14:06:36 -05:00
Timothy Bish 8fc1e00d88 ARTEMIS-1712 Add additional null check in TX rollback handler
Check for AMQSession being null before handling various TX state checks
in order to ensure the correct errors are thrown and TX rollback is
handled properly.
2018-02-28 10:46:31 -05:00
Timothy Bish 38fb17703b ARTEMIS-1707 Check for already exists exceptions and ignore
For address and queue create check for the already exists exceptions and
ignore as another client might have just created the same
2018-02-27 16:30:45 -05:00
Francesco Nigro b5fa5ed3b7 ARTEMIS-1656 OpenWire scalability improvements
OpenWireFormat instances are shared between OpenWire connections/sessions/consumers, preventing the clients to scale due to the synchronized marshal/unmarshal on it.

It includes:
- direct transport buffer pooling
- groupId SimpleString pooling
- clientId SimpleString pooling
- reduced ActiveMQDestination[] and AtomicLong allocations on AMQSession:send
- reduced ActiveMQDestination allocations
- refactored shouldBlockProducer path of AMQPSession::send to reduce method size
- exclusive OpenWireFormat per session and connection (in/out) to avoid contention
- refactored trace log to favour inlining
- changed lastSent volatile set into lazy set to avoid full barrier cost on x86
- stateless OpenWireMessageConverter
- send's lock removal thanks to thread-safe NettyConnection
2018-02-27 20:41:24 +08:00
Christopher L. Shannon (cshannon) ea70af15a3 ARTEMIS-1663 - Add new message count and size metrics
Adding new metrics for tracking message counts and sizes on a Queue.
This includes tracking metrics for pending, delivering and scheduled
messages.  The paging store also tracks message size now.
2018-02-08 11:35:12 -05:00
Francesco Nigro 56d68f0b72 ARTEMIS-1607 OpenWire is sending responses too early with durable messages
AMQSession is sending response back without waiting past I/O tasks on StorageManager to be finished
2018-01-23 11:51:41 -05:00
Francesco Nigro 0387b1a842 ARTEMIS-1616 OpenWire improvements
Refactored OpenWireMessageConverter::inbound into a private static method
2018-01-22 18:02:03 -05:00
Francesco Nigro c6b6dd95d1 ARTEMIS-1616 OpenWire improvements
Refactored OpenWireMessageConverter::toAMQMessage into smaller methods
2018-01-22 18:02:03 -05:00
Francesco Nigro e7a1dca7b5 ARTEMIS-1616 OpenWire improvements
Used SimpleString on AMQSession with HDR_DUPLICATE_DETECTION_ID and CONNECTION_ID_PROPERTY_NAME
2018-01-22 18:02:03 -05:00
Francesco Nigro 9650c80ba7 ARTEMIS-1616 OpenWire improvements
Cached Notification Destination check on AMQConsumer to avoid expensive ActiveMQDestination::toString
2018-01-22 18:02:03 -05:00
Francesco Nigro 64724c3520 ARTEMIS-1616 OpenWire improvements
Used SimpleString on OpenWireMessageConverter to avoid translations on CoreMessage
2018-01-22 18:02:03 -05:00
Francesco Nigro 17c0a331ac ARTEMIS-1616 OpenWire improvements
Added existing queues cache to avoid multiple expensive AMQSession::checkAutoCreateQueue calls
2018-01-22 18:02:03 -05:00
Francesco Nigro 54d0161850 ARTEMIS-1616 OpenWire improvements
Refactored OpenWireMessageConverter::inbound into smaller methods
2018-01-22 18:02:03 -05:00
Francesco Nigro 2db4eafc4d ARTEMIS-1616 OpenWire improvements
Avoided copy of CoreMessage when not needed and cached lambda on hot path
2018-01-22 18:02:03 -05:00
gtully 82e4f465ee [ARTEMIS-1030] add support for auto mapping openwire virtual topic consumer destinations to FQQN 2018-01-22 11:10:46 +00:00
gtully ea266cd74b [ARTEMIS-1241] check for FQQN to parse out address and queue for auto creation 2018-01-17 13:23:23 -05:00
Michael André Pearce 98028cdecc ARTEMIS-1586 Refactor to make more generic
* Move byte util code into ByteUtil
* Re-use the new equals method in SimpleString
* Apply same pools/interners to client decode
* Create String to SimpleString pools/interners for property access via String keys (producer and consumer benefits)
* Lazy init the pools on withing the get methods of CoreMessageObjectPools to get the specific pool, to avoid having this scattered every where.
* reduce SimpleString creation in conversion to/from core message methods with JMS wrapper.
* reduce SimpleString creation in conversion to/from Core in OpenWire, AMQP, MQTT.
2018-01-17 09:33:41 +01:00
Howard Gao 6792dcdf27 ARTEMIS-1566 Openwire client can't receive compressed messages
When openwire client uses compressed option to send messages
(jms.useCompression=true) openwire client failed to receive them.
The reason is in OpenwireMessageConverter.toAMQMessage():

1. message.setContent() should be called after setting properties
 (It will cause the compressed content to decompressed before delivering to clients)
2. message.onSend() should not be called here (it should be used
by producers. If used here it changes the internal flags of the
message and cause receive to fail).
2017-12-20 16:00:14 -05:00
Stanislav Knot 45b25d6847 ARTEMIS-1329 fix openwire noLocal flag 2017-12-20 15:59:36 -05:00
Stanislav Knot 04f74425c9 ARTEMIS-1329 testNoLocalReconnect was failing with OpenWire protocol 2017-12-18 22:24:43 -05:00
Howard Gao 1c156e0d47 ARTEMIS-1558 Message Grouping Openwire Interoperability Issue
Openwire message grouping doesn't work because the groupID of
a message is not passed correctly.
2017-12-14 20:30:53 -06:00
Michael André Pearce fa80536615 ARTEMIS-1550 - Support LVQ for OpenWire
Add support for LVQ, using the same property key as core "_AMQ_LVQ_NAME"
Update current LVQ test case to correctly test OpenWire LVQ.
2017-12-09 15:07:21 +00:00
Pat Fox 0b5bddaab5 ARTEMIS-1534 added openwire logging (trace level) to log openwire commands that are received/sent by the broker 2017-12-05 09:39:28 -06:00
saurabhrai 4abca78785 ARTEMIS-1364: Enable internal sorting in hawtio web console 2017-11-29 08:52:33 +00:00
Howard Gao 5fe88e1c66 ARTEMIS-1365 Advisory consumers listed in Console
Openwire clients create consumers to advisory topics to receive
notifications. As a result there are internal queues created
on advisory topics. Those consumer shouldn't be exposed via
management APIs which are used by the Console

To fix that the broker doesn't register any queues from
advisory addresses.

Also refactors a code to remove Openwire specific contants
from AddressInfo class.
2017-11-17 17:39:40 +08:00
Justin Bertram 55d7260a07 ARTEMIS-1510 refactor Maven poms
Clean up unused declared dependencies and undeclared dependencies which
are pulled in transitively.
2017-11-13 17:03:35 -05:00
Justin Bertram 8703d9d51d [maven-release-plugin] prepare for next development iteration 2017-11-01 00:38:57 -05:00
Justin Bertram ec63189a0a [maven-release-plugin] prepare release 2.4.0 2017-11-01 00:38:56 -05:00
Justin Bertram a44b9d5edf [maven-release-plugin] prepare for next development iteration 2017-10-31 12:09:43 -05:00
Justin Bertram 34a7431d1b [maven-release-plugin] prepare release 2.4.0 2017-10-31 12:07:55 -05:00
Justin Bertram 03d56d2cf5 ARTEMIS-1445 fix auto-delete for AMQP and OpenWire 2017-10-05 14:08:52 -05:00
Howard Gao f84d26ebb2 ARTEMIS-1424 Openwire not work with different tightEncoding options
If message senders and receivers uses different
wireformat.tightEncodingEnabled options, broker will get marshalling
problem. This is because when openwire messages are converted to
core messages, and later these core messages converted to openwire
messages, the broker uses a mashaller that comes with the connection
used to carry the messages.

For example, if a producer sents a message using option "wireformat
.tightEncodingEnabled=false" and a receiver tries to receive it
using 'true' for the same option, it'll never get it because the
broker will fail to use a "tight encoding" marshaller to
decode a 'loose encoded' message.

To fix the problem, we always use 'tight encoding' for internal
message converters.
2017-09-19 07:50:24 +08:00
Timothy Bish 342cc83ea4 ARTEMIS-1410 remove redundant code processing openwire destination
Remove some redundant code in the processing of the OpenWire Destination
name, both in the topic handler and in the method in general the
destination name only needs to be converted once and only one
SimpleString instance needs to be created from that which will then feed
all the places that either the String form or the SimpleString form of
the result is needed.
2017-09-13 18:27:39 -04:00
Howard Gao e4fb722ad8 ARTEMIS-1419 OpenWire advisory message never deleted
By default, every openwire connection will create a queue
under the multicast address ActiveMQ.Advisory.TempQueue.
If a openwire client is create temporary queues these queues
will fill up with messages for as long as the associated
openwire connection is alive. It appears these messages
do not get consumed from the queues.

The reason behind is that advisory messages don't require
acknowledgement so the messages stay at the queue.
2017-09-13 18:21:43 -04:00
Clebert Suconic c8982d775b [maven-release-plugin] prepare for next development iteration 2017-09-05 17:03:48 -04:00
Clebert Suconic 84d5ac65b4 [maven-release-plugin] prepare release 2.3.0 2017-09-05 17:03:37 -04:00
Clebert Suconic ed1b268d42 [maven-release-plugin] prepare for next development iteration 2017-08-31 13:48:09 -04:00
Clebert Suconic 21f2a4a52c [maven-release-plugin] prepare release 2.3.0 2017-08-31 13:47:57 -04:00
Martyn Taylor bb3965b7f7 ARTEMIS-1349 Add management views for client objects 2017-08-17 10:44:41 +01:00
gtully ca7197b5c3 [ARTEMIS-1310] add amqp sasl gssapi mechanism support
delegate to the jdk saslServer. Allow acceptor configuration of supported mechanismis; saslMechanisms=<a,b>
and allow login config scope for krb5 to be configured via saslLoginConfigScope=x
2017-08-08 13:28:50 -04:00
Jiri Danek dfb181a8b2 ARTEMIS-1317 Expire messages that got expiredAck() from OpenWire client
This fixes org.apache.activemq.JmsSendReceiveWithMessageExpirationTest
2017-08-03 11:41:58 -04:00
Clebert Suconic fdad83be22 [maven-release-plugin] prepare for next development iteration 2017-07-24 21:21:18 -04:00
Clebert Suconic 71b1cc2a20 [maven-release-plugin] prepare release 2.2.0 2017-07-24 21:21:06 -04:00
Clebert Suconic 8f5f2bbe52 ARTEMIS-1300 Deadlock when Core direct deliverying and AMQP receive 2017-07-20 08:59:32 -04:00
gtully d4150be0d9 ARTEMIS-1264 allow role mapping via chained login modules
Add krb5sslloginmodule that will populate userPrincipal that can be mapped to roles independently
Generalised callback handlers to take a connection and pull certs or peerprincipal based on
callback. This bubbled up into api change in securitystore and security manager
2017-07-06 23:41:02 -04:00
Howard Gao e258bdf188 ARTEMIS-1242 OpenWire Transactions never removed
Openwire doesn't remove the finished transactions
(committed or rolledback).
2017-06-21 11:22:59 -04:00
Michael Andre Pearce 44b7e455cb ARTEMIS-1205: AMQP Shared Durable Subscriber incorrect behaviour
Use AcitveMQDestination for subscription naming, fixing and aligning queue naming in the process.

The change is behind a configuration toggle so to avoid causing any breaking changes for uses not expecting.
2017-06-19 12:44:13 +01:00
Ingo Weiss 45321c65bd [ARTEMIS-1209] JMS OpenWire client cannot read notifications from activemq.notifications topic
Issue: https://issues.apache.org/jira/browse/ARTEMIS-1209
2017-06-07 16:26:33 -04:00
Clebert Suconic dc26ac96b4 ARTEMIS-1156: moving our collections on its own package 2017-05-12 10:06:05 -04:00
Clebert Suconic ce61d20f5a [maven-release-plugin] prepare for next development iteration 2017-05-08 15:20:12 -04:00
Clebert Suconic 64e8f015ee [maven-release-plugin] prepare release 2.1.0 2017-05-08 15:20:01 -04:00
Clebert Suconic 36c9659279 [maven-release-plugin] prepare for next development iteration 2017-05-05 22:11:09 -04:00
Clebert Suconic 7b5082639f [maven-release-plugin] prepare release 2.1.0 2017-05-05 22:10:58 -04:00
Clebert Suconic 2968e0a7da ARTEMIS-1102 Fixing Openwire test after security change 2017-05-03 10:06:45 -04:00
Justin Bertram 004eda42a2 ARTEMIS-1102 cert-based auth impl for OpenWire 2017-04-28 10:11:25 +01:00
Clebert Suconic d779afe874 NO-JIRA: Fixing test hunging on OpenWire 2017-03-30 21:56:46 -04:00
Martyn Taylor 955af96fe9 ARTEMIS-1082 Catch Create Queue race in OpenWire 2017-03-29 13:49:01 +01:00
Justin Bertram 427039ef38 ARTEMIS-1068 routingType + AMQP fixes 2017-03-24 15:15:10 -05:00
Francesco Nigro ed3de61587 ARTEMIS-1055 Broker generates warning when a client tries to connect it 2017-03-22 11:39:11 +00:00
Clebert Suconic 65ac7f700b ARTEMIS-1052 Proper Expiry over AMQP 2017-03-20 18:33:31 -04:00
Andy Taylor 8ab7588910 ARTEMIS-1023 - fixx Openwire auto creation of queues
https://issues.apache.org/jira/browse/ARTEMIS-1023
2017-03-17 12:28:10 +00:00
Martyn Taylor c40823e5ec [maven-release-plugin] prepare for next development iteration 2017-03-10 14:54:33 +00:00
Martyn Taylor 70e319d6e3 [maven-release-plugin] prepare release 2.0.0 2017-03-10 14:52:26 +00:00
Martyn Taylor f1a5f1caf9 Revert "[maven-release-plugin] prepare release 2.0.0"
This reverts commit 057047499b.
2017-03-10 14:45:29 +00:00
Martyn Taylor 1964abe567 Revert "[maven-release-plugin] prepare for next development iteration"
This reverts commit 9a52f51c9f.
2017-03-10 14:44:58 +00:00
Martyn Taylor 9a52f51c9f [maven-release-plugin] prepare for next development iteration 2017-03-10 11:36:36 +00:00
Martyn Taylor 057047499b [maven-release-plugin] prepare release 2.0.0 2017-03-10 11:25:47 +00:00
Clebert Suconic a41a1930ef ARTEMIS-1009 AMQP shouldn't use application properties
As part of my refactoring on AMQP, the broker shouldn't rely on Application properties
for any broker semantic changes on delivery.

I am removing any access to those now, so we can properly deal with this post 2.0.0.
2017-03-09 12:27:39 -05:00
Clebert Suconic c369084381 ARTEMIS-1009 Tight up on AMQP
avoiding application properties even further
fixing nolocal
2017-03-09 08:12:42 -06:00
Clebert Suconic fe0ca4d84f ARTEMIS-1009 Pure Message Encoding.
with this we could send and receive message in their raw format,
without requiring conversions to Core.

- MessageImpl and ServerMessage are removed as part of this
- AMQPMessage and CoreMessage will have the specialized message format for each protocol
- The protocol manager is now responsible to send the message
- The message will provide an encoder for journal and paging
2017-03-05 23:08:53 -05:00
Howard Gao 216f31765f ARTEMIS-1000 Openwire exception response no correlation-id
When openwire sends back an exception response, it doesn't set
the correct correlation id. This causes the client to miss the
response and the exception won't get caught.

To fix it we need to add the correlation id before sending.
2017-02-26 22:25:10 -05:00
Howard Gao 2fabd059d8 ARTEMIS-981 OpenWire can't receive empty ObjectMessage
When sending an empty ObjectMessage, broker doesn't
write a 'length' field to the message buffer. In delivery
the broker tries to read the length from the buffer, which
causes "IndexOutOfBoundsException".

To fix it, we need to check if the buffer is empty or not,
and only read it if the buffer is not empty.
2017-02-22 12:59:52 +08:00
Howard Gao b84a7f3e25 ARTEMIS-980 Openwire can't send message to temp destination
When a producer sends a messages to a temp destination created from
another connection, it fails. The reason behind it is that the
producer's connection didn't receive the advisory message (notification)
from broker about this temp destination, and it will throw an exception
if it doesn't know this temp destination.

The fix is send the advisory to the client so that it knows this destination.
2017-02-21 14:46:47 +08:00
Howard Gao e7a4d42a64 ARTEMIS-979 OpenWire "no-Local" consumer not working
When creating a 'no-local' openwire consumer, it doesn't work,
meaning it can still receive messages from the same connection.
The fix is similar to what Artemis client does, which is adding
a 'filter' to the consumer/subscription.
The difference is that with OpenWire we have to do it on the
broker side.
2017-02-20 08:17:43 -05:00
Dejan Bosanac 21b64b3e4f https://issues.apache.org/jira/browse/ARTEMIS-815 - support wildcard address configuration in mqtt layer
https://issues.apache.org/jira/browse/ARTEMIS-815 - support wildcard address configuration in mqtt layer - remove old swap method

https://issues.apache.org/jira/browse/ARTEMIS-815 - added tests for mqtt-openwire integration and fixed openwire layer

https://issues.apache.org/jira/browse/ARTEMIS-815 - remove unused imports
2017-02-16 17:37:50 +00:00
Justin Bertram ff3e75d148 NO-JIRA move RoutingType to different package 2017-02-13 09:50:41 -06:00
Howard Gao 1a3fdd0916 ARTEMIS-949 Prevent Openwire from closing consumer twice 2017-02-08 15:57:43 +08:00
Andy Taylor f268c101af ARTEMIS-944 - Broker can't convert AMQP python message to Openwire format
https://issues.apache.org/jira/browse/ARTEMIS-944
2017-02-07 14:02:20 +00:00
Howard Gao eecbbb18db ARTEMIS-902 OpenWire Compression Issue 2016-12-23 21:29:28 +08:00
Clebert Suconic 81df93ebcf ARTEMIS-883 improving exceptions sending 2016-12-21 12:04:06 -05:00
Howard Gao ae90edfdb6 ARTEMIS-883 Fix OpenWire ProducerFlowControlTest 2016-12-21 12:04:06 -05:00
Howard Gao d67ea071a3 ARTEMIS-885 Fix OpenWire wildcard conversion issue 2016-12-13 15:58:35 -05:00
Martyn Taylor 6682072da6 Major Version Bump 2.0.0 After Major Arch Change 2016-12-09 18:43:15 +00:00
jbertram fa67d40b9d ARTEMIS-789 Fixed a number of failing tests 2016-12-09 18:43:15 +00:00
jbertram fe52ca6d75 ARTEMIS-881 Support new address-settings for auto-create queue 2016-12-09 18:43:15 +00:00
Martyn Taylor 8f532cc25d ARTEMIS-880 Add support for address prefixing 2016-12-09 18:43:15 +00:00
Howard Gao a182a135e9 ARTEMIS-789 Add OpenWire Tests for MULTICAST,ANYCAST 2016-12-09 18:43:15 +00:00
Howard Gao 2dc6482c91 ARTEMIS-789 Fix OpenWire tests due to missing RoutingType 2016-12-09 18:43:15 +00:00
Martyn Taylor 7a51491c32 ARTEMIS-780 Added ability to define 2 Routing Types on a single addres 2016-12-09 18:43:15 +00:00
jbertram 0861be14c1 ARTEMIS-789 Fix various failing tests due to addressing changes 2016-12-09 18:43:15 +00:00
Howard Gao 796550d16b ARTEMIS-789 OpenWire queue auto-creation failure 2016-12-09 18:43:15 +00:00
jbertram 84e8a87325 ARTEMIS-876 Remove all reliances on JMS prefixing 2016-12-09 18:43:15 +00:00