2704 Commits

Author SHA1 Message Date
Clebert Suconic
4ba9f67d80 ARTEMIS-5010 AckManager records are not replicated 2024-08-28 11:53:16 -04:00
Timothy Bish
18e6f1a88d ARTEMIS-5007 Ensure mirror connection recovers from manual closures
If a user for some reason force closes the local mirror connection SNF
consumer or the actual connection but hasn't stopped the broker connection
itself the connection should recover and rebuild. The fix ensures that if
local connections are closed first then local session resources get freed.
2024-08-27 16:20:18 +01:00
Timothy Bish
b58191bd52 ARTEMIS-5004 Clean up federation address consumer bindings proactively
When an address consumer explicitly closes or is closed we should remove the
address binding for that consumer right away instead of waiting for possible
configured auto delete as the demand is gone and we don't need to binding to
stick around any longer.
2024-08-21 17:04:18 +01:00
Justin Bertram
18999a83bf ARTEMIS-5000 stop running most STOMP tests twice 2024-08-21 10:25:43 +01:00
Timothy Bish
c932b75de6 ARTEMIS-4998 Fix Federation link close wrongly closing the connection
The federation sender links can react incorrectly when the source broker
closes a receiver because the demand is gone and they can result in the
remote broker closing its side of the connection causing the whole federation
to need to be rebuilt. Handle the closure events correctly to prevent an
unexpected close and rebuild.
2024-08-20 11:16:16 +01:00
Howard Gao
c395db526c NO-JIRA Fix AnycastTest.testTxCommitReceive random failure 2024-08-20 11:15:47 +01:00
Robbie Gemmell
87cc15700f ARTEMIS-4996: update to junit 5.11.0
Move parameters out of base classes where needed to avoid clashes with
subclasses [re-]defining their own params. Needed due to change of
field + method annotation search handling to adopt Java hiding/shadowing
semantics, leading to ParameterizedTestExtension discovering both parent
and subclass parameter definition methods and throwing.
2024-08-19 11:51:39 +01:00
Clebert Suconic
c042fb9e13 [maven-release-plugin] prepare for next development iteration 2024-08-16 10:23:18 -04:00
Clebert Suconic
0ec68a93d3 [maven-release-plugin] prepare release 2.37.0 2024-08-16 10:23:17 -04:00
Howard Gao
1f79341c05 ARTEMIS-4973 pageSizeBytes/pageLimitBytes combination can cause Address full
Update docs/user-manual/paging.adoc

Co-authored-by: Robbie Gemmell <robbie@apache.org>
2024-08-16 09:41:53 -04:00
Clebert Suconic
209f293922 [maven-release-plugin] prepare for next development iteration 2024-08-14 14:39:34 -04:00
Clebert Suconic
de6efc82d1 [maven-release-plugin] prepare release 2.37.0 2024-08-14 14:39:21 -04:00
Josh Byster
8b3874d613
ARTEMIS-4809 Allow configuring initial queue buffer size
In some setups, there could be a few hundred thousand queues that are
created due to many consumers that are connecting. However, most of
these are empty and stay empty for the entire day since there aren't
necessarily messages to be sent. The 8K intermediateMessageReferences
instantiates an 64KB buffer (Object[]). This means we have large
allocation and live heap that ultimately remains empty for almost the
entire day.

In this commit, we introduce initial-queue-buffer-size, which defaults
to the current value of 8192. It can be set programmatically via
QueueConfiguration#setInitialQueueBufferSize(int).

