Commit Graph

2631 Commits

Author SHA1 Message Date
Clebert Suconic 6c9ddfd460 [maven-release-plugin] prepare for next development iteration 2023-09-14 14:58:10 -04:00
Clebert Suconic 30e4df8ff8 [maven-release-plugin] prepare release 2.31.0 2023-09-14 14:58:07 -04:00
haanhvu 6ec2131e32 ARTEMIS-3057 Add min-disk-free feature
To check if the remaining disk is enough. Alternative to max-disk-usage.
2023-09-14 17:20:43 +01:00
Justin Bertram af2672e79a ARTEMIS-966 MQTT subscription state isn't durable
Durable subscrption state is part of the MQTT specification which has
not been supported until now. This functionality is implemented via an
internal last-value queue. When an MQTT client creates, updates, or
adds a subscription a message using the client-ID as the last-value is
sent to the internal queue. When the broker restarts this data is read
from the queue and populates the in-memory MQTT data-structures.
Therefore subscribers can reconnect and resume their session's
subscriptions without have to manually resubscribe.

MQTT state is now managed centrally per-broker rather than in the
MQTTProtocolManager since there is one instance of MQTTProtocolManager
for each acceptor allowing MQTT connections. Managing state per acceptor
would allow odd behavior with clients connecting to different acceptors
with the same client ID.

The subscriptions are serialized as raw bytes with a "version" byte for
potential future use, but I intentionally avoided adding complex
scaffolding to support multiple versions. We can add that complexity
later if necessary.

Some tests needed to be changed since instantiating an MQTT protocol
manager now creates an internal queue. A handful of tests assume that no
queues will exist other than the ones they create themselves. I updated
the main test super-class so that an MQTT protocol manager is not
automatically instantiated when configuring a broker for in-vm support.
2023-09-13 11:28:53 +01:00
Robbie Gemmell 819e1a9802 NO-JIRA: make various poms indents consistent 2023-09-12 17:03:58 +01:00
Clebert Suconic 6a8cd175dc ARTEMIS-4401 improving JDBC Performance with Paging by a significant factor 2023-09-12 08:34:09 -04:00
Timothy Bish d830f04de8 ARTEMIS-4419 Add federation support to AMQP broker connections
Allows federation of addresses and queues over an outbound AMQP broker
connection and provide configuration via XML or broker propeties.
2023-09-11 16:38:36 -04:00
Clebert Suconic ab6cfe2445 ARTEMIS-4424 Unecessary AMQ212025 (not connected) when no nodes are connected
The exception thrown by serverLocator.connect() should be all you need on such case
and the caller should then be responsible for taking appropriate action.
2023-09-11 11:19:26 -04:00
Clebert Suconic 263a44e262 ARTEMIS-4421 Page counters should work before page rebuild is done 2023-09-10 19:35:38 -04:00
Gary Tully 91debf25db ARTEMIS-4418 use consumer delivery sequence in messageId for openwire broker sequence id, makes delivery count calculation independent of message order 2023-09-07 15:24:35 +01:00
Clebert Suconic 47a3ee5304 ARTEMIS-4413 Improve reliability of CheckTest.testNodeCheckTopology
I have also made some other quick changes to make testing here easier.
2023-09-01 11:53:58 -04:00
Gary Tully b11945e0c7 ARTEMIS-4410 - process deliveries before removing consumer on session close, ensure strict order for a single consumer 2023-09-01 12:52:58 +01:00
Justin Bertram 60ac0f32a5
ARTEMIS-4396 fill in some gaps 2023-08-31 11:35:00 -05:00
Alexey Markevich 50a1824c02 ARTEMIS-4349: Replace Guava cache with Caffeine
Combination of changes from Alexey Markevich with updates from Robbie Gemmell. See PRs for detail.

This closes #4584.
This closes #4540.
2023-08-29 16:00:53 +01:00
Justin Bertram 56c8afe934 ARTEMIS-4405 wrong user logged for authz audits 2023-08-29 15:35:22 +01:00
Robbie Gemmell 6d4fad7a4c ARTEMIS-4391: fix break in findText from prior changes
Only report finding matching log message if all requested entries are present in it, not just the last one provided.

Also fix the updated AssertionLoggerHandler usage within AddressFullLoggingTest, ensure it is active across the full period expected messages can happen and doesnt miss early ones.
2023-08-25 14:42:55 +01:00
Gary Tully 84c16f1a0d ARTEMIS-4378 ignore address federation config if connection is configured as pull, consumerWindowSize=0 2023-08-25 11:15:07 +01:00
Alexey Markevich 67f9c9d92d ARTEMIS-4391 tests: rework AssertionLoggerHandler 2023-08-17 05:47:24 -04:00
Yashashree Chopada ab3e67a24b ARTEMIS-4389 The word "mesage" should be corrected to "message" 2023-08-16 09:05:55 -04:00
Clebert Suconic 019b682c70 ARTEMIS-4388 Topic Distribution tests 2023-08-14 13:17:46 -04:00
Šmucr Jan 2f2dacdd34 ARTEMIS-4387 Fix empty consumer filter string leak 2023-08-14 10:06:25 +02:00
Clebert Suconic 064018a3e9 ARTEMIS-4384 cluster verify CLI command
ARTEMIS-4385 Expand StatQueue to visualize --clustered
2023-08-11 19:12:44 -04:00
Mike Artz c5f0e3400c ARTEMIS-4159 Support duplicate cache size configuration per address
This commit introduces support for configuring a specific Duplicate ID cache size per address in the Artemis server. Previously, there was only a global setting for the ID cache size, but now each address can have its own cache size.

The changes include the addition of a new configuration property id-cache-size in the Artemis server configuration file. This property can now be specified under each address setting in the configuration file, and its value will determine the Duplicate ID cache size for that particular address. If the id-cache-size property is not specified for an address, it will use the global setting.

The test cases have been updated to cover this new functionality, and integration test have been added to verify that address-specific cache sizes work as expected.

