Commit Graph

2516 Commits

Author SHA1 Message Date
Justin Bertram 01afb572bc ARTEMIS-5072 support non-paged management results 2024-10-01 13:11:40 -07:00
Justin Bertram 022ec167cf ARTEMIS-5071 align naming for management option syntax
This commit aligns the naming for the management option syntax but also
retains support for the old naming.
2024-10-01 13:11:40 -07:00
Justin Bertram a89c452ab7 ARTEMIS-5073 formatting error of AMQ601771 audit log event 2024-10-01 13:15:40 -05:00
Justin Bertram 7320db7e51 ARTEMIS-5057 fill in missing config index + other doc updates 2024-10-01 12:10:10 +01:00
Jean-Pascal Briquet 8fc6f09195 ARTEMIS-5063 messageMoved addition in ActiveMQServerMessagePlugin 2024-09-25 21:59:02 -04:00
Clebert Suconic 30c5e63e0b ARTEMIS-5066 Disable Divert on Mirror Target 2024-09-25 21:57:45 -04:00
Clebert Suconic b084eac71d ARTEMIS-5065 Remove Mirrored Properties on send for OpenWire and Core 2024-09-25 21:57:20 -04:00
Clebert Suconic 1d1f03ad5e ARTEMIS-4971 Warning on Unacked messages through mirror AckManager 2024-09-25 09:52:37 -04:00
Justin Bertram 9bb63b656f ARTEMIS-5042 don't throw Exception when clearing cluster-connection bindings
Throwing an exception when clearing the bindings when a
cluster-connection is closed short-circuits the clearing (and closing)
process. This commit fixes that by simply logging the failure to clear
and continues on.

No new tests are added with this commit. It relies on existing tests.
2024-09-23 12:30:53 -07:00
Clebert Suconic f92a846c21 ARTEMIS-5038 Mirrored ACKs are broken if using multiple priorities on producers
PriorityLinkedList has multiple sub-lists, before this commit PriorityLinkedList::setNodeStore would set the same node store between all the lists.
When a removeWithID was called for an item on list[0] the remove from list[4] would always succeed first. This operation would work correctly most of the time except
when tail and head is being used. Many NullPointerExceptions would be seen while iterating on the list for remove operations, and the navigation would be completely broken.

A test was added to PriorityLinkedListTest to make sure the correct lists were used however I was not able to reproduce the NPE condition in that test.
AccumulatedInPageSoakTest reproduced the exact condition for the NPE when significant load is used.
2024-09-23 11:48:24 -04:00
Justin Bertram 7882c92e5d ARTEMIS-5049 add detailed logging for auth caches 2024-09-19 13:36:08 -07:00
Justin Bertram 90300285c7 ARTEMIS-5052 hash authentication cache keys
Existing tests should suffice to validate this change.
2024-09-19 11:55:03 -07:00
Justin Bertram d9d84f814c ARTEMIS-5048 use java.util.Base64
We've traditionally used org.apache.activemq.artemis.utils.Base64 for
Base64 encoding/decoding. This implementation is based on public domain
code from http://iharder.net/base64.

In Java 8 java.util.Base64 was introduced. I assumed we hadn't switched
to this implementation for performance reasons so I created a simple
JMH-based test to compare the two implementations and it appears to me
that java.util.Base64 is significantly faster than our current
implementation. Using the JDK's class will simplify our code and
improve performance. Also, it should be 100% backwards compatible
since Base64 encoding/decoding is standardized.
2024-09-18 12:15:14 -07:00
Justin Bertram b79db8ed66 ARTEMIS-4781 AMQP message leaking large message file
When an AMQP message is sent over a cluster bridge it is embedded into a
Core message. If the size of the AMQP message is barely beneath the
minLargeMessageSize then the Core message in which the AMQP message is
embedded will become a large message. The on the bridge target when the
embedded AMQP message is extracted from the large Core message it will
not be considered "large." In this situation the file for the large Core
message will leak.

