Commit Graph

3391 Commits

Author SHA1 Message Date
Timothy Bish fad1f5274c ARTEMIS-4799 Fix broker connection receiver attach handling
The receiver attach in broker connection does not wait for the remote
attach to arrive before creating the broker side receiver plumbing which
leads to the broker treating the remote sender as an anonymous relay when
it is not and should not be. Await the remote attach in response to the
attach sent by the broker connection to finish the link setup but use the
locally defined target address vs the remote to route the incoming messages.
2024-06-07 11:21:42 +01:00
Timothy Bish ac1b483cb4 ARTEMIS-4801 Fix issue with caching address query results
When caching address query results the remote session can be blocked forever
from creating links on an address if the "does not exist" value is cached
since it is never updated again and will always report "does not exist" even
if the address is added manually via management later. The cache state can
cause other issues for long running sessions as well and should be removed
to avoid attach failures for cases where the current broker state could allow
the attach to succeed but the cached entry won't allow it.
2024-06-06 21:07:22 -04:00
Justin Bertram 7ca30e9a63 ARTEMIS-4796 simplify SimpleString API
This commit does the following:

 - deprecate the verbosely named `toSimpleString` static factory
   methods
 - add `of` static factory methods for all the ctors
 - replace any uses of the normal ctors with the `of` counterparts

This makes the code more concise and readable.
2024-06-06 11:53:03 -04:00
Clebert Suconic 047bc98cc3 NO-JIRA Reuse getMessageCount across RealServerTestBase 2024-06-05 17:33:02 -04:00
Robbie Gemmell 4ebb2cd41a ARTEMIS-4790: switch to timeout declarations with default units, tweak a few values 2024-06-05 11:40:33 +01:00
Justin Bertram de0f6ac8f5 ARTEMIS-4760 creating MQTT consumer should work if auto-create-queues is false 2024-06-05 09:06:53 +01:00
Timothy Bish 4daefbf138 ARTEMIS-4792 Allow consumer priority to be added to receiver link address
Allow the Source address to provide consumer priority on the address using the
same option value as a core consumer '?consumer-priority=X'. The change parses
any query string appended to an address and uses the address portion as the
actual receiver address and currently only looks at consumer priority values in
the extracted address query parameters and ignores any other options found. The
existing consumer priority taken from link properties takes precedence over the
value placed on the address query options if both are present.
2024-06-04 17:38:52 +01:00
Robbie Gemmell f5ecc5e219 ARTEMIS-4790: un-nest test classes to simplify 2024-06-04 12:55:00 +01:00
Clebert Suconic aade3b35f6 NO-JIRA Fixing intermittent test failures 2024-06-03 14:44:57 -04:00
Clebert Suconic 180e434b78 NO-JIRA Improving Test Reliability with max-read-page-bytes 2024-06-03 13:19:05 -04:00
Robbie Gemmell 362dbd11ac ARTEMIS-4790: use JUnit 5 for the tests 2024-06-03 10:06:37 -05:00
Clebert Suconic b9bb494b58 NO-JIRA Simplifying Test
No need to test functionality of the mirror. the intention was if the messages would arrive correctly.