Documentation has been added to address-settings.adoc, configuration-index.adoc and duplicate-detection.adoc
2023-08-04 10:25:08 -05:00
Clebert Suconic 93ee61e35c ARTEMIS-4372 Implement Pico-cli and script auto-complete
ARTEMIS-4375 Implement artemis shell using JLine3 integrated with auto-completion from picocli

This commit involves two JIRAs. One is adding PicoCLI and the next is Using JLine3 and implement a shell.
I have tried to keep these commits separate but these changes became interdependent hence the two JIRAs are squashed in this commit.
2023-07-31 10:40:27 -04:00
Justin Bertram 22e3b09b9c ARTEMIS-4370 update existing topic alias for MQTT 5 publisher 2023-07-24 12:55:05 -05:00
Justin Bertram 7048d9d4a5 [maven-release-plugin] prepare for next development iteration 2023-07-20 14:39:21 -05:00
Justin Bertram f05b63b8a1 [maven-release-plugin] prepare release 2.30.0 2023-07-20 14:36:44 -05:00
Clebert Suconic 6b61e9eaaf NO-JIRA Moving CLI Management to use ManagementHelper 2023-07-20 15:01:58 -04:00
Justin Bertram c8d685ee87 ARTEMIS-4365 MQTT retain flag not set correctly 2023-07-19 12:50:05 +01:00
Clebert Suconic 677d71b8e7 ARTEMIS-4366 Missing Mirrored ACKs with MULTICAST and subscriptions 2023-07-17 20:19:06 -04:00
Justin Bertram cce565e78f ARTEMIS-4353 clean up Maven dependencies
This commit contains the following changes:
 - eliminate used, undeclared dependencies
 - eliminate unused, declared dependencies
 - fix scope for test dependencies
 - eliminate org.hamcrest completely as its use involved deprecated code
   as well as dependencies from multiple versions
2023-07-14 14:03:41 +01:00
a181321 68e400b45c ARTEMIS-4184 Bidges with concurrency not cleared properly on config reload 2023-07-13 16:16:08 -04:00
Clebert Suconic b967e6d940 ARTEMIS-4362 Produce log.warn when the system cannot depage because of pending acks 2023-07-13 16:15:45 -04:00
Domenico Francesco Bruscino 451d03fd75 ARTEMIS-4332 Add management method to close stuck server sessions
In rare cases a store operation could silently fails or starves, blocking the
related server session and all delivering messages. Those server sessions can
be closed adding a management method that cleans their operation context
before closing them.
2023-07-13 10:32:14 -04:00
Clebert Suconic 6ee27224a5 ARTEMIS-4352 Avod Deadlock in case the SecurityManager is reusing the Netty executor.
If the Security Manager is using Netty, and in particular the same Netty connection,
you could run into a deadlock / starvation.

This is particularly true in the Wildfly case where they reuse the same connection for everything via XNIO.
2023-07-10 11:00:19 -04:00
Robbie Gemmell 5b86f8d59e ARTEMIS-4346: move stomp test client to artemis-test-support systest helper module 2023-07-05 09:52:48 -05:00
Robbie Gemmell cb9e1fedc8 ARTEMIS-4345: update to Error Prone 2.20.0 and fix up new errors 2023-07-05 09:40:24 +01:00
Justin Bertram b316272e14 ARTEMIS-4311 fix typo 2023-06-20 17:50:19 +01:00
Gary Tully a8b4ee1992 ARTEMIS-4314 support queue federation batchOnCapacity via consumerWindowSize=0 2023-06-16 15:44:51 +01:00
Clebert Suconic ae554b43db [maven-release-plugin] prepare for next development iteration 2023-06-14 18:20:58 -04:00
Clebert Suconic 2be5c54cd0 [maven-release-plugin] prepare release 2.29.0 2023-06-14 18:20:45 -04:00
a181321 0f4982913f ARTEMIS-4185 Resending compressed message uncompressed throws exception in consumer 2023-06-14 17:08:40 -04:00
Clebert Suconic ef3a91bdfb ARTEMIS-4313 Retry Bridge when destination full and configured to FAIL 2023-06-14 14:06:35 -07:00
Justin Bertram 3ff8419a4b ARTEMIS-4312 dupes w/redistribution and multicast
Multiple multicast queues on the same address can lead to duplicate
messages during redistribution in a cluster.
2023-06-14 11:19:56 -04:00
a181321 582a689cdb ARTEMIS-4186 Ability to set compressionLevel for compressLargeMessages 2023-06-14 04:42:38 -07:00
Domenico Francesco Bruscino bd3c057559 ARTEMIS-4251 Support CORE client failover to other live servers
Improve the CORE client failover connecting to other live servers when all
reconnect attempts fails, i.e. in a cluster composed of 2 live servers,
when the server to which the CORE client is connected goes down the CORE
client should reconnect its sessions to the other liver broker.
2023-06-13 08:24:02 -07:00
Peter Brady 2f5463c960 ARTEMIS-4309 Read all bytes of compressed objmsg
Continually read from the compressed byte[] into
the decompressed object

Add test to validate large (>1024 bytes) compressed data can be
deserialized properly
2023-06-13 05:50:37 -07:00
Justin Bertram c96a074b53 ARTEMIS-4292 support more Micrometer system metrics
This commit exposes Micrometer's system metrics for:
 - file descriptors
 - processor
 - uptime