Note that this must be a positive power of 2.
2024-08-14 13:18:29 -05:00
Clebert Suconic
537e0023fc ARTEMIS-4986 Compatibility issue on Quorum Voting 2024-08-13 14:45:00 -04:00
Timothy Bish
f031481012 ARTEMIS-4982 Cleanup AMQP large message files for rejected sends
When an incoming AMQP large message send is rejected the broker should delete the
large message file as part of the reject handling.
2024-08-12 17:39:51 +01:00
Timothy Bish
be4995a530 ARTEMIS-4969 Ensure AMQP senders can target FQQN if authorized
When using targeted FQQN permissions the AMQP sender needs to check that
it can access not only the address but also the queue if sent an FQQN so
that the security can validate if the sender has been granted directed
access to the FQQN as a whole.
2024-08-06 10:21:57 +01:00
Timothy Bish
8250e611df ARTEMIS-4963 Check send auth on openwire producer create
Check that an attaching Openwire producer has SEND permission on the target
destination and reject it if it does not instead of delaying checks until the
actual send. For anonymous producers check early in the send process to reduce
overhead in the JVM handling messages that are going to fail to send.
2024-08-02 16:38:20 +01:00
Howard Gao
4ce0dfca2d ARTEMIS-4959 moveMessages operation can move more messages than max messageCount 2024-07-30 11:55:53 -04:00
Howard Gao
096a869c1e ARTEMIS-4954 AddressControl.pause() can pause the snf queue 2024-07-25 19:51:30 -04:00
Timothy Bish
284ce80618 ARTEMIS-4952 Use getObjectPropertyForFilter when applying filters
When counting messages with provided filters and grouping use the API
getObjectPropertyForFilter which translates values from AMQP message
annotations that are otherwise missed by the filters.
2024-07-25 19:51:19 -04:00
Clebert Suconic
fa917ae3fd [maven-release-plugin] prepare for next development iteration 2024-07-25 13:47:10 -04:00
Clebert Suconic
75f17ba64d [maven-release-plugin] prepare release 2.36.0 2024-07-25 13:47:09 -04:00
Clebert Suconic
db0ba73aa4 ARTEMIS-4941 Remove lazy update after application properties only when it's paging
for regular messages it's quite obvious when the message is leaving the queue but for paged messages it becomes a challenge. We should just ignore the update for paged messages.
2024-07-25 13:01:57 -04:00
Clebert Suconic
1a5c2ec51c Revert "ARTEMIS-4941 Remove lazy update after application properties as it's no longer needed"
This reverts commit fb2a57f3ed25895681d3636e3f5fb9d9b9d0a053.
2024-07-25 13:01:57 -04:00
Justin Bertram
8d1a66fbbd ARTEMIS-4931 fix bridge config encoding
This commit fixes 3 distinct issues with bridge configuration encoding:

 - The encoding size was calculated incorrectly in three ways:
   - Using 0 instead of `DataConstants.SIZE_NULL` when no transformer is
     defined resulting in a calculated size discrepancy of -1.
   - Using `DataConstants.INT` instead of `DataConstants.SIZE_INT` for
     the number of transformer properties resulting in a calculated size
     discrepancy of +2 when using a configuration with a transformer.
   - Using 0 or `sizeOfNullableInteger` instead of
     `DataConstants.SIZE_INT` for the number of static connectors
     resulting in a variable calculated size discrepancy of either -4 or
     +1 respectively.
 - Encoding was using `writeString` instead of `writeNullableString` for
   the name of the transformer class resulting in an actual buffer size
   discrepancy of -1.

Aside from these fixes this commit also adds new tests specifically for
encoding & decoding include a test to verify known bytes during
encoding.

Lastly, it's worth noting that this *won't fix* bad data that was
already stored to disk by an older broker or bad data that comes over
the wire from an older broker (e.g. if a older primary broker paired
with a newer backup).
2024-07-24 14:51:55 +01:00
Justin Bertram
5c160ae1a8 ARTEMIS-4930 refactor storage manager tests
During the investigation for ARTEMIS-4910 it was noted that some of the
storage manager tests didn't actually force a full reload (i.e.
decoding) of the various configurations from disk. This commit does the
following:

 - refactors these tests so that they all force a reload from disk
 - organizes imports
 - eliminates various bits of repeated code in all the tests
 - improves code formatting