Other tests are verfying functionality.
2024-06-01 14:16:40 -04:00
Clebert Suconic ae92b714e3 NO-JIRA Test improvements 2024-05-31 21:59:28 -04:00
Clebert Suconic add773e0fd NO-JIRA more information on test in case of failures 2024-05-31 16:42:25 -04:00
Timothy Bish 0650713b3e NO-JIRA Fix test failed due to missing expectation
Test should add an optional expect close as it is very occasionally able
to hit the wire and the test peer will fail if not expecting it might be.
2024-05-31 13:27:20 -07:00
Timothy Bish 892c1225b0 ARTEMIS-4788 Fix a rare race on broker shutdown in AMQP federation
Race on consumer create and broker shutdown could lead to a deadlocak trying
to access configuration from the policy manager while the federation instance
is trying to shutdown the policy manager.
2024-05-30 19:44:34 -04:00
Clebert Suconic f8dce75ac8 NO-JIRA Fixing imports after removing 2.28 2024-05-30 16:55:55 -04:00
Clebert Suconic f954212765 NO-JIRA removing 2.28 out of MirrorCompatibilityTest
2.28 had a race in its start, where you could eventually lose messages.
This was later fixed, but there's no point on testing the functionality with 2.28 as it will be always broken.
2024-05-30 16:53:36 -04:00
Clebert Suconic 4c6cded2e7 NO-JIRA Fixing intermittent test failure on PagingTest 2024-05-30 09:58:01 -04:00
Clebert Suconic 032597dba3 ARTEMIS-4786 Avoid ConcurrentModificationException while queue.destroy in page
We observed this assert error in the netty collection used for acks:

java.lang.AssertionError: null is not a legitimate internal value. Concurrent Modification?
at io.netty.util.collection.IntObjectHashMap.toExternal(IntObjectHashMap.java:103) ~[netty-common-4.1.109.Final.jar:4.1.109.Final]
at io.netty.util.collection.IntObjectHashMap.access$900(IntObjectHashMap.java:37) ~[netty-common-4.1.109.Final.jar:4.1.109.Final]
at io.netty.util.collection.IntObjectHashMap$PrimitiveIterator.value(IntObjectHashMap.java:650) ~[netty-common-4.1.109.Final.jar:4.1.109.Final]
at io.netty.util.collection.IntObjectHashMap$2$1.next(IntObjectHashMap.java:234) ~[netty-common-4.1.109.Final.jar:4.1.109.Final]

this will avoid the cleanup and rely on GC for the cleanup.

PagingLeakTest is being added to make sure the cleanup is actually not needed.
2024-05-30 09:31:32 -04:00
iliya 6b5f78bfc4 ARTEMIS-4165 Delete messages in case of queue destroy
Messages should be acked even while paging. That will allow page transactions or anything else
to be cleared accordingly.
2024-05-30 09:31:32 -04:00
Clebert Suconic 7fbd1b1a51 NO-JIRA Fixing intermittent failure on LargeMessageTest::testSendServerMessageMetrics
When the Database option is used, the packets on the ServerMessage may still be in transit.
We should sync the file on the Database before we can actually send it, otherwise we would get an assertion error on the send method.
2024-05-29 18:49:46 -04:00
Clebert Suconic 6cd9c9730b [maven-release-plugin] prepare for next development iteration 2024-05-29 12:13:17 -04:00
Clebert Suconic 30ea6eeae0 [maven-release-plugin] prepare release 2.34.0 2024-05-29 12:13:16 -04:00
Justin Bertram 4cd4ecb198
ARTEMIS-4306 fix tests 2024-05-28 21:17:50 -05:00
Clebert Suconic fa06b70134 ARTEMIS-4784 Large Messages should removed from HashMap on ReplicatioEndpoint after being closed 2024-05-28 21:04:33 -04:00
Clebert Suconic 0ca36b7b38 NO-JIRA fixing intermittent test failure on MaxMessagePagingTest 2024-05-28 20:57:53 -04:00
Justin Bertram acc64b184e ARTEMIS-4306 add authn/z cache metrics
This commit includes the following changes:

 - Management operations to get sucess & failure counts for authn and
   authz along with the corresponding audit logging.
 - Export the aforementioned authn & authz metrics.
 - Export metrics for the underlying authn & authz caches including the
   ability to enable/disable them.
 - Update metrics tests to validate tags in addition to keys and values.
 - Update documentation to explain new functionality and clarify
   existing metric tags.