2023-06-13 04:58:59 -07:00
Clebert Suconic cea9ff6667 ARTEMIS-4259 JMS consumer + FQQN + selector not working
co-authored with Justin Bertram
2023-06-07 15:15:21 -07:00
Clebert Suconic f03b775ac5 NO-JIRA fixing intermittent test failure 2023-06-07 18:10:42 -04:00
Justin Bertram e7de2c7001 ARTEMIS-4297 allow regex in no-cache exception config 2023-05-31 11:37:28 -07:00
Roelof Naude 40425d422a ARTEMIS-4291 Add the "broker" tag in a consistent manner to all exported metrics.
Some scrapers, e.g. prometheus, add an "instance" tag. This value may not be the same as
the broker name, which results in these metrics becoming more difficult to match up with
the corresponding broker.
2023-05-31 12:45:32 -05:00
Justin Bertram 15aafe0b70 ARTEMIS-4293 add mngmnt ops to clear authn/z caches 2023-05-26 16:47:33 +02:00
Clebert Suconic ff4c697e25 NO-JIRA ignoring invalid test 2023-05-25 20:04:50 -04:00
Justin Bertram b97d711733 ARTEMIS-4286 sometimes federated consumer won't stop 2023-05-24 18:22:33 +01:00
Clebert Suconic c7f28ad70b ARTEMIS-4290 Isolating more threads, removing disableThreadChecks 2023-05-24 11:16:49 -04:00
Clebert Suconic 0c8adee37a ARTEMIS-4290 Separating some integration tests into legacy-integration-tests
legacy-integration-tests is being created to hold LDAP Tests (or any other tests that won't play well with keeping threads clean)
it will have fork-mode=always on the maven-surefire-plugin
2023-05-23 13:52:03 -07:00
Clebert Suconic e719622de5 ARTEMIS-4285 Limit number of redelivery records 2023-05-19 13:59:28 -07:00
Justin Bertram a57c48ec55 ARTEMIS-4275 add ID to consumer notifications 2023-05-19 16:27:36 -04:00
Justin Bertram 3a48258f7d ARTEMIS-2824 clientID not set on some notifications 2023-05-19 16:03:16 -04:00
Domenico Francesco Bruscino c47d15c12a ARTEMIS-4283 Fail fast CORE client connect on closing
ServerLocatorImpl waits for topology after connecting a new session factory.
It should interrupt waiting for topology when it is closed to fail fast.
2023-05-19 08:30:58 -07:00
Gary Tully b664022a1e ARTEMIS-4284 - sync operwire remove consumer with the operation context to ensure prefetched messages are available to the next consumer in order
This closes #4483
2023-05-18 09:33:05 -04:00
Clebert Suconic 03afbedfe3 ARTEMIS-4282 Large Header may break the broker 2023-05-17 16:04:54 -07:00
Clebert Suconic ec54576323 ARTEMIS-4281 Queue Reaper should not remove non empty queues on initial check 2023-05-17 15:58:54 -07:00
Clebert Suconic f082b9c5d1 ARTEMIS-4199 Adding test for open transaction on reset call 2023-05-15 07:08:05 -07:00
Clebert Suconic bea39f6692 ARTEMIS-4278 Incorrect Paging Counters with Prepared Transactions 2023-05-11 13:50:00 -07:00
Justin Bertram c9c819aa88 ARTEMIS-4274 push masked credential support into core client 2023-05-10 13:55:39 -07:00
Justin Bertram 5f476896e9 ARTEMIS-4258 make tests faster & more robust 2023-05-09 09:57:32 -07:00
Justin Bertram 6ba54964bd ARTEMIS-4258 delayBeforeDispatch not working with OpenWire 2023-05-08 15:11:52 -05:00
Justin Bertram c2bada6a77 ARTEMIS-4267 original exception lost for NoCacheLoginException
When skipping the authentication cache details for the original
exception are not logged.

This commit ensures these details are logged and adopts the
ExceptionUtils class from Apache Commons Lang in lieu of the previous
custom implementation.
2023-05-08 17:01:35 +02:00
Justin Bertram 6254c140e3 ARTEMIS-4212 handful of updates
- fix syntax used for 'addresses' CLI option
 - update release notes
 - enforce new semantics on parsing & add test
2023-05-04 12:25:15 -07:00
Domenico Francesco Bruscino fb1fa6a95f ARTEMIS-4244 Fix testSetWebBindingProperties 2023-05-03 13:27:14 +02:00
Domenico Francesco Bruscino d2a4837b69 ARTEMIS-4245 Expose web SNI settings 2023-05-02 17:18:10 +01:00
Clebert Suconic 0c80a6435f ARTEMIS-4253 Disabling invalid management test over core protocol 2023-05-01 11:28:00 -04:00
Justin Bertram acd6605ebf ARTEMIS-4212 fix tests 2023-04-28 06:54:16 -07:00
Justin Bertram 1fa5c761c6 ARTEMIS-4212 fix management address issues 2023-04-28 06:54:16 -07:00
Domenico Francesco Bruscino cc9db6b2f7 ARTEMIS-4244 Set web config using system properties 2023-04-26 17:07:32 -05:00
Justin Bertram 74fa4ca758 ARTEMIS-4212 fix sending msgs to address w/mismatching routing types
When sending, for example, to a predefined anycast address and queue
from a multicast (JMS topic) producer, the routed count on the address
is incremented, but the message count on the matching queue is not. No
indication is given at the client end that the messages failed to get
routed - the messages are just silently dropped.

Fixing this problem requires a slight semantic change. The broker is now
more strict in what it allows specifically with regards to
auto-creation. If, for example, a JMS application attempts to send a
message to a topic and the corresponding multicast address doesn't exist
already or the broker cannot automatically create it or update it then
sending the message will fail.

Also, part of this commit moves a chunk of auto-create logic into
ServerSession and adds an enum for auto-create results. Aside from
helping fix this specific issue this can serve as a foundation for
de-duplicating the auto-create logic spread across many of the protocol
implementations.
2023-04-25 16:08:31 -05:00
Clebert Suconic 2ffd94e682 ARTEMIS-4253 disabling a few ActiveMQServerControlUsingCoreTest tests
Some of these tests don't make sense when using the Core protocol due to noise introduced
2023-04-25 08:11:10 -07:00
Clebert Suconic fea84e39f5 ARTEMIS-4247 BrokerClustering vs Mirror code improvements 2023-04-25 08:10:58 -07:00
Clebert Suconic 0eefc38d93 ARTEMIS-4250 Spawning VM to avoid thread leaking on ShutdownOnCriticalIOErrorMoveNextTest 2023-04-24 08:06:00 -07:00
Domenico Francesco Bruscino ef4501292e ARTEMIS-4252 Fix flaky QuorumFailOverTest tests 2023-04-24 06:11:51 -07:00
Justin Bertram fde9d223ae ARTEMIS-4249 failure to create internal MQTT consumer can orphan sub q 2023-04-21 12:32:21 -05:00
Clebert Suconic 9bac93e25e ARTEMIS-4248 Fixing PagingTest::testSimpleResume
testSimpleResume is intermittently failing.
This test is forcing another page, while cleanup is happening on the background.
ForceAnotherPage may not put the address back into paging if this happened right after the cleanup call.
To fix the test, we should call startPaging after forceAnotherPage is called.
2023-04-21 11:35:45 -04:00
Clebert Suconic 2a81a0a3c6 ARTEMIS-4247 Inconsistencies between Broker Clustering and AMQP Mirror
- activemq.notifications are being transferred to the target node, unless an ignore is setup
- topics are being duplicated after redistribution
- topics sends are being duplicated when a 2 node cluster mirrors to another 2 node cluster, and both nodes are mirrored.
2023-04-21 10:30:32 -05:00
Domenico Francesco Bruscino 4e77a34c29 ARTEMIS-4243 Fix export of bindings without routing types 2023-04-20 10:01:36 +02:00
Justin Bertram 673481369f ARTEMIS-4241 paging + FQQN is broken 2023-04-17 21:51:08 +02:00
Clebert Suconic 4eb978b931 ARTEMIS-4233 Disabling RefCounting debug and error after paged messages 2023-04-12 16:40:26 -07:00
Justin Bertram 8abdee29e9 ARTEMIS-4235 fix map msg conversion from OpenWire->core 2023-04-10 10:28:07 +01:00
Justin Bertram 6851e7d677 ARTEMIS-4204 connectors added via management are not durable 2023-04-06 11:22:18 -05:00
Clebert Suconic 6d3dbc4383 ARTEMIS-4233 Large Message Issues After Failed Clients
- interrupted message breaking reference counting
After the server writing to the client is interrupted in AMQP, the reference counting was broken what would require the server restarted
in order to cleanup the files of any interrupted sends.

- Removed consumer during large message delivery damaging large messages
If the consumer failed to deliver messages for any reason, the message on the queue would be duplicated. what would wipe out the body of the message
and other journal errors would happen because of this.

extra debug capabilities added into RefCountMessage as part of ARTEMIS-4206 in order to identify these issues
2023-04-06 07:40:01 -07:00
Justin Bertram 448a6dee02 ARTEMIS-4209 avoid double 'ID:' for 'User ID' when browsing AMQP msgs 2023-03-28 16:21:13 -05:00
Clebert Suconic 41b2ec7efb NO-JIRA Limitting load on PotentialOOMELoggingTest
This test was generating too much data just to log an error message.
The same error message would happen with just 100 queues.
2023-03-28 09:27:19 -04:00
Clebert Suconic 6de9e30c46 NO-JIRA Limiting load on NIOJournalCompactTest
This test is boundless adding data into the journal when there are no syncs.
That's creating 600MIB worth of data on our CIs, and this tests was not meant to be acting like a soak test.
I'm limitting the load the test can generate with a TokenBucketLimiterImpl now.
2023-03-28 09:27:00 -04:00
Clebert Suconic 880fe86ddc NO-JIRA Moving MQTT5Test::testMaxMessageSize into a soak-test
MQTT5Test::testMaxMessageSize is spiking the memory on the integration testsuite all the way up to 1.5G
what makes this test more like a soak test.

The test is now converted to use a real server like other Soak Tests.
2023-03-27 17:47:50 -07:00
Clebert Suconic 40e9d4ebf7 NO-JIRA Trying to fix intermittent failure on ShutdownOnCriticalIOErrorMoveNextTest 2023-03-27 15:17:48 -04:00
Clebert Suconic 15d39a14ea ARTEMIS-4207 Improved fix on LargeMessage Redistribution
This fix will delay the message.copy to the redistributor itself.
Meaning no copy would be performed if the redistribution itself failed.

No need to remove a copy any longer
2023-03-27 10:45:07 -07:00
Clebert Suconic d730d1a684 NO-JIRA Testsuite speedup: proper JDBC drop from derby 2023-03-18 15:44:03 -07:00
Domenico Francesco Bruscino aaa8627795 ARTEMIS-4211 Fix record message id for federated queue consumers
The federated queue consumer has to generate a new id for the messages
received from the upstream broker because they have an id generated by
the store manager of the upstream broker.

Co-authored-by: Clebert Suconic <clebertsuconic@apache.org>
2023-03-18 08:52:21 -07:00
Clebert Suconic 4babdab18c NO-JIRA Cleanup MBeanServer usage in the testsuite as it is leaking
Basically I started the testsuite and attached check leak with "java -jar check-leak.jar --pid <pid> --report testsuite-report --sleep 1000" and saw the allocations of this were pretty high.
2023-03-15 12:42:12 -07:00
Clebert Suconic 2c037386b6 ARTEMIS-4206 Unreferenced AMQP Large Messages not removed right away, requiring a reboot 2023-03-15 05:57:51 -07:00
Justin Bertram 68c5bed159 ARTEMIS-4200 configurable link-stealing for MQTT 2023-03-10 17:51:24 -06:00
Justin Bertram 9b4204b345 ARTEMIS-4201 send proper MQTT disconnect code on stolen link 2023-03-10 17:51:24 -06:00
Clebert Suconic 257dd86ae2 ARTEMIS-4193 Large Message Files orphaned after server killed
This fix is scanning journal and paging for existing large messages. We will remove any large messages that do not have a corresponding record in journals or paging.
2023-03-09 08:35:51 -08:00
Domenico Francesco Bruscino 7a0bf52ed8 ARTEMIS-4190 Fix config-delete-queues when address changes 2023-03-09 09:42:57 -06:00
Domenico Francesco Bruscino bb08a573eb ARTEMIS-3640 Use client connectors for HA 2023-03-09 11:20:51 +00:00
Gary Tully 00cae02ca4 ARTEMIS-4196 - set message routing type in mqtt publish 2023-03-08 14:30:30 -06:00
Clebert Suconic ed5322c54f NO-JIRA Fixing intermittent failure on ActiveMQServerControlUsingCoreTest
This failure was because of a noise from the test itself. as the test is creating a producer, and it's measuring for a producer from the test.
it makes no sense to fix it for OverCore.. we just ignore it on UsingCore
2023-03-08 12:13:17 -05:00
Justin Bertram 97c78525da ARTEMIS-4181 make try-with-resources style consistent 2023-03-03 08:40:51 -06:00
Justin Bertram b76c672305 ARTEMIS-4162 support deleting addresses & queues w/o usage check
There are certain use-cases where addresses will be auto-created and
never have a direct binding created on them. Because of this they will
never be auto-deleted. If a large number of these addresses build up
they will consume a problematic amount of heap space.

One specific example of this use-case is an MQTT subscriber with a
wild-card subscription and a large number of MQTT producers sending one
or two messages a large number of different MQTT topics covered by the
wild-card. Since no bindings are ever created on any of these individual
addresses (e.g. from a subscription queue) they will never be
auto-deleted, but they will eventually consume a large amount of heap.
The only way to deal with these addresses is to manually delete them.

There are also situations  where queues may be created and never have
any messages sent to them or never have a consumer connect. These
queues will never be auto-deleted so they must be deleted manually.

This commit adds the ability to configure the broker to skip the usage
check so that these kinds of addresses and queues can be deleted
automatically.
2023-03-02 19:17:03 -06:00
Justin Bertram 6874556f7c ARTEMIS-4188 auto-create + MDB using selector on queue 2023-03-02 16:26:12 -08:00
Justin Bertram fb169bc4af ARTEMIS-4172 sending large msg via core skips plugins & audit log 2023-02-16 13:34:29 -08:00
Justin Bertram 82fc42987a ARTEMIS-4171 potential large message file leak 2023-02-16 13:34:29 -08:00
Clebert Suconic a2ba6ed298 ARTEMIS-4161 AMQP and OpenWire leaking leaking objects in certain conditions
The issue identified with AMQP was under Transaction usage, and while opening and closing sessions.
It seems the leak would be released once the connection is closed.

We added a new testsuite under ./tests/leak-tests To fix and validate these issues
2023-02-16 12:10:54 -08:00
Clebert Suconic 69e21a0eb7 ARTEMIS-4163 Fixing openwire race while chunkSend is happening 2023-02-09 19:58:40 -05:00
Clebert Suconic 1caa406bbf NO-JIRA Adding a test to verify TX in OpenWire Large Message Handling 2023-02-08 09:29:11 -05:00
Justin Bertram 8f30347b18 ARTEMIS-4143 improve mitigation against split-brain with shared-storage
Configurations employing shared-storage with NFS are susceptible to
split-brain in certain scenarios. For example:

  1) Primary loses network connection to NFS.
  2) Backup activates.
  3) Primary reconnects to NFS.
  4) Split-brain.

