Commit Graph

693 Commits

Author SHA1 Message Date
Justin Bertram d1cd1e71a1 ARTEMIS-1352 auto-create MULTICAST queue when AMQP client sends to topic 2017-09-28 21:40:18 -04:00
Justin Bertram dac625179a ARTEMIS-1218 implement MQTT link stealing 2017-09-25 11:00:56 -04:00
Jens Reimann 144dbadcb5 ARTEMIS-1391 embedding 2 MQTT brokers is broken 2017-09-25 11:00:56 -04:00
Jiri Danek 4d126adedb ARTEMIS-1398 NPE on null pwd from MQTT client 2017-09-25 10:55:11 -04:00
Jeff Mesnil 0010b0a090 [ARTMIS-1431] Adapt transport configuration in ClientProtocolManagerFactory
add the adaptTransportConfiguration() method to the
ClientProtocolManagerFactory so that transport configurations used by
the ClientProtocolManager have an opportunity to adapt their transport
configuration.

This allows the HornetQClientProtocolManagerFactory to adapt the
transport configuration received by remote HornetQ broker to replace the
HornetQ-based NettyConnectorFactory by the Artemis-based one.

JIRA: https://issues.apache.org/jira/browse/ARTEMIS-1431
2017-09-25 10:33:56 -04:00
Robbie Gemmell 1a077348e2 ARTEMIS-1434: update handling of tick deadline values
- account for potential to be negative due to using nanoTime derived values
- add some other edge case protections to avoid task ceasing in error
2017-09-22 16:33:21 +01: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
Timothy Bish 412b63a6b5 ARTEMIS-1407 Remove unused method that performs invalid operation
Remove the unused transaction remove method as the getTransaction method
provides the remove operation and the remove method was doing an invalud
remove of wrong type from the transactions collection.
2017-09-12 13:14:39 -05:00
gtully da1e0043ae ARTEMIS-1310 - ensure chosen sasl mechanism is from the advertised list 2017-09-12 12:56:36 -05:00
Michael Andre Pearce ee53b2bf53 ARTEMIS-1413: FIX JMSDeliveryMode/Priority on AMQP to CORE conversion
Added test case for cross protocol on JMSDeliveryMode proving issue, and asserting fix
Added fix to AmqpCoreConverter to ensure durability (JMSDeliveryMode) is retained.

Similar issue spotted with JMSPriority as with JMSDeliveyMode, fixing at the same time.
Added extra test case for jmspriority
Added fix for jmspriority
2017-09-11 23:18:50 +01:00
Martyn Taylor 152791c230 ARTEMIS-1402 AMQP notfound on unmatched FQQN
Return an AMQP not:found error to the client, if the supplied queue in
an FQQN belongs to an address other than what is provided in the FQQN.
2017-09-08 12:41:36 +01:00
Martyn Taylor 32ac370edc ARTEMIS-1392 Fix NPE when FQQN queue does not exist during multicast subscribe 2017-09-08 12:41:36 +01:00
Martyn Taylor 16dfd777b8 ARTEMIS-1387 Fix AMQPtoMQTT and Link route issues 2017-09-06 11:21:56 +01: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
Timothy Bish 5d1b7e0bea ARTEMIS-1377 Refactor the disposition handling code
Avoid null checking each disposition before then checking the type, also
account for not knowing the type.  Rearrange the handling code to
prioritize the most common case which is "Accepted"
2017-08-29 14:37:33 -04:00
Clebert Suconic 6fda75a9fc ARTEMIS-1297 Load balance or redistribution of AMQP Messages 2017-08-29 12:56:15 -05:00
Timothy Bish 968268ee5d ARTEMIS-1374 Improve performance and GC overhead of AMQP transfer tags
Use a more efficient means of creating AMQP transfer tags and pool
previously generated values for reuse on future sends.
2017-08-25 22:45:33 -04:00
Justin Bertram a965b6d2ee ARTEMIS-1358 refactor MQTTProtocolManager a bit 2017-08-22 22:08:24 -04:00
Timothy Bish cb9482d9fa ARTEMIS-1359 Skip re-encode Headers on messages if not needed
Only reencode the Header on a Message when the redelivering the Message
to avoid overhead and unneeded modification to the original encoding of
the Header.
2017-08-22 22:02:41 -04:00
Otavio R. Piske 654ea69e78 Implement support for intercepting additional MQTT control packets
Previously, only the PUBLISH packet was intercepted. This patch modifies
the code to add support for the other incoming/outgoing MQTT control
packets.
2017-08-17 10:11:21 -05:00
Martyn Taylor bb3965b7f7 ARTEMIS-1349 Add management views for client objects 2017-08-17 10:44:41 +01:00
Michael Andre Pearce 26752a7aaf ARTEMIS-1348 Support LVQ for AMQP
Add support for LVQ, using the same property key as core "_AMQ_LVQ_NAME"
Add test case for AMQP LVQ.
2017-08-12 23:43:37 +01:00
Michael Andre Pearce 62e1f7b1e1 ARTEMIS-1335 Update Netty to 4.1.14 - MQTT fix
Fix for MQTT in connect due to deprecated methods bug causing NPE, call new methods and null check ourselves.