This commit exposes a bug in the encoding/decoding of
BridgeConfiguration via a failing test in
BridgeConfigurationStorageTest. This test is disabled. This failure will
be resolved in a subsequent commit at which point the test will be
enabled again.
2024-07-24 14:51:55 +01:00
Clebert Suconic
ae26a8640f NO-JIRA Removing System.out from a test 2024-07-23 16:28:15 -04:00
Clebert Suconic
41ec279e22 NO-JIRA Making test more resilient 2024-07-22 18:57:27 -04:00
Clebert Suconic
fb2a57f3ed ARTEMIS-4941 Remove lazy update after application properties as it's no longer needed 2024-07-22 15:31:36 -04:00
Clebert Suconic
9e8df4cf7a ARTEMIS-4821 OperationContext leaking on SendAckThread
co-authored: nmeylan (test attached to the JIRA)
2024-07-21 22:23:38 -04:00
Justin Bertram
4e1daccfe3 ARTEMIS-4912 filter not enforced when sending msg to q via web console 2024-07-19 15:00:45 -05:00
Justin Bertram
4053698014
ARTEMIS-4936 make test more resilient 2024-07-19 10:58:31 -05:00
Justin Bertram
9a0797509d ARTEMIS-4936 verify response correlationId when using Core client
If, for whatever reason, the response for a packet sent with blocking
semantics is never returned it's possible that an async response
received in the interventing time will be interpreted as the current
response. This is because ChannelImpl does not verify the correlation
ID set on the response packet when it is received.
2024-07-19 07:05:46 -07:00
Clebert Suconic
bcdf626efa NO-JIRA Speeding up test
Removing redundant verification that was just spending time and not being verified.
2024-07-18 16:00:37 -04:00
Clebert Suconic
79708749e8 NO-JIRA Speending up a failover test
No need for the iterations, and a few minor improvements to the test.

This method was taking up to 15 seconds on the CI and the same method is reused a couple times, resulting in many minutes wasted
2024-07-18 14:16:02 -04:00
Justin Bertram
1a83220711 ARTEMIS-4910 fix divert config encoding
This commit fixes 4 distinct issues with divert configuration encoding:

 - The encoding size was calculated incorrectly in three ways:
   - Using 0 instead of `DataConstants.SIZE_NULL` when no transformer is
     defined resulting in a calculated size discrepancy of -1.
   - Using `DataConstants.INT` instead of `DataConstants.SIZE_INT` for
     the number of transformer properties resulting in a calculated size
     discrepancy of +2 when using a configuration with a transformer.
   - Using `BufferHelper.sizeOfNullableBoolean` instead of
     `DataConstants.SIZE_BOOLEAN` for the `exclusive` property resulting
     in a calculated discrepancy of +1.
 - Encoding was using `writeString` instead of `writeNullableString` for
   the name of the transformer class resulting in an actual buffer size
   discrepancy of -1.

Aside from these fixes this commit also:

 - Updates the divert storage test to force a reload from disk which
   will also trigger this problem.
 - Adds new tests specifically for encoding & decoding include a test to
   verify known bytes during encoding.