In reality this situation is pretty unlikely due to the timing involved,
but the possibility still exists. Currently the file lock held by the
primary broker on the NFS share is essentially worthless in this
situation. This commit adds logic by which the timestamp of the lock
file is updated during activation and then routinely checked during
runtime to ensure consistency. This effectively mitigates split-brain in
this situation (and likely others). Here's how it works now.

  1) Primary loses network connection to NFS.
  2) Backup activates.
  3) Primary reconnects to NFS.
  4) Primary detects that the lock file's timestamp has been updated and
     shuts itself down.

When the primary shuts down in step #4 the Topology on the backup can be
damaged. Protections were added for this via ARTEMIS-2868 but only for
the replicated use-case. This commit applies the protection for
removeMember() so that the Topology remains intact.

There are no tests for these changes as I cannot determine how to
properly simulate this use-case. However, there have never been robust,
automated tests for these kinds of NFS use-cases so this is not a
departure from the norm.
2023-02-03 10:40:08 -05:00
Timothy Bish d1b3610f68 ARTEMIS-2431 Stop processing Begin and Attach frames if open fails
For pipelined open cases the events processing should ignore additional begin
and attach events if the open event handler closes the connection to avoid the
processing throwing additional exceptions and replacing the error condition in
the connection with an unrelated error about NPE from the additional events.
2023-02-01 17:53:32 -05:00
Clebert Suconic 2378d187af [maven-release-plugin] prepare for next development iteration 2023-01-31 07:22:48 -05:00
Clebert Suconic 893e1e7916 [maven-release-plugin] prepare release 2.28.0 2023-01-31 07:22:47 -05:00
Clebert Suconic 764db34e9b ARTEMIS-3178 Page Limitting (max messages and max bytes)
I am adding three attributes to Address-settings:

* page-limit-bytes: Number of bytes. We will convert this metric into max number of pages internally by dividing max-bytes / page-size. It will allow a max based on an estimate.
* page-limit-messages: Number of messages
* page-full-message-policy: fail or drop

We will now allow paging, until these max values and then fail or drop messages.

Once these values are retracted, the address will remain full until a period where cleanup is kicked in by paging. So these values may have a certain delay on being applied, but they should always be cleared once cleanup happened.
2023-01-30 18:19:45 -05:00
Justin Bertram bea8d21ecd ARTEMIS-4145 MQTT shared sub queue may be inadvertently removed
o.a.a.a.c.p.m.MQTTSubscriptionManager#removeSubscription() had a chunk
of code from 971f673c60 removed. That code
was added under the assumption that there should only ever be one
consumer per queue. That was true for MQTT 3.x, but it's not always true
for MQTT 5 due to shared subscriptions. However, the tests from that
commit all still pass even with it removed now (as well as all the other
MQTT tests) so I think it's safe.
2023-01-30 12:09:40 -05:00
Justin Bertram 49f8846861 ARTEMIS-4146 reauthenticated subjects are not cached 2023-01-30 12:02:08 -05:00
Timothy Bish 4785995f58 ARTEMIS-3357 Properly compare the subscription address on client re-attach
If the client is using address prefixes to define the routing type along with
durable subscriptions then on re-attach the compairon to check if the subscription
address has changed needs to remove the prefix when comparing against the address
since the prefix isn't propagated when creating the address and will always fail
resulting in the subscription queue being deleted in error.
2023-01-27 16:28:02 -05:00
Timothy Bish 6e10908c50 ARTEMIS-3153 Add tests for address prefixes for AMQP links
Adds some tests to validate that the destination prefixes if set and
are used properly by the client are honored over the default address
auto create routing type condiguration.
2023-01-26 12:56:39 -05:00
Domenico Francesco Bruscino ac7b0e85fb ARTEMIS-4113 Fix NPE for backup brokers with connection routers
The nodeID on backup brokers is available only after they become live.
2023-01-26 09:55:31 -05:00
Timothy Bish ca66028b2a ARTEMIS-4132 AMQP Receiver default to ANYCAST when creating an address
When an AMQP client subscribes to a new address (non-existing) with a receiver link, the
address is created with routing type ANYCAST regardles of the default address creation
configuration of the broker, and ignores even the broker wide default of MULTICAST.
2023-01-23 13:09:36 -05:00
Clebert Suconic 0d3cd8d880 ARTEMIS-4136 Mirrored sync replica
I am adding an option sync=true or false on mirror. if sync, any client blocking operation will wait a roundtrip to the mirror
acting like a sync replica.
2023-01-23 12:38:11 -05:00
Justin Bertram b0ba8cae24 ARTEMIS-4137 MQTT sub-queue clean-up can fail due to auth 2023-01-23 16:18:03 +01:00
Justin Bertram 8a974fe89c ARTEMIS-4133 msg w/null prop value can't be consumed via STOMP 2023-01-17 12:18:49 -06:00
Ryan Highley bb8761fcd2 ARTEMIS-3790 Support masked JMS credentials
Adds standard username and password value unmasking for JMS
ActiveMQConnectionFactory instances
2023-01-17 10:25:46 -06:00
Andy Taylor b02002fc66 ARTEMIS-3875 - adding consumer and producer metrics
https://issues.apache.org/jira/browse/ARTEMIS-3875
2023-01-13 15:49:44 -05:00
Justin Bertram c190d1c72f ARTEMIS-4127 refactor multiprotocol JMS tests in AMQP package
Over time org.apache.activemq.artemis.tests.integration.amqp has become
home to many multi-protocol JMS tests even though the package is really
for AMQP-specific tests. This commit splits those tests out into their
own package.