Also raised https://github.com/netty/netty/issues/7076 upstream but i guess we will keep this, as the old methods are deprecated anyhow.
2017-08-10 01:52:50 +01:00
gtully db62ed92f7 [ARTEMIS-1310] require mechanism to be explicitly enabled 2017-08-08 13:28:50 -04: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
Timothy Bish 22b8076b71 ARTEMIS-1283 Fix delay on drained response
On completion of drain the response is not flushed and the
client can wait a few seconds before another broker task
flushes the work.  Flush the connection after updating the
linked as being drained.  Also perform the work with the
connection lock held to prevent conccurent update of proton
state.
2017-07-12 19:20:01 -04:00
Martyn Taylor 905098bc4e ARTEMIS-1268 Fix LargeMessages over STOMP 2017-07-11 10:58:40 -04:00
Odyldzhon Toshbekov 34697d58e1 ARTEMIS-1272 fix mqtt acknowledgement issue 2017-07-10 22:37:58 -04:00
gtully 004753cc53 ARTEMIS-1264 - fix amqp regression by supplying the remoting connection to the security manager 2017-07-07 11:24:05 +01: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
Jiri Danek 60fad35cfe ARTEMIS-1244 propagate retain flag of received message 2017-06-22 12:00:40 -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
Helge Waastad eaadc24729 ARTEMIS-1243 Release ReferenceCounted messages 2017-06-21 11:19:09 -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
Timothy Bish a1fb897b43 ARTEMIS-821 Add support for scheduled message for STOMP
Adds headers AMQ_SCHEDULED_DELAY and AMQ_SCHEDULED_TIME to STOMP
protocol handling to allow for delayed and scheduled time of a
message.  The AMQ_SCHEDULED_DELAY brings forward the same option
from the 5.x broker and the AMQ_SCHEDULED_TIME option adds a fixed
time of delivery alternative to match that of AMQP and others.
2017-06-06 11:20:44 -04:00
Michael Andre Pearce d9d9699732 ARTEMIS-1205: AMQP Shared Durable Subscriber incorrect behaviour.
Add test case, to prove the issue, and then obviously ensure it works, post fix.
Apply changes in logic of createQueueName to handle global better and fix the behaviour.
Create queues so names are same as behaviour with core client.
2017-06-05 22:40:54 +01:00
Michael Andre Pearce c65ea783ea ARTEMIS-1189 - Fix checkstyle violations post checkstyle upgrade
After upgrade of checkstyle, resolve violations

remove checkstyle override added as temp measure at point of upgrade forced by sevntu
2017-05-30 13:40:00 -04:00
Clebert Suconic f63ffc7af5 ARTEMIS-1175 Fixing Memory Leak 2017-05-26 11:16:41 +01:00
Odyldzhon Toshbekov b136fed48f ARTEMIS-1175 fix memory leak
This closes #1292
2017-05-26 11:16:41 +01:00
Clebert Suconic 830c3bf179 ARTEMIS-1169 Fixing protocol conversion
this will fix a few multiple protocol tests on ConsumerTests.
And a few other AMQP tests dealing with conversions.

You would get a classCastException without this commit.
2017-05-18 13:25:15 -04:00
Ulf Lilleengen 4f1308d2f0 ARTEMIS-1173: Don't set routing type if null 2017-05-18 09:31:07 -04:00
Andy Taylor 22f4736c88 ARTEMIS-1169 - Implement Interceptors for the AMQP protocol
Add Outgoing call