2024-05-28 17:27:54 -04:00
Clebert Suconic 58fc7cbea1 NO-JIRA fix intermittent failure on LargeMessageRetentionTest 2024-05-28 17:25:52 -04:00
Timothy Bish aab1c484b2 NO-JIRA Fix a few cases of federation test fails on unexpected frames
Add a couple optional flags for performatives that might arrive based on the
timing of connection close or remote detach etc.
2024-05-28 11:52:24 -07:00
Timothy Bish f4d9cfdca8 NO-JIRA Fix random test failures if flow is omitted
If the remote detach arrives fast enough it can suppress the flow from
being sent by the broker so the test should mark that as an optional frame.
2024-05-28 16:32:23 +01:00
Justin Bertram c47713454c ARTEMIS-4726 fix original commit
The original commit (1ee3e884b7) for this
issue wasn't completely correct. This commit fixes those issues so that
both the messageCount and scheduledMessageCount are accurate now when
a scheduled message is removed by its ID.
2024-05-23 12:56:45 -05:00
Justin Bertram 7e151ee1ce ARTEMIS-4768 _AMQ_SCHED_DELIVERY msg prop lost after broker restart 2024-05-22 14:10:37 -05:00
Justin Bertram 1ee3e884b7 ARTEMIS-4726 removing scheduled msg from q via mngmnt can cause negative msg count 2024-05-22 14:10:08 -05:00
Robbie Gemmell 7849e2dcbf ARTEMIS-4778: extract base class and classes from parameterized test with subclass that skips to de-parameterize itself 2024-05-21 16:47:20 +01:00
Robbie Gemmell 3c84f26413 ARTEMIS-4778: split two Nested test classes (one parameterized, other not) into their own class files 2024-05-21 16:47:20 +01:00
Robbie Gemmell 243ea9aa01 ARTEMIS-4778: remove spawn check rule, not needed as the tests dont spawn 2024-05-21 16:47:20 +01:00
Robbie Gemmell 3e20687cf3 ARTEMIS-4778: replace various assertEquals checks with more apropriate assertTrue / assertFalse / assertNull 2024-05-21 16:47:20 +01:00
m.napieraj f7b15e351e
ARTEMIS-4772 expose broker plugin classes via management 2024-05-20 13:54:33 -05:00
Clebert Suconic 49189cd7e6 ARTEMIS-4776 Pages may leak as open on Replicated Target
PagingStore is supposed to send an event to replica on every file that is closed.
There are a few situation where the sendClose is being missed and that could generate leaks on the target
2024-05-19 22:09:44 -04:00
Clebert Suconic e47d8ea7c1 ARTEMIS-4774 Fixing PageCounters out of sync after AckMnager retries 2024-05-17 09:47:34 -04:00
Clebert Suconic ae5d98337f NO-JIRA Improve a specific QueueControlTest
There is no need to use our own AddressSettings extension here.
This is just simplifying the test.
2024-05-15 11:55:01 -04:00
Gary Tully 23522fd83d NO-JIRA fix intermittent failure, this test failed on local repeat getting a null from immediate 2024-05-11 20:45:13 -04:00
Clebert Suconic cd563b49ad ARTEMIS-4765 DuplicateIDCache on Mirror Target is using 20K elements instead of amqpCredits
in this commit I'm storing a binding record with the address-settings for the correct size
this is also validating eventual merges of the AddressSettings in the same namespace.
2024-05-09 15:02:15 -04:00
Clebert Suconic abb1a7739e Reverting ARTEMIS-4765
I am gettig a few test failures when running the server in soak with Mirroring.
I will reapply the changes after some testing.
2024-05-07 22:09:33 -04:00
Clebert Suconic 946d3338b3 ARTEMIS-4765 Adjusting test parameters 2024-05-07 20:51:31 -04:00
Clebert Suconic 355c600ea8 ARTEMIS-4765 DuplicateIDCache on Mirror Target is using 20K elements instead of amqpCredits 2024-05-07 20:42:10 -04:00
Clebert Suconic 3c46871f79 ARTEMIS-4743 Allow single line header option
This option would restore the previous presentation form without the line
split on the header.