This is a preliminary step to clarify these tests before I add another
one for a different issue.
2023-01-12 16:19:48 -05:00
Clebert Suconic abd62665ce ARTEMIS-4125 Fixing AutoCreateJmsDestinationTest::testAutoCreateOnSubscribeToTopic 2023-01-12 16:17:28 -05:00
Justin Bertram e531c61c95 ARTEMIS-4126 address not auto-created when sending MQTT msg 2023-01-09 10:46:06 -06:00
Justin Bertram 114302a093 ARTEMIS-4125 address can be removed inadvertently
When the last non-durable subscriber on a JMS topic disconnects the
corresponding queue representing the subscription is deleted as
expected. However, the queue's address will also be deleted no matter
what, which is *not* expected.
2023-01-09 10:45:56 -06:00
Justin Bertram 56167b5e13 ARTEMIS-4122 support timed refresh for LegacyLDAPSecuritySettingPlugin
Some LDAP servers (e.g. OpenLDAP) do not support the "persistent search"
feature and therefore the existing "listener" feature does not actually
fetch updates. This commit implements a "pull" feature controlled by a
configurable interval equivalent to what is implemented in the cached
LDAP authorization module from ActiveMQ "Classic."
2023-01-07 22:54:35 -06:00
Justin Bertram c354c8e642 ARTEMIS-4016 fixing tests 2023-01-07 22:54:26 -06:00
Justin Bertram bf1d81e09e ARTEMIS-3707 fixing tests
A handful of tests started to fail after the original fix was committed.
This commit fixes those failures mainly by using a mock
`TransactionSynchronizationRegistry`.

I changed `o.a.a.a.r.ActiveMQRAManagedConnection#checkTransactionActive`
slightly because `getTransactionStatus` will never return `null` unlike
`getTransaction` would. The semantics should still be the same, though.
2023-01-07 22:54:17 -06:00
Robbie Gemmell 0dcb3aba2e ARTEMIS-4110: update a few more files introduced recently from older PRs being merged 2022-12-20 09:45:52 +00:00
AntonRoskvist 04ddeb647c ARTEMIS-4016 Bridges created by management operations are removed on restart and config reload 2022-12-17 10:10:10 -06:00
AntonRoskvist 6dd7965906
ARTEMIS-3834 include paged messages sending to DLA 2022-12-17 00:03:23 -06:00
Clebert Suconic 9816e1b999 ARTEMIS-3085 Fixing IOCriticalErrorListenerTest 2022-12-16 05:32:59 -05:00
Clebert Suconic f5d9eed9ce ARTEMIS-3085 Fixing test and proper wiring listener 2022-12-16 05:27:18 -05:00
Somdatta 00592d6dd8
ARTEMIS-3085 support custom IOCriticalErrorListener 2022-12-15 16:35:20 -06:00
AntonRoskvist 5c2a0d744c
ARTEMIS-4091 - Make scaleDown target more deterministic 2022-12-15 16:05:26 -06:00
Justin Bertram 038e95adb9 ARTEMIS-4109 unable to auto-delete q for MQTT retained msg 2022-12-15 13:44:55 -06:00
Justin Bertram cbd9f63a9d ARTEMIS-4115 ArrayIndexOutOfBoundsException when dup cache size is 0
Allow setting id-cache-size to 0 from broker.xml and ensure the broker
handles this gracefully. Previously you could only set the cache size to
0 via broker properties or programmatically and it would throw an
ArrayIndexOutOfBoundsException when adding an item to the cache.
2022-12-15 13:01:31 -06:00
Clebert Suconic 1de10671f8 ARTEMIS-3609 Do not use netty thread for thread completion listener 2022-12-15 10:35:43 -05:00
Clebert Suconic af9bd7b84a ARTEMIS-4065 Optimize page counters to not use the journal as often
- From now on we will save snapshots of page-counters on the journal (basically for compatibility with previous verions).
  And we will recount the records on startup.