https://issues.apache.org/jira/browse/ARTEMIS-1169
2017-05-18 08:40:43 +01:00
Andy Taylor d17ef14c90 ARTEMIS-1169 - Implement Interceptors for the AMQP protocol
https://issues.apache.org/jira/browse/ARTEMIS-1169
2017-05-17 14:07:23 -05: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
Timothy Bish 970782d36a ARTEMIS-1134 Close connection if error caught during event processing
If an error escapes into the event processing layer we close the
connection with an error condition to avoid the client becoming stuck on
waiting for a response from the broker and the broker side being in an
unknown state.
2017-05-02 13:01:29 -04:00
Aditya Sharad 33c94635bf ARTEMIS-1135: Fix integer multiplication overflows
Multiplication operations where the operands have type `int` but the
result is cast to `long` may lead to overflow.
Fixes two instances of this problem, by ensuring the operands are cast
to `long` during multiplication.
This resolves the "Result of integer multiplication cast to long"
alerts at https://lgtm.com/projects/g/apache/activemq-artemis/alerts.
2017-05-02 13:00:46 -04:00
Justin Bertram 849c4b7def ARTEMIS-547 authorize AMQP sender on attach 2017-04-28 14:30:03 -05:00
Timothy Bish 19a640db3a ARTEMIS-1132 return security errors instead of generic failed
When creating some AMQP resources (senders, receivers, etc) the broker
can return an error of 'failed' instead of the security error that is
expected in these cases.  In the case of a receiver being created and
a security error happening the broker fails to send back a response
causing the client to hang waiting for an attach response.
2017-04-28 13:08:10 -05:00
Justin Bertram 004eda42a2 ARTEMIS-1102 cert-based auth impl for OpenWire 2017-04-28 10:11:25 +01:00
Justin Bertram 82b6a9678d ARTEMIS-1113 STOMP + management-address fix 2017-04-28 10:10:13 +01:00
Martyn Taylor 1c84bd39c4 ARTEMIS-826 Fix MQTT protocol detection 2017-04-25 13:53:21 +01:00
Howard Gao f344c1ebaf ARTEMIS-1093 Full qualified queue name support
Broker should support full qualified queue names (FQQN)
as well as bare queue names. This means when clients access
to a queue they have two equivalent ways to do so. One way
is by queue names and the other is by FQQN (i.e. address::qname)
names. Currently only receiving is supported.
2017-04-23 16:01:20 -04:00
Timothy Bish 9eed28e0aa ARTEMIS-1127 Match remote Sender and Receiver settle modes
On link attach we currently default out SenderSettleMode to MIXED which
while legal doesn't truly reflect what the client asked for. We instead
now update the link to reflect the mode requested by the client

Also add some tests to ensure that we always return the
ReceiverSettleMode as FIRST since we don't support SECOND.
2017-04-21 15:00:09 -04:00
Clebert Suconic 1a39772489 ARTEMIS-1121 Improving expiry scanner
https://issues.apache.org/jira/browse/ARTEMIS-1121
2017-04-18 11:49:25 -04:00
Clebert Suconic 31d78eddf1 ARTEMIS-1118 IO callbacks on AMQP 2017-04-18 11:49:25 -04:00
Clebert Suconic 807e4e5d9c ARTEMIS-1119 flow controlling connection
https://issues.apache.org/jira/browse/ARTEMIS-1119
2017-04-18 11:34:09 -04:00
Clebert Suconic bfc07a7e01 ARTEMIS-1111 Fixing deadlock
There is a deadlock on flow controlling
the lock is using the wrong method and that is causing some issues under perf load.
2017-04-17 21:31:17 -04:00
Clebert Suconic f609884186 Revert "ARTEMIS-1093 Full qualified queue name support"
Testsuite won't complete with this commit.
Reerting it for further evaluation.