Also some improvements on loop options
2024-05-06 16:56:48 -04:00
Clebert Suconic f9e2f09207 ARTEMIS-4762 NPE when running 'artemis queue stat' against older server 2024-05-06 16:56:48 -04:00
Justin Bertram eac816f6bd ARTEMIS-4751 upgrade to Apache parent 32
Due to https://github.com/apache/maven-apache-parent/pull/188 the
property `maven.compiler.release` is now being set which precludes
exporting and using any internal Java classes. Therefore this commit
removed references to `--add-exports` from the build, switches to
reflection, and adds `--add-opens` to the runtime JVM parameters.
2024-05-06 13:26:17 -05:00
Clebert Suconic c523458a9a ARTEMIS-4758 Hardening Mirroring
This is a list of improvements done as part of this commit / task:

* Page Transactions on mirror target are now optional.

If you had an interrupt mirror while the target destination was paging, duplicate detection would be ineffective unless you used paged transactions
Users can now configure the ack manager retries intervals.
Say you need some time to remove a consumer from a target mirror. The delivering references would prevent acks from happening. You can allow bigger retry intervals and number of retries by tinkiering with ack manager retry parameters.

* AckManager restarted independent of incoming acks

The ackManager was only restarted when new acks were coming in. If you stopped receiving acks on a target server and restarted that server with pending acks, those acks would never be exercised. The AckManager is now restarted as soon as the server is started.
2024-05-02 17:23:28 -04:00
Timothy Bish d7a7116a4c ARTEMIS-4754 Structure the names used for federation internal queues
When creating internal temporary queues for the federation control links and the
events link we should use a structured naming convention to ease in configuring
security for the federation user where all internal names fall under a root prefix
which can be used to grant read and write access for the federation user. This
change allows security on the wildcarded address "$ACTIVEMQ_ARTEMIS_FEDERATION.#".
This change also includes some further restrictions added to federation resources
and adds support for wildcarding '$' prefixed addresses.
2024-05-02 15:54:13 +01:00
Justin Bertram 8b73335b46 ARTEMIS-4752 upgrade ErrorProne to 2.27.0
The upgraded ErrorProne found some new issues so this commit fixes those
as well.
2024-05-02 10:10:17 +01:00
Clebert Suconic 817dc41ed4 NO-JIRA Test validating multiple mirrors connected to a node 2024-04-30 22:48:38 -04:00
Justin Bertram 614b5cb32f ARTEMIS-1769 return JMS Session's ClientID via JMX 2024-04-27 09:38:54 -05:00
Justin Bertram fc6f0ee9ec ARTEMIS-4740 reduce unnecessary boxing 2024-04-27 09:36:05 -05:00
Timothy Bish 659b17c3a9 ARTEMIS-4745 Allow configuration of the pull consumer batch size
Allow for configuration of the batch size granted to the remote when an
AMQP federation queue receiver is pulling messages only when there is
local capacity to handle them. Some code housekeeping is done here to
make adding future properties a bit simpler and require fewer changes.
2024-04-26 16:29:17 +01:00
Timothy Bish ee7a2c0944 ARTEMIS-4744 Fully support multple host broker connections URIs
Create a new NettyConnector for each connection attempt that is configured from
distinct broker connection URIs which allows for differing TLS configuration
per remote connection configuration.
2024-04-25 18:29:30 +01:00
Clebert Suconic 07ba37a74a Revert "NO-JIRA Test validating multiple mirrors connected to a node"
This reverts commit bf81e5fe31.
2024-04-23 23:04:04 -04:00
Clebert Suconic 1e29602158 ARTEMIS-4733 Fixing test as it is now correctly ignoring MQTT internal queue 2024-04-23 22:44:09 -04:00
Clebert Suconic bf81e5fe31 NO-JIRA Test validating multiple mirrors connected to a node 2024-04-23 22:43:51 -04:00
Justin Bertram f7288c16a6 ARTEMIS-4742 decoding PersistedSecuritySetting fails after upgrade 2024-04-23 10:35:20 +01:00
Clebert Suconic 86f7250d1c ARTEMIS-4733 Fixing test as it is now correctly ignoring MQTT internal queue 2024-04-22 13:29:24 -04:00
Gary Tully 20f345dbe1 ARTEMIS-4709 plugin to enforce connection periodic expiry per acceptor 2024-04-22 10:19:51 -05:00
Gary Tully a4d1f7084d ARTEMIS-4582 - fix typo in smoke test comment 2024-04-22 14:29:16 +01:00
Clebert Suconic 44e78d42a2 ARTEMIS-4733 Internal queues should not be mirrored 2024-04-22 00:06:07 -04:00
Clebert Suconic fdf2ea874b ARTEMIS-4733 Infinite mirror reflections after CreateAddress 2024-04-20 11:07:14 -04:00
Clebert Suconic 09dc445071 ARTEMIS-4731 removing System.out left by accident 2024-04-19 10:36:46 -04:00
Clebert Suconic 6fe53b813a ARTEMIS-4731 OpenWireConnection exception listener should call transport.close();
this is causing a leak for server objects
2024-04-19 00:57:16 -04:00
Justin Bertram 791630fa86 ARTEMIS-1921 setting client ID on core JMS should be reflected in broker RemotingConnection 2024-04-18 11:46:13 +01:00
Clebert Suconic a1c6a5c3b6 NO-JIRA making test more reliable 2024-04-17 18:49:03 -04:00
Clebert Suconic e4a6687cd4 ARTEMIS-4723 Avoid objects left on ThreadLocal from OrderedExecutorFactory
co-authored: Jakob van Kruijssen <cardamon@gmail.com>
2024-04-17 14:19:12 -04:00
Clebert Suconic c0cf01f914 NO-JIRA Speeding up ReceiverNoWaitTest
This test is using 1000 repetitions, each repetition sending 100 messages, which is not really needed on this case.
2024-04-17 11:07:00 -04:00
Clebert Suconic 8880ae92d9 ARTEMIS-4725 Fixing intermittent failure on test 2024-04-16 21:26:01 -04:00
Clebert Suconic eb7b0b0946 ARTEMIS-4725 Mirroring tests using multiple versions 2024-04-16 14:52:59 -04:00
Justin Bertram a1db72395c ARTEMIS-1691 JMS bridge can't be manually restarted after failure 2024-04-15 23:49:13 -04:00
Justin Bertram f64e37622e ARTEMIS-1551 validate properties between JMS clients 2024-04-12 12:02:57 -05:00
Clebert Suconic 375397b811 NO-JIRA Compatiblity test for Mirroring
just keeping a test I wrote for investigating a non issue
2024-04-11 18:39:50 -04:00
Clebert Suconic 162c4f6655 ARTEMIS-4498 Making queues always manageable 2024-04-11 10:28:04 -04:00
a181321 51f39fc34d ARTEMIS-4498 Expose internal queues for management and observability 2024-04-11 10:28:04 -04:00
Clebert Suconic 33599f7727 ARTEMIS-4675 fix and improving test 2024-04-10 17:46:25 -04:00
Justin Bertram 6976c075be
ARTEMIS-4675 fix test 2024-04-10 13:27:12 -05:00
AntonRoskvist a723f634a2 ARTEMIS-4718 Diverted messages are not propertly routed on cluster remote bindings 2024-04-08 14:29:59 -04:00
AntonRoskvist 6c02950db3 ARTEMIS-4510 Add auto-create-destination logic to diverts 2024-04-08 10:53:07 -04:00
Timothy Bish 2c3f772645 ARTEMIS-4666 Correctly set queue match when parsing XML confing
Correct the XML parser for core federation queue match policy loading
to call the setQueueMatch instead of setAddressMatch when reading the
queue match element.
2024-04-05 09:00:04 -07:00
Clebert Suconic 04f6424928 ARTEMIS-4694 Redistribution issues with Almost Large Header
Redistribution would add data to the record which would then in turn make the record too large to redistribute.