Lastly, it's worth noting that this *won't fix* bad data that was
already stored to disk by an older broker or bad data that comes over
the wire from an older broker (e.g. if a older primary broker paired
with a newer backup).
2024-07-17 14:11:21 +01:00
Clebert Suconic
6c1134388b ARTEMIS-4925 Fixing issue with mirroring and replication
the page writes on replica should include the address where they belong to avoid leaks between the mirrorSNF and the actual addresses.
2024-07-16 17:05:06 -04:00
Justin Bertram
19d8059a4e ARTEMIS-4794 configure pending ack behavior for bridge
When a bridge is stopped it doesn't wait for pending send
acknowledgements to arrive. However, when a bridge is paused it does
wait. The behavior should be consistent and more importantly
configurable. This commit implements these improvements and generally
refactors BridgeImpl to clarify and simplify the code. In total, this
commit includes the follow changes:

 - Removes the hard-coded 60-second timeout for pending acks when
   pausing the bridge and adds a new config parameter (i.e.
   "pending-ack-timeout").
 - Applies the new pending-ack-timeout when the bridge is stopped.
 - Updates existing and adds new logging messages for clarity.
 - De-duplicates code for sending bridge-related notifications.
 - Avoids converting bridge name to/from SimpleString.
 - Removes unnecessary comments.
 - Renames variables & functions for clarity.
 - Replaces the `started`, `stopping`, & `active` booleans with a
   single `state` variable which is an enum.
 - Adds `final` to a few variables that were functionally final.
 - Synchronizes `stop` & `pause` methods to add safety when invoked
   concurrently with `handle` (since both deal with `state` and execute
   runnables on the ordered executor).
 - Reorganizes and removes a few methods for clarity.
 - Relocates `connect` method directly into `ConnectRunnable` (mirroring
   the structure of the `StopRunnable` and `PauseRunnable`).
 - Eliminates unnecessary variables in `ConnectRunnable` and
   `ScheduledConnectRunnable`.
 - Adds test to verify pending ack timeout works as expected with both
   `stop` & `pause` with both regular and large messages.
2024-07-15 18:19:39 +01:00
Timothy Bish
1361e29739 ARTEMIS-4919 Handle Exception from proton transport process
Handle any exceptions from the proton transport and set the error on the
transport for processing in the events dispatch cycle by adding in handling
of the transport error event.
2024-07-15 15:34:21 +01:00
Justin Bertram
0277c6498e ARTEMIS-4914 clarify docs on core + client ID
This commit also adds a couple of tests to verify the documented
behavior works.
2024-07-12 11:03:04 -07:00
Justin Bertram
b8a9d626cd ARTEMIS-4920 strip leading forward slash from IP address 2024-07-12 11:00:53 -07:00
Gary Tully
76877b7fb4 ARTEMIS-4905 fix conversion to millis for periodSeconds comparison in expiry plugin 2024-07-03 16:10:15 +01:00
Justin Bertram
ca73dee630 ARTEMIS-4833 remove redundant type arguments 2024-06-24 10:41:39 -07:00
Justin Bertram
d7cf5dfa44 ARTEMIS-4829 use lambdas consistently
This commit uses lambdas or method references wherever possible. There
are still a handful of places that appear like they could be changed but
couldn't mainly because they use "this" and the meaning of "this"
changes when using a lambda.
2024-06-21 12:01:16 -04:00
Timothy Bish
c6f227cbb8 ARTEMIS-4820 Read Header TTL as unsigned integer to set expiration
When setting expiration on the AMQPMessage the AMQP header TTL value
should be read as an unsigned integer and as such should use the longValue
API of UnsignedInteger to get the right value to set expiration.
2024-06-17 13:32:43 -05:00
Timothy Bish
a6ff05ecd7 ARTEMIS-4817 Check policy credits before checking parent credits
When checking if address federation can be done the manager needs to look
at the policy level settings before looking at federation or connector
level settings for amqp credits.
2024-06-13 15:35:00 -07:00
Clebert Suconic
58e8deac2b ARTEMIS-2892 Interrupted replication could lead to restart problems 2024-06-13 17:48:29 -04:00
Clebert Suconic
106418dc74 NO-JIRA ReplayTest paging tests
No semantic changes in this commit,
I was just exploring the possibility of
issues with paging and large messages combined
and I decided to keep the test.
2024-06-13 10:21:36 -04:00
Clebert Suconic
dd6c74fc1c ARTEMIS-4667 ReplayManager does not work with replication
co-authored: Jean-Pascal Briquet provided the testcase
2024-06-12 17:57:36 -04:00
Clebert Suconic
f4fd259f07 [maven-release-plugin] prepare for next development iteration 2024-06-12 11:58:53 -04:00