This reverts commit a9a3c47808.
2017-04-12 16:53:40 -04:00
Martyn Taylor 930df5b663 ARTEMIS-1111 Avoid deadlock on AMQP delivery during close 2017-04-12 12:35:17 -04:00
Howard Gao a9a3c47808 ARTEMIS-1093 Full qualified queue name support
Broker should support full qualified queue names (FQQN)
as well as bare queue names. This means when clients access
to a queue they have two equivalent ways to do so. One way
is by queue names and the other is by FQQN (i.e. address::qname)
names. Currently only receiving is supported.
2017-04-12 09:59:28 +01:00
Clebert Suconic cc22a0286b ARTEMIS-1101 Fixing JMSFilter on AMQP 2017-04-11 16:07:33 -04:00
Timothy Bish d2731fa0e1 ARTEMIS-1110 Cleanup Transaction Coordinator buffer handling
Resuse a single small buffer for all txn commands (declare / dischare) to
avoid creating lots of small arrays and ByteBuffer wrappers for txn operations.
2017-04-11 11:33:58 -04:00
Timothy Bish 3b45261f19 ARTEMIS-1101 Read the correct values for timestamp and user-id
Fix the getUserID and getTimestamp methods in AMQPMessage to read and
return the correct values.  Adds some tests to cover these cases and
cleans up some others.
2017-04-07 16:12:58 -04:00
Clebert Suconic 01362bbb1d ARTEMIS-1100 Store Header on AMQP message 2017-04-07 09:11:11 -05:00
Timothy Bish 45c59f05dc ARTEMIS-1097 Respect the message priority value in the AMQP message
Ensure that the header value for priority is read and returned in a form
that is scaled such that it won't cause an IndexOutOfBoundsException
from the QueueImpl priority array.  Adds some additional testing for
message priority support.
2017-04-06 16:18:53 -04:00
Justin Bertram 073a280629 ARTEMIS-1092 Validated user + AMQP fix
When populate-validated-user = true AMQP messages can cause exceptions.
This feature isn't particularly applicable to AMQP so this commit
eliminates the exception and leaves the AMQP messages untouched
even if populate-validated-user = true. In other words,
populate-validated-user + AMQP is not supported.
2017-04-04 14:46:22 -05:00
Andy Taylor 5529bf150a ARTEMIS-1090 - Message not expired if absolute expiry time is 0 and ttl is set
https://issues.apache.org/jira/browse/ARTEMIS-1090
2017-04-03 14:28:02 +01:00
Clebert Suconic d779afe874 NO-JIRA: Fixing test hunging on OpenWire 2017-03-30 21:56:46 -04:00
Timothy Bish 62cb9b22de ARTEMIS-1086 Proper conversion of SimpleString to String
When adding boolean value keyed by SimpleString the key needs to be
converted to a String type to be valid AMQP.
2017-03-30 21:19:43 -04:00
Clebert Suconic 86779195fa NO-JIRA: Removing duplciate code 2017-03-30 11:15:09 -04:00
Clebert Suconic 9bef242b74 ARTEMIS-1056 Adjusting Acceptor values
I have been doing tests with quiver at large message sizes
the tests would work really slowly without these fixes
2017-03-30 09:54:26 +01:00
Martyn Taylor 955af96fe9 ARTEMIS-1082 Catch Create Queue race in OpenWire 2017-03-29 13:49:01 +01:00
Clebert Suconic 1f4473e8d7 ARTEMIS-1081 Implementing AMQP UndeliverableHere 2017-03-28 20:32:28 -05:00
Clebert Suconic 746220e11e ARTEMIS-1080 Implementing AMQP::reject 2017-03-28 20:32:28 -05:00
Clebert Suconic 13a272b37b ARTEMIS-1056 fixing tests
When I added flow control, some tests that were using reflection started to fail.
Also as a precaution I'm using <= on the flow control low credit check
2017-03-28 20:32:28 -05:00
Clebert Suconic 7f91d29564 ARTEMIS-1056 Improving Proton usage 2017-03-28 14:48:25 -04:00
Clebert Suconic b395504e15 ARTEMIS-1077 Fixing Pool usage on InVM and RemotingConnection 2017-03-28 09:19:57 -05:00
Clebert Suconic dce59d5436 ARTEMIS-1056 Better event processing 2017-03-27 22:01:36 -05:00
Clebert Suconic dc25ff0e42 ARTEMIS-1073 Adding configuration for Producer's credits on AMQP 2017-03-27 16:27:24 -04:00
Justin Bertram c792b8e274 ARTEMIS-1068 JMS + AMQP routing 2017-03-27 15:14:43 -04:00
Clebert Suconic af0be518e1 ARTEMIS-1069 Artemis unsafe usage on Eventls polling 2017-03-27 11:41:20 -04:00
Timothy Bish 40b9ac0a20 ARTEMIS-1069 Fix some thread unsafe usages of proton
Unsafe modification of proton resources outside the connection lock
could lead to corruption in the transport work list and other internal
state data.
2017-03-24 17:46:00 -04:00
Justin Bertram 427039ef38 ARTEMIS-1068 routingType + AMQP fixes 2017-03-24 15:15:10 -05:00
Martyn Taylor e33b7af5ac ARTEMIS-1061 Ack MQTT PubRel management messages 2017-03-22 23:26:32 -04:00
Clebert Suconic 0bfb39bfb5 ARTEMIS-1056 Performance improvements on AMQP 2017-03-22 09:55:02 -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 64b4553284 ARTEMIS-1052 Fixing MessageJournalTest::testStoreAMQP 2017-03-20 21:50:57 -04:00
Clebert Suconic 65ac7f700b ARTEMIS-1052 Proper Expiry over AMQP 2017-03-20 18:33:31 -04:00
Timothy Bish 29796151c3 ARTEMIS-59 Accept transacted message using AMQP TransactionState
When a message is sent to the broker with a TransactionState indicating
that the message should be included in a transaction the disposition from
the broker indicating acceptance of the message should be done using a
TransactionState value that contained the TX ID and the Accepted
disposition.
2017-03-20 12:42:56 -04:00
Martyn Taylor 7cf06cd285 ARTEMIS-1050 Register AMQP failure/close listeners 2017-03-19 14:15:30 +00:00
Clebert Suconic 4b50d6c431 ARTEMIS-1048 Fixing Unsigned types and Selectors 2017-03-17 18:05:21 -04:00
Clebert Suconic 1ef4dcf7d9 ARTEMIS-1046 Fixing TX eventually stalling with AMQP
I have also reviewed the model in which we used transactions
2017-03-17 16:50:56 -04:00
Clebert Suconic 291a4719b6 ARTEMIS-1045 Performance improvements on AMQP 2017-03-17 16:11:14 -04:00
Andy Taylor c6f73b0c0a ARTEMIS-1042 - support amqp failover list
https://issues.apache.org/jira/browse/ARTEMIS-1042
2017-03-17 15:08:58 -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
Clebert Suconic a4beb18a6e ARTEMIS-1044 Avoiding StackOverflow on AMQP under load 2017-03-16 18:11:57 -04:00
Clebert Suconic 31639782f0 ARTEMIS-1041 Adjusting when hearders are being parsed 2017-03-15 19:27:59 -04:00
Timothy Bish 938c4ec558 ARTEMIS-1041 Apply absolute expiration time to message
Use the Absolute Expiration Time from the message properties and
override any value set in TTL if anything set there.
2017-03-15 19:25:08 -04:00
Clebert Suconic ae34b01065 ARTEMIS-1038 Make usage of Delivery.available and upgrade proton 2017-03-15 14:37:41 -04:00
Timothy Bish 7282b6890a ARTEMIS-1039 Transaction Coordinator credit refill
The coordinator needs to refill credit on the receiver once it has been
exhausted, otherwise the remote cannot send additional declare or
discharge commands to the broker.
2017-03-14 17:13:05 -04:00
Andy Taylor b5b6e4bea6 ARTEMIS-1034 - non-durable subscription queue not ended on link close
https://issues.apache.org/jira/browse/ARTEMIS-1034
2017-03-13 10:33:13 -05: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
Martyn Taylor b33fea0d7f ARTEMIS-990 Dont require Perms on MQTT mngment Q 2017-03-10 11:06:05 +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 ce77d12b87 ARTEMIS-1009 fixing ProtonTest::testFilterJMSMessageID 2017-03-07 09:29:04 -05:00
Martyn Taylor 456e2a65e2 ARTEMIS-1012 Fix AMQP Transaction Retirement 2017-03-06 11:55:29 -05:00
Martyn Taylor 543dd4c9e3 ARTEMIS-1013 Queue deliver after AMQP msg release 2017-03-06 11:55:29 -05: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
Justin Bertram 01465035c0 ARTEMIS-970 handle indeterminate JMS destination 2017-02-23 12:55:27 -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
Justin Bertram b7d7d134eb NO-JIRA fix possible STOMP NPE 2017-02-21 22:22:12 -05: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
Jiri Danek a7a0535afa NO-JIRA Fixing typos in log messages, test names and comments
Related to ARTEMIS-387 (fowardingAddress)
2017-02-20 20:54:45 -05:00
Clebert Suconic 29af4a982a NO-JIRA: removing dead code on AMQPSessionContext 2017-02-20 19:34:38 -05:00
Clebert Suconic b788acd834 ARTEMIS-982 Fixing possible deadlock on AMQP.close & delivery
https://issues.apache.org/jira/browse/ARTEMIS-982