Thanks to Erwin Dondorp for the test. I renamed and refactored it a bit,
but the fundamentals came from Erwin.
2024-09-17 14:42:37 +01:00
Justin Bertram dc64d9be78 ARTEMIS-5045 add test + polish 2024-09-16 10:17:03 +01:00
fogninid 91ddc6a2e7 ARTEMIS-5045 don't change the Micrometer MeterRegistry config
For embedded use-cases the Micrometer MeterRegistry may be passed in
from the application and used for other meters unrelated to the broker.
Therefore, the broker should not change the config of the MeterRegistry
(e.g. by adding common tags to all meters) as the config change(s) may
be incompatible with the needs of the embedding application.
2024-09-16 10:17:03 +01:00
Justin Bertram 46c7cb445c ARTEMIS-4182 support client ID config on bridges
Allow the client ID to be configured on normal bridge as well as
cluster-connection bridges. This makes the bridge connection easier to
identify on the target broker.
2024-09-10 16:46:20 +01:00
Justin Bertram defa911143 ARTEMIS-5028 use a default filter when none is specified for mngmnt ops
This is a small usability improvement for management whereby
invocations of some operations no longer require JSON boilerplate. It
impacts the following operations on the ActiveMQServerControl:

 - listConnections
 - listSessions
 - listAddresses
 - listQueues
 - listConsumers
 - listProducers
2024-09-05 12:04:41 -04:00
Robbie Gemmell 9133cdb466 ARTEMIS-4962: add test, clarify some related comments 2024-09-03 13:52:10 -05:00
Justin Bertram d929c5dd66 ARTEMIS-4962 mitigate NPE in FilterImpl 2024-09-03 13:52:10 -05:00
Justin Bertram 306dfc9327 ARTEMIS-4957 remove unused variables in Redistributor 2024-09-02 14:53:14 +01:00
Justin Bertram 73f18535b5 ARTEMIS-4958 remove unused variable in AddressImpl 2024-09-02 13:00:34 +01:00
Yashashree Chopada f9b912baf0 ARTEMIS-4972 Use Lock in start() for Binding Variables 2024-08-30 10:39:03 -05:00
Clebert Suconic ffafbf350a ARTEMIS-5001 Relax consistency requirement on OperationContext for Mirror send operations.
Send operations should ignore replication, while the ack of the message should wait a round trip in replication.
That will allow us to ack the message faster and still have consistency with its replica.
2024-08-29 14:42:48 -04:00
Justin Bertram d0c83af40e ARTEMIS-5017 bridge leaks ClientSessionFactory instance on reconnect attempt 2024-08-28 19:39:00 -04:00
Clebert Suconic 4352ebae5f ARTEMIS-5010 Addressing comments from PR https://github.com/apache/activemq-artemis/pull/5186 2024-08-28 14:08:49 -04:00
Clebert Suconic 4ba9f67d80 ARTEMIS-5010 AckManager records are not replicated 2024-08-28 11:53:16 -04:00
Justin Bertram f3bcab88dc ARTEMIS-5012 update docs & code to clarify resource-limit-settings 2024-08-28 06:57:19 -07:00
Clebert Suconic 38693370c9 Revert "ARTEMIS-5001 Option to relax sync on journal replication for Mirroring"
This reverts commit d41f01a5aa.
2024-08-26 12:49:42 -04:00
Clebert Suconic d41f01a5aa ARTEMIS-5001 Option to relax sync on journal replication for Mirroring
Say you use Mirroring and journal replication combined.

The target will wait a round trip on replica before sends are done.
It is possible to ignore that rountrip now with an option added into Configuration#mirrorReplicaSync
2024-08-20 16:03:57 -04: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
Justin Bertram ef3b5fa02c ARTEMIS-4985 message priority occasionally broken
The test in this commit was distilled down from a much more complex
integration test that rarely reproduced the problem. It is short and
sweet and reproduces the problem every time.

The problem exists in the iterator's `remove()` method where it uses
`index` instead of `i` when calculating a new highest priority.
2024-08-12 14:55:25 -07:00
Erwin Dondorp 14b6800810 ARTEMIS-4909 use names that match original xml tags 2024-08-06 15:52:31 -05:00
Domenico Francesco Bruscino 4d8ccc4b2f ARTEMIS-4955 Support broker properties from JSON files 2024-08-01 11:16:38 +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 fb2a57f3ed.
2024-07-25 13:01:57 -04:00
Domenico Francesco Bruscino c50f0e7001 ARTEMIS-4951 Support multiple connection router occurrences with same policy 2024-07-25 11:04:09 +01: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
Andy Taylor 9853211913 ARTEMIS-4950 - MBeanGuard throws an NPE
Although this doesnt affect the current console it does the new so needs addressing
2024-07-24 09:50:03 -04:00