- While the rebuild is being done the value from the previous snapshot is still available with current updates.
2022-12-15 10:30:18 -05:00
Justin Bertram ba2cbddd6b
ARTEMIS-3871 fix MQTT shared sub q naming semantics 2022-12-13 14:45:13 -06:00
Clebert Suconic ef67ea0e26 NO-JIRA Fixing intermittent failure on JMSTransactionTest
We can't block the netty thread (which is used by the Listener) otherwise everything just blocks and nothing works on the client
2022-12-13 13:35:59 -05:00
Clebert Suconic f6050b842e NO-JIRA fixing intermittent failure on ActiveMQServerControlTest 2022-12-13 12:17:26 -05:00
Justin Bertram b5e25eb4fe ARTEMIS-3871 uniquely name MQTT share sub queues 2022-12-13 11:59:08 -05:00
Clebert Suconic 4af11a04d3 NO-JIRA fixing intermittent failure on ActiveMQServerControlTest 2022-12-13 11:35:19 -05:00
Justin Bertram 499e3c119f ARTEMIS-4101 caching failed authn result on LDAP cxn failures 2022-12-13 09:07:28 -05:00
Robbie Gemmell f790911c44 ARTEMIS-4110: insert standard ASF licence header comment in various cases, such as to replace a javadoc header 2022-12-07 10:21:25 +00:00
Clebert Suconic 0866a2eb88 ARTEMIS-4096 Bridge transfer is broken with AMQP Large messages 2022-11-19 11:57:28 -05:00
Domenico Francesco Bruscino 3a13a7850c ARTEMIS-4077 Add an option to disable XML external entity processing 2022-11-15 10:06:03 -06:00
Clebert Suconic 4f79eb42f5 ARTEMIS-4089 Check on AutoCreation during routing 2022-11-14 15:25:42 -05:00
Šmucr Jan 43824fc494 ARTEMIS-4078 Fix divert reloading
Reloading has been fixed for divert:
* filter
* address
* exclusive

Source address and exclusivity changes require divert redeployment.
2022-11-11 12:00:00 -06:00
Justin Bertram ca580814de ARTEMIS-4085 exclusive LVQ sending all messages to consumer 2022-11-10 13:58:53 -05:00
Clebert Suconic f2e0f8713f ARTEMIS-4083 ClientLargeMessage Streaming not closing inputStream if compressed 2022-11-10 07:52:44 -05:00
Clebert Suconic 9528e45869 ARTEMIS-4083 ClientLargeMessage Streaming not closing inputStream if compressed 2022-11-10 06:27:10 -05:00
Justin Bertram dce4ba3c1a [maven-release-plugin] prepare for next development iteration 2022-11-08 13:17:38 -06:00
Justin Bertram 1fd6cb6239 [maven-release-plugin] prepare release 2.27.0 2022-11-08 12:46:20 -06:00
Clebert Suconic 87ec9b5465 ARTEMIS-4045 Fixing in Handler ACKRunner on Mirror 2022-10-26 13:10:07 -04:00
Clebert Suconic d185735e55 ARTEMIS-4073 Page Counters can go off sync when multiple producers are used in the same address 2022-10-25 21:26:14 -04:00
Clebert Suconic cffc06aec8 NO-JIRA Fixing intermittent failure in PagingTest 2022-10-23 12:16:23 -04:00
Clebert Suconic c199902cde NO-JIRA Fixing intermittent failure in PagingTest
receiveImmediate will issue a depage but it might not be available right away.
A retry needs to be done.
2022-10-23 12:11:53 -04:00
Gary Tully 03ef286cc8 ARTEMIS-4025 - trap failure to apply properties as errors and report via the broker status in a configuration/properties/errors status field 2022-10-13 18:23:09 +01:00
Timothy Bish b900a1e4bd ARTEMIS-4020 Standardize the naming of Logger types for consistency
Attempt to standardize all Logger declaration to a singular variable name
which makes the code more consistent and make finding usages of loggers in
the code a bit easier.
2022-10-13 12:40:45 -04:00
Justin Bertram ea04426bcd ARTEMIS-4037 refactor MQTTRetainMessageManagerTest
Commit 5a42de5fa6 called my attention to
this test. It really needs to be refactored because:

 - It belongs in the integration-tests module rather than the MQTT
   protocol module.
 - It is using a lot of non-standard components (e.g.
   EmbeddedJMSResource, Awaitility, etc.).
 - It is overly complicated (e.g. using its own MqttClientService).

This commit resolves all those problems. The new implementation is quite
a bit different but still equivalent. I reverted the original fix from
ARTEMIS-2476 and the test still fails.
2022-10-13 17:33:43 +01:00
Justin Bertram f0ecf6bc89
NO-JIRA fix AMQP acceptor property typo 2022-10-13 11:23:51 -05:00
Justin Bertram 0ab098e456
ARTEMIS-4035 all consumers of federated queue drop if only one consumer drops 2022-10-13 10:36:38 -05:00
Clebert Suconic 49d33470f9 ARTEMIS-4041 Improve critical IO reporting 2022-10-12 10:50:33 -04:00
Justin Bertram 5343c97c7d ARTEMIS-4022 add auto-delete queue attribute to management 2022-10-11 13:16:46 -04:00
Domenico Francesco Bruscino 47e82c4ad0 NO-JIRA Add direct jakarta.annotation-api dependency to integration-tests
ResourceLoadingSslContext depends on jakarta.annotation-api
2022-10-11 09:09:08 +02:00
Timothy Bish 617269319a ARTEMIS-4020: Remove string appends and various isXEnabled logger checks (add some where useful)
Logger statements should use formatting syntax and let the normal framework checks take care of
checking if a logger is enabled instead of string concats and isXEnabled logger checks except
in cases there is known expense to the specifc logging message/arg preparation or passing.