This is fixing a possible deadlock on delivering messages while AMQP close is called for any reason.
2017-02-20 12:35:49 -06: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
Martyn Taylor 8b51ec27db NO-JIRA Send MQTT WILL outside of Server Session 2017-02-18 13:31:57 +00:00
Martyn Taylor 5a235d98b6 ARTEMIS-974 ensure will messages are retained 2017-02-16 18:22:10 +00: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
Ulf Lilleengen 5f6a390b60 ARTEMIS-908: Ensure that connection lock is held when flushing 2017-02-15 14:09:27 +01:00
Martyn Taylor bd1f244dfc NO-JIRA Clean up around MQTTConnectionManager 2017-02-14 11:26:54 -06:00
Martyn Taylor 3bd5c9df6a ARTMEIS-958 Route Will message outside server session 2017-02-14 11:26:54 -06:00
Martyn Taylor 59773c2849 ARTEMIS-960 Do not encode Will messages 2017-02-14 11:26:54 -06:00
Justin Bertram ff3e75d148 NO-JIRA move RoutingType to different package 2017-02-13 09:50:41 -06:00
Andy Taylor 318778954d ENTMQBR-522 - dont ack on separately settled deliveries
https://issues.jboss.org/browse/ENTMQBR-522
2017-02-10 09:50:51 -05:00
Martyn Taylor cd28d76554 ARTEMIS-951 Auto Commit MQTT Acks 2017-02-09 10:43:03 +00:00
Martyn Taylor b2e250d425 ARTEMIS-952 Remove MQTT Queues on Clean Session 2017-02-09 10:43:03 +00: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
Timothy Bish b9bf5d54f2 ARTEMIS-794 Add tests for handling of various outcomes for deliveries
Adds tests for handling of Rejected, Released and Modified outcomes for
a delivery sent to a receiver.  Tests show that for the Modified outcome
the broker is redelivering the message to the same receiver when the
undeliverable here value is set which violates the AMQP 1.0 specified
handling of that field.  Also for Rejected outcome the broker should
be sending the rejected message to the DLQ as Rejected is supposed to
be a terminal outcome.

