362 Commits

Author SHA1 Message Date
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
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
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
Robbie Gemmell
d45349fa67 ARTEMIS-4872: use explicit annotationProcessorPaths compiler config
Updates artemis-log-annotation-processor to use artemis-project so that
artemis-pom can reference artemis-log-annotation-processor without cycle.

Split out its tests to their own module to faciltate, also exercising the
profile mechanism to enable the processor usage with trigger file.

Simplify disabling processing in the module using maven.compiler.proc prop
available since maven-compiler-plugin 3.13.0

Uses a dummy non-processor path at root to 'disable' processsing on JDK < 23,
accounting for Maven 3 not being able to unset maven.compiler.proc from a
parent, and JDKs < 21 requiring newest builds to support -proc:full value
needed otherwise to reenable processing once explicitly disabled.
2024-06-28 16:49:27 +01:00
Clebert Suconic
f4fd259f07 [maven-release-plugin] prepare for next development iteration 2024-06-12 11:58:53 -04:00
Clebert Suconic
b4d3a77649 [maven-release-plugin] prepare release 2.35.0 2024-06-12 11:58:52 -04:00
Justin Bertram
14c564a481 ARTEMIS-4800 simplify QueueConfiguration API
This commit does the following:

 - deprecate all QueueConfiguration ctors
 - add `of` static factory methods for all the deprecated ctors
 - replace any uses of the normal ctors with the `of` counterparts

This makes the code more concise and readable.
2024-06-10 07:58:40 -07: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
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
Robbie Gemmell
362dbd11ac ARTEMIS-4790: use JUnit 5 for the tests 2024-06-03 10:06:37 -05: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
3c058e98f1 ARTEMIS-3622 MQTT can deadlock on client cxn/discxn
This commit fixes the deadlock described on ARTEMIS-3622 by moving the
synchronization "up" a level from the MQTTSession to the
MQTTConnectionManager. It also eliminates the synchronization on the
MQTTSessionState in the MQTTConnectionManager because it's no longer
needed. This change should not only eliminate the deadlock, but improve
performance relatively as well.

There is no test associated with this commit as I wasn't able to
reproduce the deadlock with any kind of straight-forward test. There was
a test linked on the Jira, but it involved intrusive and fragile
scaffolding and wasn't ultimately tenable. That said, I did test this
fix with that test and it was successful. In any case, I think static
analysis should be sufficient here as the changes are pretty
straight-forward.
2024-05-21 15:15:44 +01:00
Justin Bertram
fc6f0ee9ec ARTEMIS-4740 reduce unnecessary boxing 2024-04-27 09:36:05 -05: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
Albertas Vyšniauskas
f4b59c9b25 ARTEMIS-4646 Reuse only acknowledged MQTT IDs
Generate MQTT message IDs from full allowed range of 1-65535 and skip
currently used values. Do not use atomic integer for current ID, because
all accesses and modifications are performed in synchronized context.
2024-02-22 10:54:46 -06:00
Alexey Markevich
9cd598ebf4 ARTEMIS-1230 Added artemis-bom 2024-02-14 10:33:19 +00:00
Justin Bertram
513b7826a4 ARTEMIS-4532 MQTT-to-core wildcard conversion is broken
Currently when an MQTT topic filter contains characters from the
configured wildcard syntax the conversion to/from this syntax breaks.

For example, when using the default wildcard syntax if an MQTT topic
filter contains a . the conversion from the MQTT wildcard syntax to the
core wildcard syntax and back will result in the `.` being replaced with
a `/.`.

This commit fixes that plus a few other things...

 - Implements proper conversions to/from one WildcardConfiguration to
   another.
 - Refactors the MQTT code which invokes these conversion methods. This
   includes simplifying a lot of test code.
 - Adds lots of tests for everything.
 - Clarifies some variable naming to better distinguish between core and
   MQTT.
2024-01-29 18:35:43 +00:00
Clebert Suconic
e513e6d2dd [maven-release-plugin] prepare for next development iteration 2024-01-24 14:21:08 -05:00
Clebert Suconic
dbaa508d07 [maven-release-plugin] prepare release 2.32.0 2024-01-24 14:21:07 -05:00
Justin Bertram
44ceeff63c ARTEMIS-4540 validate MQTT session state data 2024-01-22 20:58:13 -06:00
Justin Bertram
019fc86138 ARTEMIS-4542 improve MQTT state storage
This commit:

 - Eliminates MQTT session storage on every successful connection.
   Instead data is only written when subsriptions are created or
   destroyed.
 - Adds a configuration property for the storage timeout.
 - Updates the documentation with relevant information.
 - Refactors a few bits of code to eliminate unnecessary variables, etc.
2024-01-22 19:58:07 -06:00
Justin Bertram
159416bc09 ARTEMIS-4530 clean up SessionCallback interface 2023-12-21 11:42:44 -06:00
Justin Bertram
8e68bb1902 ARTEMIS-4501 clean up MQTT subscription queues when session expires 2023-11-27 12:33:35 -05:00
Justin Bertram
60200b44e2 ARTEMIS-4506 restore MQTT sub queue name syntax
Starting with 2.28.0, the broker doesn't translate the character `/` to
the configured wildcard delimiter (i.e. `.` by default) when creating
subscription queues for MQTT clients.

This commit fixes that regression and restores the proper translation.
2023-11-27 11:51:22 -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
Justin Bertram
055100751c ARTEMIS-4459 log when ignoring dupe MQTT QoS2 pub
In accordance with the QoS2 protocol outlined in the MQTT
specification(s), once the broker receives a PUBLISH then any other
PUBLISH it receives on that same session with the same packet ID must be
ignored until the QoS2 protocol for that ID is completed.

The broker does this, but it doesn't log anything so it's not clear when
this is actually happening.
2023-10-16 20:32:20 -04: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
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
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
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
Robbie Gemmell
df410da7ae ARTEMIS-4402: add some unit tests exercising the semi-generated log/message bundles to make generation problems more quickly noticable 2023-08-25 15:02:24 +01: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
Justin Bertram
c8d685ee87 ARTEMIS-4365 MQTT retain flag not set correctly 2023-07-19 12:50:05 +01:00
Justin Bertram
2d1a8661fd ARTEMIS-4338 STOMP inoperable w/resource audit logging
When resource audit logging is enabled STOMP is completely inoperable
due to an NPE during the protocol handshake. Unfortunately the failure
is completely silent. There are no logs to indicate a problem.

This commit fixes this problem via the following changes:
 - Mitigate the original NPE via a check for null
 - Move the logic necessary to set the "protocol connection" on the
   "transport connection" to a class shared by all implementations.
 - Add exception handling to log failures like this in the future.
 - Add tests to ensure the audit logging is correct.
2023-07-06 12:08:16 +01:00