Changes from myself and Robbie Gemmell.

Co-authored-by: Robbie Gemmell <robbie@apache.org>
2022-10-07 15:40:53 -04:00
Clebert Suconic 18cfdb7049 ARTEMIS-4024 Avoid excessive NativeMemory allocation when sending OpenWire Multi mega sized messages in openwire 2022-10-04 13:35:50 -04:00
Clebert Suconic 2ba6452b83 ARTEMIS-4020 removing ActiveMQTestBase::instanceLog 2022-09-29 17:46:51 -04:00
Clebert Suconic 12cc70c5bf ARTEMIS-4020 Using a little trick to create the Loggers
Trick provided by Tim Bish
2022-09-29 17:46:51 -04:00
Robbie Gemmell 9873fccf74 ARTEMIS-4020: switch to using SLF4J API for logging, use Log4J 2 as impl for broker distribution and tests
PR includes work from myself and Clebert Suconic, squashed from the new-logging branch.
2022-09-28 14:01:54 -04:00
Clebert Suconic 1a8c458906 NO-JIRA Adding a Compacting Test
I was debugging Compacting, looking for a possible issue here in these conditions.
even though I found nothing wrong with the code, I still want to keep the test as there's no such thing as enough testing.
2022-09-26 11:23:50 -04:00
Justin Bertram e47b7992ca
ARTEMIS-4010 LegacyLDAPSecuritySettingPlugin missing data
In commit a9a85f98db I removed the code
which modified existing matches. However, I forgot that the matches read
from LDAP are often duplicated so instead of always adding a new match
this commit ensures that the *right* match is modified rather than a
potentially more generic wildcard match (which was the original
problem).
2022-09-23 21:29:35 -05:00
Justin Bertram cd7555c523 ARTEMIS-3264 handle core-to-AMQP conversion failures more gracefully
If an AMQP consumer tries to receive a message and the broker is unable
to convert the message from core to AMQP then the consumer is
disconnected and the offending message stays in the queue. When the
consumer reconnects the conversion error will happen again resulting in
a loop that can only be resolved through administrative action (e.g.
deleting the message manually or sending it to a dead letter address).

This commit fixes that problem by detecting the conversion problem and
sending the message to the queue's dead letter address. It also doesn't
disconnect the consumer.

This commit also changes the log messages associated with sending a
message to the dead letter address since this event can now occur
regardless of the delivery attempts.
2022-09-22 09:55:36 -04:00
Clebert Suconic 5d8e7fe829 [maven-release-plugin] prepare for next development iteration 2022-09-21 13:00:47 -04:00
Clebert Suconic 2d7b1a3ef7 [maven-release-plugin] prepare release 2.26.0 2022-09-21 13:00:46 -04:00
Gary Tully 2d662a07f3 ARTEMIS-4007 - expose status attribute on configuration that can hold version or error state and reflect modifications via refresh 2022-09-21 11:49:26 -04:00
Gary Tully d7d1c2ee42 ARTEMIS-4001 - add properties url to the reload manager watch list, validate queue creation on reload with new test 2022-09-20 15:39:32 +01:00
Justin Bertram 27008758fe
ARTEMIS-3986 CME when using LVQ
The map used by LastValueQueue was inadvertently changed to a
non-thread-safe implementation in
4a4765c39c. This resulted in an occasional
ConcurrentModificationException from the hashCode implementation.

This commit restores the thread-safe map implementation and adds a test
which brute-forces a CME when using the non-thread-safe implementation.
2022-09-15 11:11:19 -05:00
Justin Bertram 6b5a73db8a
ARTEMIS-3913 custom MQTT client ID rejection
Sometimes users want to perform custom client ID validation, and in the
case of an invalid client ID the proper reason code should be returned
in the CONNACK packet.
2022-09-14 11:50:36 -05:00
Clebert Suconic 59585ffc94 NO-JIRA Trying to fix StompV11Test intermittent failure 2022-09-13 23:05:22 -04:00
Justin Bertram a9a85f98db ARTEMIS-3984 LegacyLDAPSecuritySettingPlugin shouldn't modify existing matches
When the LegacyLDAPSecuritySettingPlugin has enableListener set to true
and a new permission is added it will try to modify the existing match
if one exists. This is problematic if there's a more generic wildcard
match than the specific one that's modified.

This commit fixes that problem so that instead of modifying the existing
match(es) it simply adds a new one. The plugin never should have tried
modifying the existing match in the first place as two identical matches
would be a configuration error.
2022-09-13 19:11:28 -04:00
Emmanuel Hugonnet 51ccc7d6c2
ARTEMIS-3989 ActiveMQServerControl.getRoles doesn't return all roles
- Fixing RoleInfo to provide informations on deleteAddress.
 - Adding more coverage on test to check the number of permissions
   returned.

Signed-off-by: Emmanuel Hugonnet <ehugonne@redhat.com>
2022-09-13 14:43:58 -05:00
Clebert Suconic e654eba0de ARTEMIS-3987 Removing ActiveMQ Artemis Rest from the codebase.
As we discussed on the dev list, this module hasn't been used for a while, and we have been asking users to use stomp and stomp-WS instead.
2022-09-12 15:09:31 -04:00
Clebert Suconic 4ad830fb95 Bumping artemis as 3.0
After removing ActiveMQ Artemis rest (per ARTEMIS-3987), we should start promoting Artemis as 3.0
2022-09-12 15:09:31 -04:00
Robbie Gemmell e5086f447e ARTEMIS-3985: update to activemq 5.17.2 2022-09-12 12:20:14 +01:00
Clebert Suconic 11eab60584 [maven-release-plugin] prepare for next development iteration 2022-08-30 18:04:06 -04:00
Clebert Suconic fb1b362b47 [maven-release-plugin] prepare release 2.25.0 2022-08-30 18:04:05 -04:00