Small fix included to not adjust the delivery count if the Modified
outcome does not indicate that the delivery failed.
2017-02-07 13:45:11 +00:00
Martyn Taylor 3900cb0ec7 ARTEMIS-917 Only return body of retained message after reboot 2017-02-06 13:33:26 -06:00
Clebert Suconic f79b21e866 ARTEMIS-934 Stomp Heart beat not being stopped in some cases 2017-01-25 12:17:47 -05:00
Will Reichert 3347a4fd27 ARTEMIS-928 Changing Netty and InVM to copy buffers, and retain them on the Netty Polls. 2017-01-18 16:59:32 -05:00
Justin Bertram 8cf94623a4 ARTEMIS-922 Rename deleteOnNoConsumers throughout
The name "deleteOnNoConsumers" isn't a good match for the semantics underneath.
The name "purgeOnNoConsumers" (and variants) is a better fit.
2017-01-17 11:40:56 -06:00
Andy Taylor f52cb5c610 ARTEMIS-918 - use requested routing type when client defined with amqp and address doesnt exist
https://issues.apache.org/jira/browse/ARTEMIS-918
2017-01-12 12:07:16 +00:00
Howard Gao 4e309d842e ARTEMIS-562 Use 'to' field if sender target is null 2017-01-11 14:20:39 -05:00
Andy Taylor 355d33ea4f fix log trace message throwing exception 2017-01-09 14:58:25 -05:00
Ulf Lilleengen f2f3552067 ARTEMIS-908: Hold connection lock when issuing credits 2017-01-04 10:59:33 -06:00
Howard Gao eecbbb18db ARTEMIS-902 OpenWire Compression Issue 2016-12-23 21:29:28 +08:00
Timothy Bish 51c95babfe ARTEMIS-901 Account for the presence of authzid in sasl plan auth
If the SASL plain mechanism arrives with the authzid value set the
mechanism needs to account for its presence and use the correct fields
of the exchange to get the username and password values.  Adds some
tests to validate this fix.
2016-12-21 18:18:54 -05: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
Andy Taylor 63f723fe8d ARTEMIS-888 - default to false if header durable not set
https://issues.apache.org/jira/browse/ARTEMIS-888
2016-12-20 09:32:33 +00:00
Andy Taylor 198143edd0 ARTEMIS-892 - add lock to tick method
https://issues.apache.org/jira/browse/ARTEMIS-892
2016-12-16 12:11:54 +00:00
Clebert Suconic 0c18c343e9 NO-JIRA: fixing checkstyle 2016-12-15 17:00:10 -05:00
Martyn Taylor 55fbcfebf8 Do not autoDelete address if it was not autoCreated 2016-12-15 17:13:09 +00:00
Andy Taylor a9b32bdf0b adding missing check for closed on proton receiver 2016-12-15 13:40:47 +00:00
Andy Taylor 3b75c95413 ARTEMIS-888 - AMQP headers arent always set
https://issues.apache.org/jira/browse/ARTEMIS-888
2016-12-15 07:07:04 +00:00
jbertram 10a32481fd ARTEMIS-789 fix ArtemisTest 2016-12-14 19:46:53 -06:00
Andy Taylor 881615e646 ARTEMIS-891 - upgrade proton to 0.16
https://issues.apache.org/jira/browse/ARTEMIS-891
2016-12-14 18:25:26 +00:00
Clebert Suconic 08e0c5e4f1 Revert "ARTEMIS-888 - AMQP headers arent always set"
This reverts commit d471f6b15f.
2016-12-14 10:20:18 -05:00
Andy Taylor d471f6b15f ARTEMIS-888 - AMQP headers arent always set
https://issues.apache.org/jira/browse/ARTEMIS-888
2016-12-14 09:25:10 -05:00
jbertram 30b1335614 ARTEMIS-877 STOMP tests + routing header 2016-12-13 17:59:09 -06:00
jbertram 3150759806 ARTEMIS-880 use built-in prefixing for STOMP 2016-12-13 15:05:43 -06:00
Howard Gao d67ea071a3 ARTEMIS-885 Fix OpenWire wildcard conversion issue 2016-12-13 15:58:35 -05:00
Martyn Taylor 7f658cad21 ARTEMIS-788 Enable auto create and Prefix in MQTT 2016-12-13 15:54:50 -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
Andy Taylor 224f62b295 ARTEMIS-877 Add Consumer support for AMQP for new addressing schema 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
jbertram 683ae68989 ARTEMIS-789 Fix Failing Tests 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 1339c930de ARTEMIS-780 Fixes a number of broken tests 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 a88853fe53 ARTEMIS-788 Stomp refactor + track autocreation for addresses 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
Martyn Taylor 887b8c8532 ARTEMIS-788 Update MQTT Protocol 2016-12-09 18:43:15 +00:00
Clebert Suconic ebbc91c728 [maven-release-plugin] prepare for next development iteration 2016-12-06 16:59:52 -05:00
Clebert Suconic 5bcbea2517 [maven-release-plugin] prepare release 1.5.1 2016-12-06 09:47:43 -05:00
Howard Gao c4339d809b Fix JMSDurableTopicRedeliverTest.testRedeliverNewSession test failure 2016-12-06 11:02:27 +08:00
Ville Skyttä a99617ae6b Treat STOMP 1.1+ undefined header escape sequences as errors
https://stomp.github.io/stomp-specification-1.2.html#Value_Encoding
2016-11-30 17:56:49 -05:00
Dmitrii Tikhomirov 3995319dca ARTEMIS-865 Remove e.printStackTrace() from code 2016-11-23 11:15:54 -05:00
Howard Gao 1487fe6bdd ARTEMIS-864 Sending to a destroyed temp queue didn't get exception 2016-11-22 19:42:38 +08:00
Andy Taylor 6628db4892 ARTEMIS-825 - Invalid selector not handled correctly in AMQP
this changes propogates the error to the client and closes the sender correctly

