Commit Graph

2551 Commits

Author SHA1 Message Date
Clebert Suconic 11f76bc133 ARTEMIS-4476 Validating process to remove orphaned consumers 2023-11-13 11:37:07 -05:00
Clebert Suconic 18692ec3c4 ARTEMIS-4476 Fixing Ghost consumer situation with AMQP 2023-11-09 15:09:35 -05:00
Robbie Gemmell 66dd52fcf2 ARTEMIS-4490: update to SLF4J 2.0.9 2023-11-03 17:55:48 +00:00
Robbie Gemmell bbe40c4b45 [maven-release-plugin] prepare for next development iteration 2023-10-27 11:14:45 +01:00
Robbie Gemmell f4bccc1a26 [maven-release-plugin] prepare release 2.31.2 2023-10-27 11:14:19 +01:00
Clebert Suconic 845648526f [maven-release-plugin] prepare for next development iteration 2023-10-25 14:45:43 -04:00
Clebert Suconic 5a1c9bf3d1 [maven-release-plugin] prepare release 2.31.1 2023-10-25 14:45:41 -04:00
Domenico Francesco Bruscino c27b7b65c7 ARTEMIS-4456 Register metrics plugin 2023-10-12 10:20:58 -05:00
Clebert Suconic 45f2789531 ARTEMIS-4453 Asynchronous flow control broken when more than 1000 destinations in the producer 2023-10-10 20:56:31 -04:00
Justin Bertram ab6f0a3032 ARTEMIS-4453 Lots of addresses breaks cluster bridge flow control 2023-10-10 20:56:31 -04:00
a181321 4db39520f2 ARTEMIS-4450 - Auto-deleted clustered destinations can cause message loss 2023-10-05 14:05:40 -04:00
Nicolas Filotto 8599917222 ARTEMIS-4141 Update credits even for expired messages
When big messages are produced if a consumer receives an expired message, the credits are not updated, so if the consumer is too slow and an expiry delay has been set, we can end up with a situation where there are no more credits which prevents the consumer from receiving any more messages.
2023-09-22 14:30:29 -04:00
Gary Tully ef1a17e548 ARTEMIS-4432 remove unused commit count from the test 2023-09-21 10:02:15 +01:00
Gary Tully 8f9a72d257 ARTEMIS-4432 respect actor and operation context for openwire connection failure processing 2023-09-20 15:25:50 +01:00
Nicolas Filotto 1d3fd65008 ARTEMIS-4270 Allow hierarchy of wildcard bindings
In case the bindings "news.#" and "news.europe.#" are registered, only the first one matches with the address "news.europe" while both are supposed to match. Those changes are meant to get rid of this limitation.
2023-09-18 12:10:13 -05:00
Clebert Suconic 0d2a94b006 [maven-release-plugin] prepare for next development iteration 2023-09-15 14:40:49 -04:00
Clebert Suconic 74f08ea059 [maven-release-plugin] prepare release 2.31.0 2023-09-15 14:40:45 -04:00
Timothy Bish e8d92b3bc5 ARTEMIS-4431 Re-encode the AMQP message annotations if hops are updates
When updating or adding the hops value the AMQP message needs a re-encode to
carry that value forward when the message is sent to the next broker.
2023-09-15 16:41:43 +01:00
Clebert Suconic 784aa9f884 [maven-release-plugin] prepare for next development iteration 2023-09-14 16:54:07 -04:00
Clebert Suconic 816b0828eb [maven-release-plugin] prepare release 2.31.0 2023-09-14 16:54:05 -04:00
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