The Redistributor and Bridges should not be removed.

Also a warning should be added to warn users about the situation.
2024-04-01 15:39:41 -04:00
Domenico Francesco Bruscino 3598177734 ARTEMIS-4697 Auto reload SSL PEM config sources on change 2024-03-25 14:26:42 +01:00
Justin Bertram 2cc3704551 [maven-release-plugin] prepare for next development iteration 2024-03-19 15:22:47 -05:00
Justin Bertram 900d217bf9 [maven-release-plugin] prepare release 2.33.0 2024-03-19 15:21:32 -05:00
Clebert Suconic 499a4eab6b ARTEMIS-4691 log.warn on inVM closing 2024-03-18 13:31:48 -05:00
Justin Bertram 50fae08b09 ARTEMIS-4657 support better correlation ID compat b/w JMS clients 2024-03-18 13:19:22 +00:00
Gary Tully 2e17a4a007 ARTEMIS-4582 - view and edit permissions, mops. security-settings for rbac on management apis 2024-03-15 16:40:45 +00:00
Justin Bertram 576622571a ARTEMIS-4559 refactor HA docs & code/module naming
This commit does the following:

 - Updates HA docs including the chapter on network isolation (i.e.
   split brain). The network isolation chapter is now more about
   high-level explanation and the HA doc now has all the configuration
   parameters.
 - Changes references to "pluggable quorum voting" to "pluggable lock
   manager." The pluggable functionality really isn't about voting.
   Conceptually is much more like the functionality you'd get from a
   distributed lock so this naming is more clear. Both the docs and the
   code have been changed.
 - Reorganize lock manager modules as sub-modules. The API and RI
   modules are renamed, but that should be OK based on the
   "experimental" tag that's been on this feature up to this point.
 - Remove the "experimental" tag from the lock manager.