https://issues.apache.org/jira/browse/ARTEMIS-825
2016-11-21 11:24:51 -05:00
Andy Taylor 329c533d21 ARTEMIS-823 = broker doesn't settle rejected messages
Currently we don't settle rejected messages at the broker, we should always settle when rejected

https://issues.apache.org/jira/browse/ARTEMIS-823
2016-11-21 11:24:51 -05:00
Ryan Yeats fd12266449 ARTEMIS-860 add artemis-openwire protocol to osgi feature and fix bundle issues 2016-11-19 08:55:58 -07:00
Howard Gao 4691cbe882 ARTEMIS-842 JMSMessageID doesn't appear to work in selector 2016-11-08 09:52:12 +08:00
Ulf Lilleengen 00340c86e0 ARTEMIS-814: Support specifying connection properties 2016-11-07 15:12:14 +01:00
Clebert Suconic f2db1c4337 [maven-release-plugin] prepare for next development iteration 2016-11-03 15:35:05 -04:00
Clebert Suconic 13a8a2bd40 [maven-release-plugin] prepare release 1.5.0 2016-11-03 15:34:54 -04:00
Clebert Suconic ab7adbbd7a ARTEMIS-814 Moving ProtonClientSenderContext towards the client package
I have done it this way to be consistent to what's being documented on the package-info.java for the client package
2016-11-02 14:24:51 -04:00
Ulf Lilleengen 52a462d155 ARTEMIS-814: Refactor client connection and allow adding custom event handlers 2016-11-02 14:24:44 -04:00
Clebert Suconic 5e5ac0f057 ARTEMIS-832 Openwire was ignoring data syncs.
I'm also adding the possibility of sync on libaio, and not only relay on write-cache
2016-11-02 13:17:12 -05:00
Timothy Bish b07d6a9e75 ARTEMIS-268 Adds tests that shows issue with presettled receivers
Tests added that show that a receiver attached to a queue as presettled
are not removing the messages that are dispatched to them.
2016-11-02 14:14:35 -04:00
Clebert Suconic e0021252ee ARTEMIS-829 Removing messages re-encoding
https://issues.apache.org/jira/browse/ARTEMIS-829
2016-10-28 16:54:58 -04:00
Andy Taylor 1a4a148ba9 ARTEMIS-817 and ARTEMIS-818 openwire fixes
https://issues.apache.org/jira/browse/ARTEMIS-817
https://issues.apache.org/jira/browse/ARTEMIS-818

issues around Openwire protocol, sending a null stream maessage via openwire causes a null pointer and if a topic is auto created with openwire then it cant be destroyed as it checks for the management queue.
2016-10-25 12:00:37 -04:00
Clebert Suconic 2d1bdcd5bd ARTEMIS-814: Moving classes around and adding docs 2016-10-24 09:42:22 -04:00
Ulf Lilleengen e65fd5d674 ARTEMIS-814: Add support for outgoing AMQP connections 2016-10-24 09:42:22 -04:00
Ulf Lilleengen 6e5b917cc5 ARTEMIS-814: Fix a bug where context could be null in case a connection was closed before the flow arrived 2016-10-24 09:42:22 -04:00
Timothy Bish 226f28abf5 ARTEMIS-799 Fix issues with the AMQP Durable Topic Subscription model
Fixes several issues found in the handling of durable topic
subscriptions (test cases added).
2016-10-14 03:54:35 +02:00
Paul Gallagher fcb70f3f60 ARTEMIS-779 upgrade to netty 4.1.5.Final 2016-10-10 23:24:56 +02:00
Martyn Taylor a09348695c ARTEMIS-778 Fix MQTT tests, refactor session state 2016-10-10 23:24:14 +02:00
Clebert Suconic bed3f47c85 NO-JIRA: removing non used class 2016-10-10 15:31:46 +02:00
Ville Skyttä ddd1559fbe javadoc: Fix doclint empty <p> warnings 2016-10-10 10:02:49 +02:00
Ville Skyttä 9a439b4791 javadoc: Fix doclint reference errors 2016-10-10 10:02:49 +02:00
Ville Skyttä 693e745b9c Remove redundant type arguments
Missed by sevntu-checkstyle, but not the Eclipse compiler.

