Robbie Gemmell [Mon, 17 Dec 2018 10:22:33 +0000 (10:22 +0000)]
[maven-release-plugin] prepare release 0.40.0
Timothy Bish [Fri, 14 Dec 2018 17:25:41 +0000 (12:25 -0500)]
QPIDJMS-440 Update Netty to 4.1.32.Final
Robbie Gemmell [Fri, 14 Dec 2018 10:33:27 +0000 (10:33 +0000)]
NO-JIRA: update pom.xml scm details to reflect new qpid-jms repo location
Timothy Bish [Wed, 12 Dec 2018 17:32:17 +0000 (12:32 -0500)]
QPIDJMS-438 Ensure that closed sessions are removed from tracking
When a session is remotely closed it can be left in the Connection
tracking map which can lead to large leaks of remotely closed sessions
over time. Ensure it is removed on shutdown calls.
Robbie Gemmell [Wed, 12 Dec 2018 17:03:06 +0000 (17:03 +0000)]
QPIDJMS-439: distinguish sessions and connections better in the protocol trace logs
Robbie Gemmell [Wed, 28 Nov 2018 11:29:17 +0000 (11:29 +0000)]
[maven-release-plugin] prepare for next development iteration
Robbie Gemmell [Wed, 28 Nov 2018 11:28:19 +0000 (11:28 +0000)]
[maven-release-plugin] prepare release 0.39.0
Robbie Gemmell [Tue, 27 Nov 2018 17:14:05 +0000 (17:14 +0000)]
QPIDJMS-437: update to proton-j 0.31.0
Robbie Gemmell [Fri, 23 Nov 2018 12:09:38 +0000 (12:09 +0000)]
QPIDJMS-436: fix javadoc errors on Java 11
Robbie Gemmell [Thu, 22 Nov 2018 16:34:57 +0000 (16:34 +0000)]
QPIDJMS-432: update various plugins and test dependencies
Timothy Bish [Tue, 20 Nov 2018 22:06:05 +0000 (17:06 -0500)]
QPIDJMS-434 Safe iteration over consumer that can close during
Ensure that we safely iterate over the consumers when processing a
client acknowledge to ensure that deferred closures don't cause a
ConcurrentModificationException which will error out the acknowledge
operation.
Timothy Bish [Thu, 15 Nov 2018 19:05:57 +0000 (14:05 -0500)]
QPIDJMS-432 Update dependencies used in test and packaging
Timothy Bish [Wed, 14 Nov 2018 18:03:40 +0000 (13:03 -0500)]
QPIDJMS-431 Refactor the FailoverProvider to improve performance
Refactor how the failover provider handles the workload passing though it
and how it deals with connection failures to make its presence as transparent
as possible to overall client performance.
Robbie Gemmell [Mon, 12 Nov 2018 17:42:43 +0000 (17:42 +0000)]
[maven-release-plugin] prepare for next development iteration
Robbie Gemmell [Mon, 12 Nov 2018 17:40:23 +0000 (17:40 +0000)]
[maven-release-plugin] prepare release 0.38.0
Robbie Gemmell [Mon, 12 Nov 2018 16:50:58 +0000 (16:50 +0000)]
QPIDJMS-429: fix typo in spelling
Timothy Bish [Mon, 12 Nov 2018 16:31:34 +0000 (11:31 -0500)]
QPIDJMS-429 Make use of newer proton-j APIs for send and decode
Use newer APIs to clean up some send code that handles dispositions and
use new section type enums to simplify the message decoding portion of
the codec. Also implement the writeable buffer ensure remaining method
to better handle writes where the buffer needs to grow.
Sean Sullivan [Wed, 3 Oct 2018 18:08:15 +0000 (11:08 -0700)]
NO-JIRA: add openjdk11 to Travis build matrix. This closes #21.
Robbie Gemmell [Mon, 12 Nov 2018 15:14:43 +0000 (15:14 +0000)]
QPIDJMS-428: disable SaslGssApiIntegrationTest on Java11 onward until issues resolved
Robbie Gemmell [Mon, 12 Nov 2018 14:01:26 +0000 (14:01 +0000)]
NO-JIRA: ensure handshake completion notified at server before inspecting state, fixes spurious test failure when using TLSv1.3
Robbie Gemmell [Tue, 6 Nov 2018 17:55:05 +0000 (17:55 +0000)]
QPIDJMS-427: update to proton-j 0.30.0
Sebastian Thomschke [Wed, 7 Nov 2018 16:01:31 +0000 (17:01 +0100)]
QPIDJMS-424: Update to Netty 4.1.31 and netty-tcnative 2.0.19. This closes #24.
Robbie Gemmell [Mon, 5 Nov 2018 11:16:29 +0000 (11:16 +0000)]
NO-JIRA: simplify test method, remove arg that isnt useful and is always false
Timothy Bish [Tue, 30 Oct 2018 19:48:26 +0000 (15:48 -0400)]
QPIDJMS-420 Use local tracking in AmqpConsumer for prefetch refill
Track the number of message that are currently in the prefetch buffer using
local counters that mesh well with the already added delivered message counts
to reduce access to synchronized code in the message queue. Reduce code paths
where a message settlement might be missed or credit not replenished on error.
Timothy Bish [Mon, 29 Oct 2018 18:45:36 +0000 (14:45 -0400)]
QPIDJMS-423 Log only the host and port data from the URI on connect
Update the connection event handler to log only the on-query portion of
the URI when processing the event.
This closes #23
Timothy Bish [Fri, 26 Oct 2018 20:44:23 +0000 (16:44 -0400)]
QPIDJMS-420 Refactor the MessageConsumer prefetch queue
Refactor the MessageQueue based implementations to remove some unused
APIs and simplify the interface. Improves performance of the default
FifoMessageQueue and separates the implementation from the priority
based variant to allow for more efficiencies to be added in.
Timothy Bish [Fri, 26 Oct 2018 19:55:08 +0000 (15:55 -0400)]
QPIDJMS-420 Allow for direct dispatch to target JMS MessageConsumer
Allow the connection to be provided a direct path to the targeted
consumer of an inbound message as opposed to looking one up via the
session map and then the session's consumer map. Preserves the legacy
lookups for compatibility with connection consumer paths.
Robbie Gemmell [Thu, 25 Oct 2018 16:33:20 +0000 (17:33 +0100)]
NO-JIRA: fix test to avoid spurious failure due to race formed by old changes in connect behaviour
Timothy Bish [Fri, 19 Oct 2018 17:48:03 +0000 (13:48 -0400)]
QPIDJMS-421 Cache common message annotation encodings for sends
Use a cache to store the msot commonly used message annotations that
are applied to outbound messages in order to reduce overhead of sends
that would otherwise be encoding the same annotations map each time.
Only when additional JMS features like scheduled delivery time are
used will we need to perform a full encode on the MessageAnnotations
section of the outbound message.
Robbie Gemmell [Thu, 18 Oct 2018 14:17:29 +0000 (15:17 +0100)]
QPIDJMS-420: add a try-finally to ensure the decrement occurs
Timothy Bish [Wed, 17 Oct 2018 18:33:31 +0000 (14:33 -0400)]
QPIDJMS-420 Avoid signaling attempt costs when no waiters
Track if a receive (dequeue) call is waiting on the prefetch queue in
the consumer and if none present don't try to wait a thread which avoids
some cost and reduces time under lock.
Timothy Bish [Wed, 17 Oct 2018 16:50:26 +0000 (12:50 -0400)]
QPIDJMS-419 Ensure created resources are tracked at all times
If the request to create a resource doesn't complete until after
a failover and reconnect the recovery of the JMS resources on
reconnect may miss the fact it needs to recover that resource.
Timothy Bish [Tue, 16 Oct 2018 19:12:30 +0000 (15:12 -0400)]
QPIDJMS-418 Optimize usage of Symbol types to reduce overhead
The code is currently doing many Symbol.valueOf calls for each message
on send and receive where it should be using cached Symbol values to
avoid the overhead of the Symbol objects cache lookups and string
compares. Clean up some other ares where we process Symbols to reduce
overhead on send and receive.
Robbie Gemmell [Fri, 12 Oct 2018 14:18:19 +0000 (15:18 +0100)]
QPIDJMS-2: commit for testing git to JIRA comment bot, ignore.
Timothy Bish [Thu, 11 Oct 2018 23:10:35 +0000 (19:10 -0400)]
QPIDJMS-416 Allow the event loop to run until Transport close
Allow the event loop to close only on Transport close to ensure that
work can be done async by users of the Transport up to the close.
Also fixes some random test failures by ensuring that the init method
failure triggers channel abort before connection completes.
Timothy Bish [Tue, 9 Oct 2018 20:25:23 +0000 (16:25 -0400)]
QPIDJMS-416 Run all AmqpProvider work on netty event loop thread
Move from a separate provider executor to using the netty event loop for
AMQP protocol handling.
Robbie Gemmell [Tue, 2 Oct 2018 15:14:56 +0000 (16:14 +0100)]
QPIDJMS-414: update to Netty 4.1.30
Robbie Gemmell [Tue, 2 Oct 2018 15:14:39 +0000 (16:14 +0100)]
QPIDJMS-415: update netty-tcnative, activemq, jetty, mockito, jacoco test deps
Timothy Bish [Fri, 28 Sep 2018 18:53:09 +0000 (14:53 -0400)]
NO-JIRA Fix intermittent test failures due to timing
On very fast machine the delay can be the exact value specified so a
check on greatThanOrEqualTo is needed to ensure no sporadic faulures
Robbie Gemmell [Fri, 28 Sep 2018 16:25:09 +0000 (17:25 +0100)]
[maven-release-plugin] prepare for next development iteration
Robbie Gemmell [Fri, 28 Sep 2018 16:23:56 +0000 (17:23 +0100)]
[maven-release-plugin] prepare release 0.37.0
Timothy Bish [Mon, 24 Sep 2018 19:44:33 +0000 (15:44 -0400)]
QPIDJMS-413 Fix improper calculation in the ReadableBuffer
Don't add reader index to the array offset for the underlying buffer.
Robbie Gemmell [Tue, 11 Sep 2018 11:22:10 +0000 (12:22 +0100)]
NO-JIRA: strengthen testing of sync send with failover provider
Robbie Gemmell [Fri, 31 Aug 2018 17:34:47 +0000 (18:34 +0100)]
QPIDJMS-412: stop further [re]connection attempts after a non-temporary SASL failure
Robbie Gemmell [Tue, 21 Aug 2018 13:28:10 +0000 (14:28 +0100)]
NO-JIRA: tweak timeouts, avoid spurious failure if CI is a little slow
Robbie Gemmell [Mon, 20 Aug 2018 15:15:58 +0000 (16:15 +0100)]
QPIDJMS-411: remove extra space after performative or before payload
Timothy Bish [Thu, 16 Aug 2018 16:36:11 +0000 (12:36 -0400)]
QPIDJMS-411 Improve output of amqp.traceFrames with payload
Output payload as formatted string with truncation (configuration of
length added).
Robbie Gemmell [Wed, 15 Aug 2018 17:19:27 +0000 (18:19 +0100)]
[maven-release-plugin] prepare for next development iteration
Robbie Gemmell [Wed, 15 Aug 2018 17:18:43 +0000 (18:18 +0100)]
[maven-release-plugin] prepare release 0.36.0
Timothy Bish [Wed, 15 Aug 2018 16:31:44 +0000 (12:31 -0400)]
QPIDJMS-391 Add new documentation to cover OpenSSL support
Robbie Gemmell [Wed, 15 Aug 2018 15:34:23 +0000 (16:34 +0100)]
QPIDJMS-410: update test dep versions, to Mockito 2.21.0 and ActiveMQ 5.15.5
Robbie Gemmell [Wed, 15 Aug 2018 15:08:14 +0000 (16:08 +0100)]
NO-JIRA: update test to avoid race that could result in illegal ref count state
Timothy Bish [Tue, 14 Aug 2018 18:33:33 +0000 (14:33 -0400)]
QPIDJMS-408 Implement the string write method of WritableBuffer
Implement the put(String) method for the WritableBuffer interface
introduced in proton-j 0.29.0 which allows us to use the Netty ByteBuf
string encoding to perform string encodes faster than the default
version in proton-j
Robbie Gemmell [Tue, 14 Aug 2018 16:58:48 +0000 (17:58 +0100)]
QPIDJMS-408: update to proton-j-0.29.0
Robbie Gemmell [Tue, 14 Aug 2018 16:39:45 +0000 (17:39 +0100)]
QPIDJMS-391: reorg the dep props/entries for clarity, fix some typos
Timothy Bish [Wed, 8 Aug 2018 14:38:11 +0000 (10:38 -0400)]
NO-JIRA Bind the AMQP connector to localhost only
Timothy Bish [Wed, 8 Aug 2018 13:56:21 +0000 (09:56 -0400)]
QPIDJMS-407 Address thread unsafe failover requests handling
Address thread unsafe handling of in progress requests being added and
removed from the request tracking map that lead to issues on reconnect
and recover losing track of pending requests.
Robbie Gemmell [Tue, 7 Aug 2018 14:25:11 +0000 (15:25 +0100)]
QPIDJMS-408: update to proton-j-0.28.1
Timothy Bish [Thu, 2 Aug 2018 20:35:58 +0000 (16:35 -0400)]
QPIDJMS-391 Add support for netty OpenSSL implementations
Allow the client to utilize netty openssl features if available and
configured to do so. The user will need to provide a netty-tcnative
dependency to the classpath such as the boringssl uber jar and set
the transport.useOpenSSL option to true.
The tests use the boringssl library v2.0.12.Final to validate.
Updates to Netty 4.1.28.Final which has some OpenSSL bindings fixes.
Robbie Gemmell [Fri, 20 Jul 2018 09:22:03 +0000 (10:22 +0100)]
[maven-release-plugin] prepare for next development iteration
Robbie Gemmell [Fri, 20 Jul 2018 09:21:27 +0000 (10:21 +0100)]
[maven-release-plugin] prepare release 0.35.0
Robbie Gemmell [Thu, 19 Jul 2018 14:49:52 +0000 (15:49 +0100)]
QPIDJMS-406: update to Netty 4.1.27
Timothy Bish [Wed, 18 Jul 2018 19:23:55 +0000 (15:23 -0400)]
NO-JIRA Fix test to account for so that flow is emitted always
For the no listener case we should emit a flow so that the two cases are
consistent.
Timothy Bish [Wed, 18 Jul 2018 19:14:10 +0000 (15:14 -0400)]
NO-JIRA Ensure connection not dropped until listener is set
Make the consumer a zero prefetch consumer so that the flow isn't
emitted until the message listener is set so the connection isn't
dropped until the test is in the correct state to manage the outcome.
Robbie Gemmell [Wed, 18 Jul 2018 17:10:39 +0000 (18:10 +0100)]
QPIDJMS-405: update to proton-j 0.28.0
Timothy Bish [Wed, 18 Jul 2018 17:07:27 +0000 (13:07 -0400)]
QPIDJMS-398 Update Mockito to latest point release
Timothy Bish [Wed, 18 Jul 2018 16:11:53 +0000 (12:11 -0400)]
QPIDJMS-404 Add variants of ProviderFuture for perf tuning
Adds three variations on ProviderFuture that allow for tuning on
platforms that don't benefit from the spin / wait pattern used in
the current implementation and default to using a variant that does
not park on windows to avoid unpredictably long parks that result
in performance decreases due to missing the event completion.
Robbie Gemmell [Wed, 18 Jul 2018 16:16:48 +0000 (17:16 +0100)]
QPIDJMS-403: adjust test to account for changes, avoid spurious failure in CI
Timothy Bish [Tue, 17 Jul 2018 21:17:20 +0000 (17:17 -0400)]
QPIDJMS-403 Trigger whenOffline event on queued requests on drop
When the handle connection failure method runs it should trigger the
when off line behavior of any currently queued tasks in order to allow
timely completion of requests that do not need to wait for a new
connection to happen such as session close, message acknowledge etc.
Timothy Bish [Thu, 12 Jul 2018 16:33:52 +0000 (12:33 -0400)]
QPIDJMS-401 Clean up some older code in the AMQP provider
Remove some now unused code paths and tests that no longer apply to how
we manage consumer and producer resources.
Timothy Bish [Wed, 11 Jul 2018 19:20:43 +0000 (15:20 -0400)]
QPIDJMS-401 Refactor fixed producer send path
Remove need for instanceof on each send call when the common case it
that the send fires and we know what the type is.
Timothy Bish [Wed, 11 Jul 2018 19:07:25 +0000 (15:07 -0400)]
QPIDJMS-401 Remove unneeded volatile tag on variable
Removed volatile on the error member as it will be sync'd by the atomic
update on the state when written.
Timothy Bish [Wed, 11 Jul 2018 18:59:23 +0000 (14:59 -0400)]
This closes #19
Francesco Nigro [Sun, 24 Jun 2018 14:10:15 +0000 (16:10 +0200)]
QPIDJMS-401 Save allocation of new promise on each writeAndFlush
Use the Netty voidPromise instance owned by the channel to avoid allocation
of an unused promise on each write operation to the Transport.
Robbie Gemmell [Thu, 5 Jul 2018 14:17:40 +0000 (15:17 +0100)]
NO-JIRA: increase timeout to avoid spurious failure in slower CI envs
Timothy Bish [Thu, 28 Jun 2018 19:09:45 +0000 (15:09 -0400)]
QPIDJMS-399 Split write and flush of data into two operations
Allow for split write and then flush of outbound data which allows
for quicker release of blocking operations where the flush can be
done after the caller has been notified of success or a batch of
writes could improve performance.
Robbie Gemmell [Thu, 28 Jun 2018 15:34:04 +0000 (16:34 +0100)]
QPIDJMS-397: override up to surefire 2.21.0 to resolve Java 10 compatibility issue
Timothy Bish [Tue, 26 Jun 2018 19:52:30 +0000 (15:52 -0400)]
QPIDJMS-398 Update dependencies to latest
Update Mockito, Jetty and the bundle plugin.
Timothy Bish [Tue, 26 Jun 2018 19:39:53 +0000 (15:39 -0400)]
QPIDJMS-397 Update to the current v19 Apache parent pom
Update to latest pom to capture latest plugins and align with other
apache Java components.
Robbie Gemmell [Mon, 25 Jun 2018 19:32:27 +0000 (20:32 +0100)]
[maven-release-plugin] prepare for next development iteration
Robbie Gemmell [Mon, 25 Jun 2018 19:31:39 +0000 (20:31 +0100)]
[maven-release-plugin] prepare release 0.34.0
Robbie Gemmell [Mon, 25 Jun 2018 18:19:06 +0000 (19:19 +0100)]
QPIDJMS-396: avoid corner case leading to unexpected wait
Timothy Bish [Mon, 25 Jun 2018 17:38:30 +0000 (13:38 -0400)]
QPIDJMS-395 Resend message in flight when remote closed
When the remote closes the connection and an inflight send
is outstanding we should handle the close and resend those
messages that are still awaiting dispositions in the same
manner as we do when the connection unexpectedly drops when
using the Failover feature.
Timothy Bish [Mon, 25 Jun 2018 17:05:07 +0000 (13:05 -0400)]
QPIDJMS-396 Allow for faster reaction times on sync operations
For sync operations from the JMS layer into the provider we can
more quickly process the events by using a spin-wait future that
checks in a short spin for the completion of the target event.
The spin will back off and eventually back down to a parked wait
that will be signalled by the normal wait / notify pattern.
Robbie Gemmell [Mon, 25 Jun 2018 10:08:31 +0000 (11:08 +0100)]
QPIDJMS-395: expand test to check versions with and without container-id hint, i.e. invalid ClientID
Robbie Gemmell [Mon, 25 Jun 2018 09:15:33 +0000 (10:15 +0100)]
QPIDJMS-395: fix some c&p test comments
Robbie Gemmell [Mon, 25 Jun 2018 08:33:29 +0000 (09:33 +0100)]
QPIDJMS-2: commit for testing git to JIRA comment bot another time, ignore.
Robbie Gemmell [Sat, 23 Jun 2018 10:08:50 +0000 (11:08 +0100)]
QPIDJMS-2: commit for testing git to JIRA comment bot yet again, ignore.
Timothy Bish [Thu, 21 Jun 2018 22:13:31 +0000 (18:13 -0400)]
QPIDJMS-395 Adding additional failover handling tests
Add new test that validates reconnect on error after a successful
connection was made and the next reconnect has its open attempt
rejected. Client should reconnect to final peer and return to normal
operation.
Timothy Bish [Thu, 21 Jun 2018 15:25:39 +0000 (11:25 -0400)]
NO-JIRA Fix race in test on link remote close
Ensure that setMessageListener doesn't race the link close by using a
zero prefetch to cause the set to send the link credit.
Robbie Gemmell [Wed, 20 Jun 2018 17:55:29 +0000 (18:55 +0100)]
QPIDJMS-2: commit for testing git to JIRA comment bot again, ignore.
Robbie Gemmell [Wed, 20 Jun 2018 17:49:57 +0000 (18:49 +0100)]
QPIDJMS-2: commit for testing git to JIRA comment bot, ignore.
Robbie Gemmell [Wed, 20 Jun 2018 17:39:20 +0000 (18:39 +0100)]
QPIDJMS-2: commit for testing git to JIRA comment bot, ignore.
Robbie Gemmell [Wed, 20 Jun 2018 17:16:14 +0000 (18:16 +0100)]
QPIDJMS-2: commit for testing git to JIRA comment bot, ignore.
Robbie Gemmell [Wed, 20 Jun 2018 17:04:19 +0000 (18:04 +0100)]
NO-JIRA: add some support to test peer for multi-frame messages, add some receiving tests
Timothy Bish [Wed, 20 Jun 2018 15:36:33 +0000 (11:36 -0400)]
QPIDJMS-393 Fix test repetitions count not reset to one
Reduce to one repetition from value left in during local testing.
Timothy Bish [Tue, 19 Jun 2018 23:04:20 +0000 (19:04 -0400)]
QPIDJMS-395 Throw a more descriptive exception type when forced
Use a somewhat more descriptive exception type when the connection is
remotely closed due to a forced error condition to aid in debug.
Timothy Bish [Tue, 19 Jun 2018 19:03:15 +0000 (15:03 -0400)]
QPIDJMS-395 Add failed state in provider to prevent possible race
Adds a failed state to the AMQP provider such that any queued actions
such as a send which race into the provider between the time a
connection error is detected and the failover bits close the provider
received a consistent exception that allows normal failover processing
to occur.
Timothy Bish [Tue, 12 Jun 2018 19:24:32 +0000 (15:24 -0400)]
QPIDJMS-394 Fix failover wrongly signalling async completion
Ensure that an inflight async completion that is held in the
Failover provider is not signaled as failed by the session
during connection recovery.
Timothy Bish [Tue, 12 Jun 2018 17:04:21 +0000 (13:04 -0400)]
QPIDJMS-393 Signal async completion when TX is in-doubt
Send an onCompletion event to any caller using the async completion API
for sending messages when a TX has been tagged as in-doubt