These changes will not break folks using the standalone broker. However,
they will break folks embedding the broker *if* they are using the
artemis-quorum-ri or artemis-quorum-api modules or the
o.a.a.a.c.c.h.DistributedPrimitiveManagerConfiguration class.

There are no functional changes here. Renaming these modules is more a
conceptual change to facilitate better documentation and increased
adoption.
2024-03-15 10:18:05 -04:00
Clebert Suconic 82c4df180e ARTEMIS-4690 Remove storageManager.addAddressSettings from the codebase 2024-03-14 13:38:28 -04:00
Justin Bertram 57ed2c30b3 ARTEMIS-4686 reduce number of FilterImpl instances
Whenever we create a queue with a filter we're instantiating 3 different
`org.apache.activemq.artemis.core.filter.impl.FilterImpl` objects. This
is wasteful and entirely avoidable.
2024-03-14 13:27:23 -04:00
Justin Bertram cb2b293810 ARTEMIS-4647 use specified call-timeout on backup connector 2024-03-13 23:22:31 -04:00
Justin Bertram 93e0826a38 ARTEMIS-4687 concurrent use of DocumentBuilder breaking Xpath filtering 2024-03-13 23:22:14 -04:00
Clebert Suconic 32138d64e4 ARTEMIS-4652 Adapting test to not throw XA_RETRY as requested 2024-03-13 20:25:22 -04:00
Clebert Suconic d864780293 ARTEMIS-4684 Internal queues should not redistribute 2024-03-13 17:01:08 -04:00
Clebert Suconic 11b7671960 ARTEMIS-4684 Internal Queues should not redistribute
This is particularly true for the Mirrored SNF queue. Redistribution is not meant for internal queues. If an internal queue happens to have the same name on another server, it should not trigger redistribution when consumers are removed.

It would be possible to work around this by adding an address-setting specific to the address with redistribution disabled.

ClusteredMirrorSoakTest was intermittently failing because of this. For a few seconds while the mirror connection is still being made connections could move messages from one node towards another node if both have the same name.
2024-03-13 09:26:47 -04:00