https://github.com/sevntu-checkstyle/sevntu.checkstyle/issues/458
2016-10-08 10:01:45 +03:00
Timothy Bish 398da40f7d ARTEMIS-776 Attach response should only list supported filters
The broker needs to return only the filters that are supported on a
receiver attach otherwise the remote is not aware that the broker is not
able to honor the requested configuration of the receiver.
2016-10-07 17:35:27 -04:00
Timothy Bish 62627bf2ee ARTEMIS-770 AMQP Message Transformer refactor
Refactor the AMQP Message transformers both for better performance and
also to fix a number of issues with the transformers creating inbound
and outbound messages with incorrectly mapped values or extra data
appended where it should not be.
2016-10-07 10:42:52 -04:00
Martyn Taylor 95c4fdd408 ARTEMIS-762 Reflect management changes in AMQP protocol 2016-10-07 10:38:01 -04:00
Ville Skyttä 082b75bb3d More use of try-with-resources 2016-09-30 13:17:26 -04:00
Clebert Suconic ec48f9ed00 ARTEMIS-765 Improve Checkstyle 2016-09-30 11:12:09 -04:00
Andy Taylor bd9b2057fa ARTEMIS-758 - List/Object message sent by OpenWire JMS client can't be consumed with other clients
https://issues.apache.org/jira/browse/ARTEMIS-758
2016-09-29 20:28:31 -04:00
Timothy Bish 67fc49014e ARTEMIS-763 Remove the legacy Qpid JMS client annotations
Removes the append of the destination annotations from the outbound JMS
transformer as the legacy client has be unsupported at Qpid for quite
some time now.
2016-09-29 15:37:47 -04:00
Clebert Suconic a838bf0479 ARTEMIS-751 Simplification of the AMQP implementation
Since we don't need client implementations any longer, given the maturity level of
qpid jms, these classes can go, as a result a lot of the interfaces can be removed.

As part of this I am removing proton-plug, and reorganizing the packages in a way I think it
makes more sense and easier to other developers to understand and maintain it.

https://issues.apache.org/jira/browse/ARTEMIS-751
2016-09-27 09:29:40 -04:00
Clebert Suconic 1548a4e217 NO-JIRA Removing Thread usage for Pings on Stomp 2016-09-26 18:32:25 -04:00
jbertram 2dcf8de0de ARTEMIS-741 fix subscription queue leak on STOMP 2016-09-26 18:01:30 -04:00
Ville Skyttä e98da5f288 Make bunch of private fields final 2016-09-23 09:06:08 -04:00
Clebert Suconic 113c0c9360 ARTEMIS-738 Improving TX support on AMQP
https://issues.apache.org/jira/browse/ARTEMIS-738
2016-09-21 18:14:38 -04:00
Martyn Taylor 74742dcb66 Add Unique ClientID on Server 2016-09-16 16:05:20 +01:00
Martyn Taylor dd32d6bb3e Add back autoCreate for bindingsQuery in AMQP protocol 2016-09-15 11:17:26 -04:00
Howard Gao 406d09d986 ARTEMIS-728 Broker doesn't support unique jms client-id (qpid-jms client) 2016-09-15 11:17:02 -04:00
Ville Skyttä 2c7c81ca9e STOMP frame encode: Use fixed buffers 2016-09-14 20:54:28 +03:00
Ville Skyttä 8e59cf4d5f STOMP frame encode: Avoid StringBuilder resizing 2016-09-14 20:54:23 +03:00
Ville Skyttä 7bff07d5b1 Add missing @Overrides 2016-09-14 13:22:20 +03:00
Martyn Taylor afd6bb7aa6 ARTEMIS-731 properly handle AMQP recreate durable subscription queue 2016-09-13 14:10:26 -04:00
Andy Taylor cdb0391c1c ARTEMIS-723 - AMQP subscriptions aren't deleted properly
https://issues.apache.org/jira/browse/ARTEMIS-723
2016-09-12 10:27:49 +01:00
Clebert Suconic 46d3f4abcc Version upgrades 2016-09-09 14:49:33 -04:00
Martyn Taylor 8c7599d5e4 ARTEMIS-725 Strip internal headers on AMQP Out 2016-09-09 09:49:38 -04:00
Martyn Taylor 553f2df745 ARTEMIS-724 Implement no-local consumer filter AMQP 2016-09-09 11:07:53 +01:00
Timothy Bish 42ff4a6048 ARTEMIS-722 Add DELAYED_DELIVERY capability to server connection open
The server should indicate to clients that it supports the message
annotation that allows message delivery to be delayed
'x-opt-delivery-time'
2016-09-08 19:01:40 -04:00
Andy Taylor 519bf674bc ARTEMIS-718 - AMQP type message bodies are being lost
https://issues.apache.org/jira/browse/ARTEMIS-718
2016-09-08 15:39:27 -04:00
Martyn Taylor db7dfba607 ARTEMIS-720 Add JMSX properties in AMQP<->JMS converter 2016-09-08 09:31:43 -04:00
Martyn Taylor b788ffac22 ARTEMIS-719 Send ampq:not-found properly on remote open 2016-09-08 09:27:36 -04:00
Clebert Suconic 505b732843 [maven-release-plugin] prepare for next development iteration 2016-09-06 12:17:31 -04:00