Commit Graph

2022 Commits

Author SHA1 Message Date
gtully c7b672d8b9 ARTEMIS-3365 - fix intermittent ci failure on test 2021-09-02 12:09:31 +01:00
Clebert Suconic 0266582a8f ARTEMIS-3441 Remove a few finalize methods 2021-08-24 19:08:00 -04:00
Clebert Suconic 4d2fd89882 ARTEMIS-3436 Journal Replay operation 2021-08-24 19:07:15 -04:00
Justin Bertram 3fd0eea667 ARTEMIS-3438 legacy updateQueue doesn't respect ringSize 2021-08-20 17:00:23 -04:00
Justin Bertram c8d71cbebc ARTEMIS-3422 mitigate NPE for audit logging 2021-08-20 16:33:21 -04:00
Robbie Gemmell 02a8296821 ARTEMIS-3435: fail-fast if AIO check fouls, rather than burning hours and still failing, and report/log detals to aid analysis 2021-08-20 16:38:08 +01:00
Clebert Suconic 3edb96b09b ARTEMIS-3425 Possible NPE on Page reload 2021-08-18 17:49:35 -04:00
Justin Bertram 82f0ece67c ARTEMIS-3329 ability to purge all queues on address 2021-08-18 12:33:01 -04:00
Clebert Suconic b8c64590f9 [maven-release-plugin] prepare for next development iteration 2021-08-09 11:58:28 -04:00
Clebert Suconic 37cc298973 [maven-release-plugin] prepare release 2.18.0 2021-08-09 11:58:27 -04:00
Clebert Suconic cc4a51a3ea [maven-release-plugin] prepare for next development iteration 2021-08-06 17:04:18 -04:00
Clebert Suconic 0b30187091 [maven-release-plugin] prepare release 2.18.0 2021-08-06 17:04:16 -04:00
Clebert Suconic 0e2ce484ba [maven-release-plugin] prepare for next development iteration 2021-08-06 13:46:56 -04:00
Clebert Suconic cb705b5c5c [maven-release-plugin] prepare release 2.18.0 2021-08-06 13:46:54 -04:00
Domenico Francesco Bruscino 3555dd7d25 ARTEMIS-3365 Add broker balancers 2021-08-06 08:33:21 -04:00
franz1981 49e3843aa7 ARTEMIS-3340 Atomic server restart and clean dirty activation: fix testFailbackTimeout 2021-08-06 08:29:54 -04:00
gtully ca7a100de0 ARTEMIS-3340 Sequential activation tracking for pluggable quorum replication policies + peer
Co-authored-by: franz1981 <nigro.fra@gmail.com>
2021-08-05 14:18:20 -04:00
Francesco Nigro 536271485f ARTEMIS-2716 Pluggable Quorum Vote 2021-08-05 14:18:20 -04:00
gtully c2da0fd663 ARTEMIS-3200 - remove braces from the belt and braces fix in ARTEMIS-2712, the braces are not necessary and leak, cleaning up in close negates the need to the session closeable 2021-08-05 09:27:12 -04:00
Erwin Dondorp abcfe2fe6f ARTEMIS-3177 allow a NOT-CONTAINS filter 2021-08-05 09:21:55 -04:00
Clebert Suconic f9aa0a98b4 ARTEMIS-3411 Add PrintData information on Divert records 2021-08-04 17:18:15 -04:00
Domenico Francesco Bruscino a741ae9994 ARTEMIS-3367 Set verifyHost true for connectors by default 2021-08-03 18:14:51 -04:00
Clebert Suconic 813ed88ecb ARTEMIS-3243 Implementing dual mirror with Broker Connections
There are some major tests added as part of this PR.

This PR has been done through an extensive collaboration with Robbie Gemmel on https://github.com/apache/activemq-artemis/pull/3633
2021-08-03 16:50:43 -04:00
Justin Bertram 6bd30e8fe3 ARTEMIS-3385 management changes can be reverted by XML update
Durable changes made via the management API (e.g. adding
security-settings, adding address-settings, adding diverts) can be
reverted when reloading the XML at runtime.
2021-08-03 12:30:00 -04:00
Justin Bertram 8c3384a947 ARTEMIS-3397 remove queue rate metric from web console
This is a follow-up from ARTEMIS-2322.

The changes related to expired message are only there because
QueueFilterPredicate had a bug where the rate was correlated to expired
messages. When I fixed that I noticed that expired messages was actually
missing so I added it.
2021-08-03 10:15:57 -04:00
Justin Bertram 55533ae099 ARTEMIS-3394 ClassCastException when queue & divert have same name 2021-08-03 09:57:05 -04:00
Justin Bertram 7a9de8eea3 ARTEMIS-3302 swap deprecated X509Certificate
Casting the result of getPeerCertificates() to X509Certificate[] mirrors
what is done in the ActiveMQ "Classic" code-base.

A few tests which were imported from ActiveMQ "Classic" to verify our
OpenWire implementation were removed as they relied on a "stub"
implementation of javax.net.ssl.SSLSession that never would have worked
across multiple JDKs once javax.security.cert.X509Certificate[] was
removed. Furthermore, the tests appeared to be related to the OpenWire
*client* and not relevant to our broker-side implementation.
2021-08-03 09:55:36 -04:00
Andy Taylor c358688fd6 ARTEMIS-3404 - expose max retry interval on bridge mbean
https://issues.apache.org/jira/browse/ARTEMIS-3404
2021-08-03 09:07:39 -04:00
franz1981 2694f8b52e ARTEMIS-3402 Split Brain detection should reject bad member updates 2021-08-03 14:43:20 +02:00
franz1981 63577c7264 ARTEMIS-3405 Log the end of paging mode for a destination 2021-07-28 10:02:14 -04:00
Andy Taylor 57790a93a9 ARTEMIS-3403 - wrong debug level in ArtemisMBeanServerGuard
https://issues.apache.org/jira/browse/ARTEMIS-3403
2021-07-27 22:52:56 -04:00
Justin Bertram f554806ec3 ARTEMIS-3400 add audit logging for message ack
Aside from adding audit logging for message acknowledgement this commit
also consolidates the two nearly identical acknowledge method
implementations in o.a.a.a.c.s.i.QueueImpl. This avoids duplicating
code for audit logging, plugin invocation, etc. There is no semantic
change.
2021-07-26 23:27:36 -04:00
Justin Bertram 2954829e3e ARTEMIS-3399 fix audit logging for AMQP
Due to the multi-threaded AMQP implementation the ThreadLocal variables
used by the AuditLogger to track the username and remote address don't
work properly. Changes include:

 - Passing the audit Subject (set during authentication) and the remote
   address explicitly for audit logging on the relevant ServerSession
   methods rather than relying on the AuditLogger's ThreadLocal
   variables
 - Audit logging core session creation *after* successful authentication
   so that we have the proper Subject; this is especially important for
   the SSL certificate authentication use-case
 - Renaming some methods and variables in AuditLogger to more accurately
   reflect their intended use
 - Adding JavaDoc and refactoring the getCaller methods on AuditLogger
 - Refactor audit log testing and add a new test
2021-07-26 23:27:35 -04:00
Justin Bertram bb9bbf062d ARTEMIS-3395 ensure sending audit log contains message ID 2021-07-23 14:28:53 -04:00
Andy Taylor 82e40ce229 ARTEMIS-3398 - fix filtering in console with filter
https://issues.apache.org/jira/browse/ARTEMIS-3398
2021-07-22 11:24:14 -04:00
Howard Gao 8a88c5f913 ARTEMIS-3392 Scale down would fail if target queue's id greater than max int 2021-07-21 15:12:43 -04:00
Domenico Francesco Bruscino 2d07d0d844 ARTEMIS-3384 Fix bridge duplicate messages after reconnection 2021-07-15 14:20:45 -04:00
Clebert Suconic b4aef3fca8 ARTEMIS-3386 Expiry messages using too many threads 2021-07-15 13:51:52 -04:00
Justin Bertram 9f96e2d270 ARTEMIS-3379 add message details to consumer audit log 2021-07-06 16:15:50 -04:00
Justin Bertram b7f9807cd9 ARTEMIS-2919 support timestamping incoming messages 2021-07-06 14:09:00 -05:00
Justin Bertram 1d02d06eab ARTEMIS-3374 config-managed queue can be deleted by durable subscriber 2021-07-06 14:06:39 -05:00
Justin Bertram 47d4b8fff4 ARTEMIS-3343 log WARN & ignore duplicate address-setting match 2021-07-04 16:00:31 -05:00
Michal Petrov 33e13ebc14 ARTEMIS-3356: fix debug message arguments 2021-07-04 14:37:51 -05:00
franz1981 bea0568a88 ARTEMIS-3360 Backup connector ignores TTL settings on the connection factories 2021-07-04 14:32:58 -05:00
Justin Bertram 45ae64a01c ARTEMIS-3366 deleteAddress can remove SnF queue 2021-06-24 13:27:35 -05:00
Domenico Francesco Bruscino b1d326ba8b ARTEMIS-3339 Fix management role match key comparator 2021-06-15 15:06:55 -04:00
Justin Bertram 867bf5e01e ARTEMIS-3155 support better backwards compatibility
Support better backwards compability for SSL keyStoreProvider and
trustStoreProvider.
2021-06-14 18:04:06 -04:00
Justin Bertram a4c1155a01 ARTEMIS-3341 update checkstyle to latest + update code
As a follow-up to #3618/dc7de893747b90b627d729f9f18a758bb4dad9d5 update
checkstyle to the latest version, restoring the originally intended
"RightCurly" style, and updating all the code to properly adhere to the
style as enforced by the new checkstyle version.

The version of checkstyle we used before the aforementioned commit had
a bug which didn't properly enforced our intended "RightCurly" style
(see https://github.com/checkstyle/checkstyle/issues/6345). That commit
changed the style to accommodate the handful of unintended style
violations. This commit reverts that change for 2 main reasons:
 - The style was always intended to use `alone` for both `METHOD_DEF`
and `CTOR_DEF`.
 - There are over 1,000 existing uses of the intended style and around
30 violations of this style which were unintentionally allowed.

Reverting the style back to the original and cleaning up the unintented
violations makes the code more consistent and prevents further style
inconsistencies in the future.

There were a handful of other changes related to checkstyle bugs which
allowed unintended style violations. These were related to indentation
levels.

This closes #3619
(with some minor changes from Robbie to fix remaining violations)
2021-06-11 12:16:04 +01:00
Domenico Francesco Bruscino bafefdc8ec ARTEMIS-3338 Preserve prepared XA transactions on connection failure 2021-06-09 15:00:45 -04:00
Clebert Suconic 05498c350e ARTEMIS-3261 Remove need to lookup replaceableRecords on the hot path
We known it's a replaceable record as part of the logic, no need to lookup the record type unless it's a reload from the system.
2021-06-09 14:52:06 -04:00
gtully 73bcc78beb no jira - update commons.io version to latest 2021-06-04 13:46:34 +01:00
Clebert Suconic 7137252c5d NO-JIRA fixing spelling udpate as update 2021-06-03 10:43:11 -04:00
Clebert Suconic cfd032799c ARTEMIS-3327 removing unecessary blocking operations on update and delete records 2021-06-03 10:37:16 -04:00
gtully 0e77f93f83 ARTEMIS-3326 - fix state visibility between netty and actor thread after initial connection info processing. fix and test 2021-06-03 09:37:23 +01:00
Robbie Gemmell c993b5a0e9 NO-JIRA: fix javadoc errors on JDK11+, enable CI javadoc check on JDK11+ 2021-06-02 17:37:06 +01:00
franz1981 14dddb04d7 ARTEMIS-3280 Netty Pool micrometer metric plugin 2021-05-27 13:32:06 -05:00
Clebert Suconic f0476d6a12 ARTEMIS-3318/ARTEMIS-2931 Fixing potential issue
The issue here is not supposed to happen,
however I'm changing the return here to true and logging the warn properly
2021-05-27 08:51:41 -04:00
Clebert Suconic cfee2035c8 ARTEMIS-3318 Invalid data on page should not hold page cleanup 2021-05-27 08:08:47 -04:00
Justin Bertram e9c94e57d9 ARTEMIS-3288 support bulk user loading with basic security manager 2021-05-25 11:13:35 -05:00
Clebert Suconic f6df6083e3 ARTEMIS-3283 Fixing Slow Consuemr Test and speeding it up
I am removing some combinations that are not needed here,
and I'm adding another extra test to valiate the rate per minutes
2021-05-25 11:29:04 -04:00
Justin Bertram 3621258458 ARTEMIS-3285 potential duplicate messages with LVQ + non-destructive 2021-05-24 16:42:10 -04:00
Domenico Francesco Bruscino e03c4fe193 ARTEMIS-3309 Add a parameter to limit messages to move or transfer 2021-05-24 14:09:20 -04:00
Justin Bertram e543aa3bd5 ARTEMIS-3159 errors during concurrent expiration with auto-creation 2021-05-24 13:02:08 -05:00
Justin Bertram 81bbca15c1 ARTEMIS-3229 add details to AdressControl MBean 2021-05-24 11:51:14 -05:00
Martyn Taylor 3c0e14de58 ARTEMIS-3283 Added SlowConsumerThreshold unit configuration option 2021-05-24 11:49:38 -05:00
gtully 72c9cae8e1 ARTEMIS-3311 - ensure visibility of error state on operation context callback registration, fix and test 2021-05-24 16:07:36 +01:00
Clebert Suconic 3f38be8c08 ARTEMIS-3310 Paging could lose AMQPmessage if match didn't work for any reason 2021-05-20 13:19:57 -04:00
Clebert Suconic 27c343913f ARTEMIS-3297 Journal Retention Feature 2021-05-18 16:29:18 -04:00
Andy Taylor a34d9aad6b ARTEMIS-3295 - do not cluster advisories
https://issues.apache.org/jira/browse/ARTEMIS-3295
2021-05-14 10:08:21 -04:00
Domenico Francesco Bruscino 0355dda813 ARTEMIS-3294 Fix conversion of messages with a text body 2021-05-13 11:59:20 +01:00
Clebert Suconic 67d47274a1 NO-JIRA removing runDirectJournalBlast 2021-05-12 09:51:56 -04:00
Clebert Suconic b0f8f515c5 ARTEMIS-3273 Recover tool and PrintData enhancements 2021-04-30 18:41:05 -04:00
Clebert Suconic d2676e77f8 ARTEMIS-3271 Improve Critical Analyzer to use AutoCloseable on the API 2021-04-30 12:46:15 -04:00
Clebert Suconic 62395dcd44 ARTEMIS-3261 Fixing tests and allowing configuration to reload data files on start 2021-04-24 21:30:56 -04:00
Clebert Suconic 1392cb5f0b ARTEMIS-3261 Enhance compact to deal with Rollbacks and update records that can be replaced 2021-04-23 15:17:06 -04:00
gtully 64f5761767 ARTEMIS-3117 - tackle the root cause of the scale issue with the netty ssl acceptor, the creation of an sslcontext per connetion, since ARTEMIS-400 2021-04-15 08:31:32 -04:00
Justin Bertram 81e6e4a5a2 ARTEMIS-3209 add details to AMQ222186 WARN message 2021-04-14 20:04:26 -04:00
Clebert Suconic ac4eb693b2 ARTEMIS-3238 Fixing SendACKFailTest after d408f284b1 2021-04-13 08:49:17 -04:00
Clebert Suconic d408f284b1 ARTEMIS-3238 AMQP Mirror not routing correctly with SNF 2021-04-12 19:30:35 -04:00
Domenico Francesco Bruscino b4789a894f ARTEMIS-3221 Migrating to Jakarta EE 8 artifacts 2021-04-09 11:49:59 -04:00
Clebert Suconic faf32fe550 ARTEMIS-3227 Web Console could be shutdown after certain failures 2021-04-08 19:59:00 -04:00
Christoph Läubrich 5313a800a3 ARTEMIS-3106 Support for SASL-SCRAM
adds the implementation necessary to perform SASL-SCRAM authentication with ActiveMQ Artemis
2021-04-08 19:58:09 -04:00
franz1981 08ec7c67c8 ARTEMIS-3219 Improve FQQN message routing 2021-04-03 13:20:47 +02:00
franz1981 17dd86ff4b ARTEMIS-3219 Improve message routing 2021-04-03 13:20:47 +02:00
Domenico Francesco Bruscino 2f851cbbe0 ARTEMIS-3203 Match filter field names with view field names
The filter and the view use different convection for field names, ie the
connection view uses the `sessionID` field name while the connection filter
uses the `SESSION_ID` field name. This commit replace the field names used
by the filter with the field names used by the view preserving the backward
compatibility.
2021-04-01 12:23:00 -05:00
AntonRoskvist fe3851ff6d ARTEMIS-3198 - Fix order of concurrency parameter 2021-03-26 11:16:53 -04:00
gtully 3b4872e1a2 ARTEMIS-3128 - add test of large message browse opentype support 2021-03-26 14:42:03 +00:00
Andy Taylor 658d45f543 ARTEMIS-3202 - add a flag to deleted diverts removed from config
https://issues.apache.org/jira/browse/ARTEMIS-3202
2021-03-24 19:24:16 -04:00
Andy Taylor 69bea6756c ARTEMIS-3201 - configured diverts arent persisted
https://issues.apache.org/jira/browse/ARTEMIS-3201
2021-03-24 19:24:16 -04:00
Justin Bertram 186481bbe8 ARTEMIS-3155 differentiate SSL store type and provider
The provider of an SSL key/trust store is different from that store's
type. However, the broker currently doesn't differentiate these and uses
the provider for both. Changing this *may* potentially break existing
users who are setting the provider, but I don't see any way to avoid
that. This is a bug that needs to be fixed in order to support use-cases
like PKCS#11.

Change summary:
 - Added documentation.
 - Consolidated several 2-way SSL tests classes into a single
   parameterized test class. All these classes were essentially the same
   except for a few key test parameters. Consolidating them avoided
   having to update the same code in multiple places.
 - Expanded tests to include different providers & types.
 - Regenerated all SSL artifacts to allow tests to pass with new
   constraints.
 - Improved logging for when SSL handler initialization fails.
2021-03-24 09:08:33 -04:00
Clebert Suconic 8d24bfa646 ARTEMIS-3204 Fixing NPE on Counting Queue for Resource Limit 2021-03-24 08:12:40 -04:00
Andy Taylor bb94d0a5b3 ARTEMIS-3196 - expose journal pool files in JMX
https://issues.apache.org/jira/browse/ARTEMIS-3196
2021-03-23 10:01:24 +00:00
Sebastian Thomschke 28c7d95367 NO-JIRA Remove unnecessary cast from byte[] to byte[] 2021-03-23 09:54:03 +00:00
gtully 06461f146c ARTEMIS-3168 - add PrincipalConversionLoginModule feature 2021-03-23 09:51:50 +00:00
gtully 02bb7031c2 ARTEMIS-3175 - implement address setting management-message-attribute-size-limit to sensibly limit data returned by list/browse/filter management ops 2021-03-23 09:48:45 +00:00
Domenico Francesco Bruscino 4473758edb ARTEMIS-3195 Filter empty items from listNetworkTopology 2021-03-22 22:20:15 -04:00
Clebert Suconic 31345c5b51 ARTEMIS-3198 Fixing test after concurrency bridge changes 2021-03-22 21:56:02 -04:00
AntonRoskvist e9e1e476ee ARTEMIS-3198 Add concurrency option on core bridges 2021-03-22 19:13:06 -04:00
Clebert Suconic b4beea1f2c ARTEMIS-3150 Broker Connections with restricted security
The local connections and sessions created internally were supposed to bypass security
just like bridges and other internal components
2021-03-22 17:32:43 -04:00
Markus Meierhofer 1d1a9433bc ARTEMIS-2870: Transfer connection close/failure listeners one by one on reattachment
Previously, when a session was reattached, all the close/failure listeners
were removed from the old connection and set onto the new connection.
This only worked when at most 1 session of the old connection was
transferred: When the second session was transferred, the old
connection already didn't contain any close/failure listeners anymore,
and therefore the list of close/failure listeners was overwritten by
an empty list for the new connection.

Now, when a session is being transferred, it only transfers the
close/failure listeners that belong to it, which are the session itself
+ the TempQueueCleanerUppers.

Modified a test to check whether the sessions are failure listeners of
the new connection after reattachment.
2021-03-18 18:26:07 -04:00
gtully 8d848f4615 ARTEMIS-3188 / ARTEMIS-2108 Fixing StackOverFlow over bindings
This fix was done in collaboration with Gary Tully
2021-03-18 18:08:42 -04:00
gtully 052bd60da4 ARTEMIS-3180 - fix multiple path match case in wildcard address map 2021-03-18 11:24:51 +00:00
Markus Meierhofer 3b9008bda0 ARTEMIS-3174: Set new connection on ServerSession during reattachment
During session reattachment, also set the new connection on the
"session" member of the ServerSessionPacketHandler. Until now,
the connected ServerSessionImpl instance still referenced the old
connection although it had already been transferred on the new connection.
2021-03-17 13:36:09 -05:00
Justin Bertram fea5e246e7 ARTEMIS-3166 support disabling configuration file reload 2021-03-17 09:52:13 -05:00
Justin Bertram eb26f67ab6 ARTEMIS-3137 support XPath filters
Change summary:
 - Remove the existing Xalan-based XPath evaluator since Xalan appears
   to be no longer maintained.
 - Implement a JAXP XPath evaluator (from the ActiveMQ 5.x code-base).
 - Pull in the changes from https://issues.apache.org/jira/browse/AMQ-5333
   to enable configurable XML parser features.
 - Add a method to the base Message interface to make it easier to get
   the message body as a string. This relieves the filter from having
   to deal with message implementation details.
 - Update the Qpid JMS client to get the jms.validateSelector parameter.
2021-03-10 09:32:23 -05:00
gtully 20007ad485 ARTEMIS-3141 - respect the browse page limit on all queue controll/jmx operations that use a queue browser 2021-03-10 08:51:06 -05:00
Justin Bertram 1a149b9af4 ARTEMIS-3102 throw more accurate exception when re-authentication fails 2021-03-09 13:46:08 -06:00
Clebert Suconic 05c55d382c ARTEMIS-3133 Just Encapsulating ObjectPool into a small utility 2021-03-04 10:38:14 -05:00
franz1981 bc83b31232 ARTEMIS-3133 Reduce memory usage for Null an Ping packets 2021-03-03 13:51:05 -05:00
Domenico Francesco Bruscino 5aa3a4b6aa ARTEMIS-3147 Fix auto created addresses reload 2021-03-03 13:49:59 -05:00
sebthom 026f3859a2 ARTEMIS-3117 Provide CachingOpenSSLContextFactory
to mitigate performance degradation in JDK 11 during TLS connection
initialization.
2021-03-03 10:06:45 -06:00
Andy Taylor 46858bcfc3 ARTEMIS-3130 - fixing broken filter fields in console
https://issues.apache.org/jira/browse/ARTEMIS-3130
2021-03-02 12:55:45 +01:00
Christopher L. Shannon (cshannon) 4c4d7a71cb ARTEMIS-2802: Add a null check when checking matching metaData inside
Federated Queue

Other protocols besides CORE may not have a metadata map so we need to
check for null before passing to the filter matcher
2021-03-01 13:41:20 -06:00
franz1981 6c7231928f ARTEMIS-3138 Shared Nothing Live broker shouldn't try to connect to itself (2) 2021-02-25 10:19:02 -05:00
franz1981 03a8e20de2 ARTEMIS-3138 Shared Nothing Live broker shouldn't try to connect to itself 2021-02-25 10:19:02 -05:00
gtully a0ce3812ba ARTEMIS-3067, ARTEMIS-3135 - rework accounting for lazy decoding by directly referencing the owning page store, owner now tracked on a message rather than the message reference. This avoids the error prone checks around potential decoding sites 2021-02-24 15:50:13 +00:00
gtully a56ade38b4 ARTEMIS-3135 - track possible change in memory estimate when messages are converted to maps for JMX or UI display, follows up from ARTEMIS-3067 2021-02-23 15:30:40 +00:00
Clebert Suconic 12c8096a23 ARTEMIS-3093 Ordering on multiple consumers and core with rollback 2021-02-22 15:10:04 -05:00
franz1981 6126d926dd ARTEMIS-3045 ReplicationManager can batch sent replicated packets 2021-02-19 15:18:20 -05:00
sebthom f9e23def8d ARTEMIS-3121 Avoid creation of unnecessary StringBuilder instance in
Netty#getProtocols() and simplify implementation
2021-02-19 14:25:22 -05:00
Petr Kužel a75dce9577 ARTEMIS-2931: Resolving potential NPEs detected by eclipse
WARNING: the eclipse static analyser is pretty limited and it cannot cope with cases like: correlated variables, exception paths, .... 70% of eclipse warnings on artemis codebase is a false alarm.

Anyway some variable correlations can be eliminated and code becomes more readable for humans too.

For "never-throws", the assumption is made explicit. If you disagree with the reverse-engineered assumption then it is likely an indication of a true potential NPE.

Last but not least, copy&paste is a common source of bugs. I suspect eclipse indirectly detected one such case.

Hope it helps
2021-02-11 20:52:16 -06:00
Clebert Suconic 21ee5985ea [maven-release-plugin] prepare for next development iteration 2021-02-11 12:00:04 -05:00
Clebert Suconic 36a771150b [maven-release-plugin] prepare release 2.17.0 2021-02-11 11:59:51 -05:00
Clebert Suconic e5b27d6de7 NO-JIRA Adding thread dump logging 2021-02-10 10:40:24 -05:00
Clebert Suconic c0867f0361 [maven-release-plugin] prepare for next development iteration 2021-02-09 12:12:48 -05:00
Clebert Suconic 9b473698e0 [maven-release-plugin] prepare release 2.17.0 2021-02-09 12:12:35 -05:00
Justin Bertram ea6b133ac8 ARTEMIS-3109 unsetting expiry-address results in excessive logging 2021-02-09 11:21:52 -05:00
Clebert Suconic 6ed1e4c87d [maven-release-plugin] prepare for next development iteration 2021-02-08 15:56:31 -05:00
Clebert Suconic 06b29806ca [maven-release-plugin] prepare release 2.17.0 2021-02-08 15:56:18 -05:00
Justin Bertram cd7600314f ARTEMIS-3108 fixing yet another test failure 2021-02-08 11:45:26 -06:00
Justin Bertram 1dd34e6e54 ARTEMIS-3108 fixing another test failure 2021-02-08 11:43:43 -06:00
Justin Bertram 05e7198099 ARTEMIS-3108 fix test failure 2021-02-08 11:37:11 -06:00
Justin Bertram 52de3827fe ARTEMIS-3108 bridge XML config doesn't allow -1
The value `-1` is valid for both the confirmation-window-size and the
producer-window-size elements.
2021-02-08 12:19:42 -05:00
Justin Bertram 86cb888b62 NO-JIRA remove failover-on-server-shutdown from bridge doc 2021-02-08 11:18:23 -05:00
Justin Bertram 0148eec79a ARTEMIS-3099 wrong default producer-window-size on bridge in xml 2021-02-07 11:16:31 -05:00
岳豹 9c5ec1b07c ARTEMIS-3105 large message file not closed on backup side 2021-02-07 10:41:41 +08:00
Justin Bertram b4f8aada3c ARTEMIS-3092 inconsistent JDBC config logging 2021-02-04 15:32:51 -05:00
Justin Bertram 4b314e2aab NO-JIRA fix JDBC parsing typo 2021-02-04 15:32:51 -05:00
Justin Bertram 15e3cdf409 ARTEMIS-3096 bridge config using wrong default conf-window-size 2021-02-04 13:48:37 -06:00
Marcos Singermann 69fb226054 ARTEMIS-3068 Fix HierarchicalRepository matcher comparator 2021-02-03 13:12:34 -05:00
franz1981 9e06a0645b ARTEMIS-3051 Fix MessageReferenceImpl::getMemoryEstimate 2021-02-03 10:27:09 -05:00
franz1981 71685bf6bf ARTEMIS-3051 Fix MessageReferenceImpl::getMemoryEstimate 2021-02-03 10:27:08 -05:00
Domenico Francesco Bruscino bcdb13365e ARTEMIS-3075 Skip temporary queues scale down 2021-02-03 10:20:42 -05:00
Erwin Dondorp 4c611a6670 NO-JIRA fixed debug message 2021-02-03 10:19:06 -05:00
Tomas Hofman ebeea15c2a ARTEMIS-3074 Add ActiveMQServerControl#createBridge() method variant accepting a JSON string 2021-02-01 19:21:40 -05:00
Erwin Dondorp bd9ca52d9a NO-JIRA added space to separate 2 words that otherwise appear joined 2021-02-01 19:20:51 -05:00
Justin Bertram d9e114da55 ARTEMIS-3089 direct delivery can break LVQ+non-destructive 2021-02-01 19:19:20 -05:00
gtully d186d20406 ARTEMIS-3067 - track application properties in memory estimate and check for modification after potential filter execution 2021-02-01 09:21:17 -05:00
gtully 05e9cfed4c ARTEMIS-3064 - ensure useTopologyForLoadBalancing is disabled when ha=false 2021-01-28 15:26:15 -05:00
Clebert Suconic c019218c4e ARTEMIS-3084 Eliminate Block on moving to next file on libaio 2021-01-28 11:10:40 -05:00
Justin Bertram 88b21f9039 ARTEMIS-3082 fix non-destructive + rollback 2021-01-27 20:41:33 -05:00
Ryan Yeats 86a2cad12a ARTEMIS-1884 add plugin API for message level authorization policies 2021-01-25 13:44:36 -06:00
Justin Bertram 4fbc8bf67d ARTEMIS-3008 mngmnt op to reload config file 2021-01-25 13:35:19 -06:00
Justin Bertram 9319f0c8c8 ARTEMIS-3012 incorrect fallback consumer authorization
The fallback consumer authorization implemented in ARTEMIS-592 needs to
check for an *exact* security-settings match otherwise in certain
configurations a more general and more permissive setting might
be used instead of the intended more specific and more restrictive
setting.
2021-01-25 13:34:18 -06:00
Sebastian Thomschke 193374d71d NO-JIRA Minor code improvement in NettyAcceptor class
Make public static fields final and remove an unused private class field.
2021-01-25 13:23:52 -06:00
Domenico Francesco Bruscino eea619137f ARTEMIS-3073 Improve replication manger NPE logs 2021-01-20 11:27:03 -05:00
gtully c2c637407e ARTEMIS-2937 - tidy up shutdown, resolve intermittent failure in org.apache.activemq.artemis.tests.integration.amqp.connect.AMQPReplicaTest#testReplicaCatchupOnQueueCreates 2021-01-20 11:26:08 -05:00
Andy Taylor 4a646e4415 ARTEMIS-3072 - Management methods check for null and not for empty strings
https://issues.apache.org/jira/browse/ARTEMIS-3072
2021-01-19 14:36:38 +00:00
Clebert Suconic 78c0792989 ARTEMIS-3065 AMQP Anonymous producer would eventually block 2021-01-13 15:46:54 -05:00
franz1981 22dbeb8022 ARTEMIS-3049 Simplify PagePosition API 2021-01-12 17:28:13 -05:00
franz1981 54b0094cd6 ARTEMIS-3049 Simplify PageCache API 2021-01-12 17:28:13 -05:00
franz1981 19b04531c6 ARTEMIS-3049 Reduce live page lookup cost 2021-01-12 17:28:13 -05:00
Justin Bertram 9aa7a10744 ARTEMIS-3058 improper AddressSettings merge
The merge method in AddressSettings should *not* use any getters. It
should reference the relevant variables directly. Using any getters will
return default values in the underlying value is null. This can cause
problems for hierarchical settings.

Also fixed a few potential NPEs exposed by the test-case.
2021-01-11 11:38:59 -05:00
Clebert Suconic b4d66b684a ARTEMIS-3054 Fix inconsistencies between replica catchup and page cleanup 2021-01-08 13:48:41 -05:00
gtully 546bbfebfb ARTEMIS-3033 - implement address tree map for wildcards in place of linked addresses 2021-01-06 20:31:46 +00:00
Justin Bertram 9fc22675df ARTEMIS-3031 add new callback for broker deactivation
The existing deactivation callback happens *after* several important
services are shutdown (e.g. the remoting service which allows client
connectivity). This commit adds a new callback which is invoked *before*
any services are stopped. This is useful for embedded use-cases where
applications want to stop gracefully before any part of the broker is
stopped.

A default, empty method implementation is provided so that existing
callback implementations don't need to change.
2021-01-06 10:49:02 -05:00
Andy Taylor ea7f001776 ARTEMIS-3043 - improvements on new console
https://issues.apache.org/jira/browse/ARTEMIS-3043
2021-01-06 10:47:57 -05:00
Clebert Suconic a6160dac14 ARTEMIS-3052 Not block on Binding operations
There no need to test on this commit,
since current tests are enough coverage on this change.
2021-01-06 10:27:01 -05:00
franz1981 2b5d99bbd1 ARTEMIS-3016 Refactored duplicate ids cache 2021-01-06 09:05:01 -05:00
franz1981 b3b5d4893c ARTEMIS-3016 Reduce DuplicateIDCache memory footprint 2021-01-06 09:05:01 -05:00
Clebert Suconic 372220ad3f NO-JIRA Avoiding NPE on ManagementServiceImpl 2020-12-22 13:12:15 -05:00
Domenico Francesco Bruscino 0456b8845a ARTEMIS-3041 Allow encrypted data source property values 2020-12-22 11:07:30 -05:00
Domenico Francesco Bruscino d7fc2fb8b8 ARTEMIS-3040 Fix reloading large messages paged before 2.12 2020-12-21 11:03:11 -05:00
Clebert Suconic 6b7d963f45 ARTEMIS-3039 Fixing network isolation signal on replication 2020-12-18 16:56:14 -05:00
Clebert Suconic 29e65d87da ARTEMIS-3039 Fixing network isolation signal on replication
This is fixing BackupAuthenticationTest
2020-12-18 12:30:31 -05:00
Clebert Suconic 3337d253a6 NO-JIRA Fixing Intermittent failures 2020-12-18 09:24:29 -05:00
franz1981 2b585508cc ARTEMIS-3025 JsonReader char[] leak 2020-12-09 10:55:09 -06:00
Tadayoshi Sato c0b4a10526 ARTEMIS-3017 ArtemisJMXSecurity bulk canInvoke operation always returns true 2020-12-09 10:48:53 -06:00
Clebert Suconic 825341734a ARTEMIS-3024 Expiry or DLQ Retry not working with AMQP 2020-12-08 14:13:53 -05:00
Clebert Suconic 6a6a3b3863 ARTEMIS-3023 Avoid opening AMQP Large Message for final parsing 2020-12-07 21:24:45 -05:00
Clebert Suconic e6a6e81b02 ARTEMIS-3019 expiry changes in AMQP Large Message 2020-12-07 10:44:51 -05:00
Domenico Francesco Bruscino 7eb22c18db ARTEMIS-3014 Fix JMX RBAC guard 2020-11-30 11:12:25 -06:00
gtully 7b9641dc9a ARTEMIS-3009 - reference remoteBinding loadbalancing type on add binding, rather then doing a second pass via the po and address manager. rework ARTEMIS-1680 2020-11-25 10:28:11 +00:00
gtully a5d7a043dc ARTEMIS-2990 - alway be getBiased and only publish complete records and only calculate linked addresses once ARTEMIS-2990 2020-11-24 13:33:21 +00:00
Clebert Suconic 686036b1a4 ARTEMIS-3007 Checking if a message becomes large during copy
This is to avoid shutting down the server on a critical failure in case the message is a few bytes shy
from beyond the max buffer size.

This will prevent the issue.
2020-11-22 23:42:25 -05:00
Domenico Francesco Bruscino 27392b1d7e ARTEMIS-3005 Fix scaling down AMQP messages routing 2020-11-20 14:48:40 -05:00
Justin Bertram ec2cb19f2d ARTEMIS-3003 NPE when reloading persisted security-setting 2020-11-20 10:08:39 -05:00
Luis De Bello a2d827e23f ARTEMIS-2991 Removing HttpAcceptorHandler from HttpKeepAliveRunnable when upgrade to websocket connection 2020-11-18 15:04:52 -06:00
sebthom 80c51803da ARTEMIS-3001 Provide address and queue count via ActiveMQServerControl
See https://issues.apache.org/jira/browse/ARTEMIS-3001
2020-11-17 15:55:50 -05:00
franz1981 923fcb7fe4 ARTEMIS-2990 Improve scalability of wildcard address manager add/remove 2020-11-17 14:39:17 -05:00
Justin Bertram 4bb9ed2d4e ARTEMIS-2986 deleting scheduled messages not permanent
When deleting a durable scheduled message via the management API the
message would be removed from memory but it wouldn't be removed from
storage so when the broker restarted the message would reappear.

This commit fixes that by acking the message during the delete
operation.
2020-11-16 23:46:32 -05:00
gtully d0bf65ea65 ARTEMIS-2990 - update wildcard address map on creation only, avoid duplicates and duplicate checks 2020-11-13 11:15:09 +00:00
gtully 683879495c ARTEMIS-2990 - avoid auto boxing on binding id used as map key 2020-11-13 10:03:28 +00:00
gtully 9675ecae42 ARTEMIS-2985 - don't block netty threads for mqtt protocol actions 2020-11-12 21:01:00 +00:00
Domenico Francesco Bruscino 14ec3cb7b0 ARTEMIS-2976 Remove password before creating server locator 2020-11-05 11:39:35 -05:00
Justin Bertram ecead9b130 ARTEMIS-2974 audit logger can print wrong user info
Using a ThreadLocal for the audit user information works in most cases,
but it can fail when dispatching messages to consumers because threads
are taken out of a pool to do the dispatching and those threads may not
be associated with the proper credentials. This commit fixes that
problem with the following changes:

 - Passes the Subject explicitly when logging audit info during dispatch
 - Relocates security audit logging from the SecurityManager
implementation(s) to the SecurityStore implementation
 - Associates the Subject with the connection properly with the new
security caching
2020-11-05 11:38:08 -05:00
Clebert Suconic 4e7bb97df7 [maven-release-plugin] prepare for next development iteration 2020-11-02 17:45:51 -05:00
Clebert Suconic 9768017530 [maven-release-plugin] prepare release 2.16.0 2020-11-02 17:45:38 -05:00
franz1981 e4a2a20c22 ARTEMIS-2941 Fixing query timeout value 2020-10-30 17:57:28 +01:00
franz1981 b39c9c9221 ARTEMIS-2823 Apply default datasource configs if not overridden 2020-10-30 17:57:28 +01:00
Clebert Suconic 28919b6ad8 [maven-release-plugin] prepare for next development iteration 2020-10-30 10:16:29 -04:00
Clebert Suconic af5ca9f1e6 [maven-release-plugin] prepare release 2.16.0 2020-10-30 10:16:17 -04:00
Clebert Suconic 9b0f7605cb ARTEMIS-2969 / ARTEMIS-2937 Dealing with Connection Timeout properly on AMQP Broker Connections 2020-10-29 21:55:10 -04:00
Clebert Suconic dc7eb5c23d ARTEMIS-2937 Broker connection improvements
- Adding a paragraph about addressing and distinct queue names
- Renaming match on peers, senders and receivers as "address-match"
- Changing qpid dispatch test to use a single listener
- Fixing reconnect attemps message
2020-10-29 15:01:51 -04:00
Clebert Suconic bf52134dc0 ARTEMIS-2937 Fixing Tests and some review 2020-10-28 15:08:48 -04:00
Clebert Suconic 8499eac76c ARTEMIS-2937 Server Side AMQP Connectivity with options to transfer queues or replicate data 2020-10-28 11:37:25 -04:00
gtully 647151b0af ARTEMIS-2941 - renew tasks are nearly always a little late, make this test more tolerant of that 2020-10-28 12:21:31 +00:00
Clebert Suconic f6ef285859 ARTEMIS-2927 LVQ broken after restart 2020-10-22 13:32:19 -04:00
franz1981 b5753a0000 ARTEMIS-2958 Timed out waiting pool stop on backup restart
BackupManager::activated should correctly unblock
unauthorized blocking requests to allow a backup broker
to prompty restart in case of live failback
2020-10-22 12:44:42 -04:00
franz1981 0c8dd598b7 ARTEMIS-2957 ManagementContext is started twice 2020-10-21 07:33:22 +02:00
Emmanuel Hugonnet fdfc58171b [ARTEMIS-2939]: Artemis should not delete corrupt log files.
* Moving corrupted journal files to the attic folder.

Jira: https://issues.apache.org/jira/browse/ARTEMIS-2939
2020-10-20 18:39:06 -04:00
franz1981 4545749969 ARTEMIS-2941 Improve JDBC HA connection resiliency 2020-10-20 17:23:48 -04:00
franz1981 6932b4674d ARTEMIS-2949 Reduce GC on OperationContext::checkTasks 2020-10-20 12:28:10 -04:00
franz1981 769101ac69 ARTEMIS-2955 commons-dbcp2 performance issue with Derby Embedded DBMS
This commit is fixing:
- a missing commit that can make leak a connection
- restricting default specific commons-dbcp2 to the default data source
- setting poolPreparedStatements true by default
- configured embedded Derby to be in-memory to speedup tests
2020-10-20 10:48:12 +02:00
gtully c4832c3209 ARTEMIS-2953 - drop the use of non deterministic finalize 2020-10-19 13:55:52 -04:00
Justin Bertram 75e12b5e1d ARTEMIS-2947 Implement SecurityManager that supports replication 2020-10-19 10:07:57 -04:00
gtully 583bd3602a ARTEMIS-2888 ARTEMIS-2859 ARTEMIS-2768 - revert new page-store-name addressSetting, when the page store respects the target address and the size is tallied on the target address store, it is no longer neecessary 2020-10-19 14:04:35 +01:00
Clebert Suconic 621b845d16 ARTEMIS-2951 Fixing Large Message reference counting 2020-10-15 00:07:07 -04:00
gtully 4e8ce9ed10 ARTEMIS-2859 - track owning page store as in a message reference to ensure correct usage tracking, only track size on the owning store, reference everywhere else via refUp 2020-10-15 00:06:43 -04:00
Luis Alves 4584ab16df ARTEMIS-2886 pass FQQN regardless of match 2020-10-14 12:26:19 -05:00
Andy Taylor 0ce173dcb5 ARTEMIS-2838 - migrate to HawtIO 2
https://issues.apache.org/jira/browse/ARTEMIS-2838
2020-10-09 09:20:29 +01:00
Clebert Suconic 8fe4bfb29a ARTEMIS-2936 Adding logging.info on when to enable trace on critical analyzer 2020-10-07 10:40:55 -04:00
franz1981 b4532d944d ARTEMIS-2823 Use datasource with JDBC store db connections fixes
It add additional required fixes:
- Fixed uncommitted deleted tx records
- Fixed JDBC authorization on test
- Using property-based version for commons-dbcp2
- stopping thread pool after activation to allow JDBC lease locks to release the lock
- centralize JDBC network timeout configuration and save repeating it
- adding dbcp2 as the default pooled DataSource to be used
2020-10-06 10:19:06 +02:00
Mikko Uoti 2faafec737 ARTEMIS-2823 Use datasource with JDBC store db connections
Replaces direct jdbc connections with dbcp2 datasource. Adds
configuration options to use alternative datasources and to alter the
parameters. While adding slight overhead, this vastly improves the
management and pooling capabilities with db connections.
2020-10-06 08:32:58 +03:00
gtully 7a472d2782 ARTEMIS-2768 - fix up conditional to include null pageStoreName option, it was a little over eager 2020-09-28 15:53:06 +01:00
Andy Taylor c77bf50db4 ARTEMIS-2908 - Persist Divert Configuration in Bindings journal
https://issues.apache.org/jira/browse/ARTEMIS-2908
2020-09-25 10:03:40 -04:00
gtully 77d1c8cd7f ARTEMIS-2768 - add warning if wildcard subscription does not have a matching page-store-name address setting 2020-09-24 13:52:57 -04:00
Justin Bertram 0f60b5a8e4 ARTEMIS-2906 add lastAckTimestamp to message counter 2020-09-24 12:51:00 -04:00
franz1981 69fa4f3e93 ARTEMIS-2912 Handle NPE due to uninitialized members 2020-09-24 10:26:50 -04:00
franz1981 207c2265bf ARTEMIS-2912 Server start exception before activation can cause a zombie broker 2020-09-24 10:26:50 -04:00
gtully fa04881c6f ARTEMIS-2888 ARTEMIS-2859 ARTEMIS-2768 - new page-store-name addressSetting to allow wildcard subscriptions share a single page store 2020-09-24 09:39:31 +01:00
Justin Bertram beaacbfa8d ARTEMIS-2904 prevent acceptor from automatically starting 2020-09-23 20:19:16 -04:00
Justin Bertram f07ad09c07 NO-JIRA fix internal QueueControl method spelling 2020-09-23 12:08:57 -04:00
Justin Bertram 246bf08391 ARTEMIS-2909 revert ARTEMIS-2322
This reverts commit dbb3a90fe6.

The org.apache.activemq.artemis.core.server.Queue#getRate method is for
slow-consumer detection and is designed for internal use only.

Furthermore, it's too opaque to be trusted by a remote user as it only
returns the number of message added to the queue since *the last time
it was called*. The problem here is that the user calling it doesn't
know when it was invoked last. Therefore, they could be getting the
rate of messages added for the last 5 minutes or the last 5
milliseconds. This can lead to inconsistent and misleading results.

There are three main ways for users to track rates of message
production and consumption:

 1. Use a metrics plugin. This is the most feature-rich and flexible
way to track broker metrics, although it requires tools (e.g.
Prometheus) to store the metrics and display them (e.g. Grafana).

 2. Invoke the getMessageCount() and getMessagesAdded() management
methods and store the returned values along with the time they were
retrieved. A time-series database is a great tool for this job. This is
exactly what tools like Prometheus do. That data can then be used to
create informative graphs, etc. using tools like Grafana. Of course, one
can skip all the tools and just do some simple math to calculate rates
based on the last time the counts were retrieved.

 3. Use the broker's message counters. Message counters are the broker's
simple way of providing historical information about the queue. They
provide similar results to the previous solutions, but with less
flexibility since they only track data while the broker is up and
there's not really any good options for graphing.
2020-09-23 12:08:57 -04:00
Bernd Gutjahr 100d070942 ARTEMIS-2878 Add numberOfPages as metric
Added metric 'number.of.pages' to provide numberOfPages for an address.
2020-09-16 09:16:55 -05:00
Justin Bertram 9a90248f49 ARTEMIS-2889 better support for JMS topics with legacy LDAP plugin 2020-09-16 10:14:57 -04:00
Justin Bertram e47eb5ae20 ARTEMIS-589 flow control for individual STOMP subscribers 2020-09-16 10:13:47 -04:00
Justin Bertram 276a8bb029 ARTEMIS-2893 concurrent user admin actions can corrupt properties
When performing concurrent user admin actions (e.g. resetUser, addUser,
removeUser on ActiveMQServerControl) when using the
PropertiesLoginModule with reload=true the underlying user and role
properties files can get corrupted.

This commit fixes the issue via the following changes:
 - Add synchronization to the management commands
 - Add concurrency controls to underlying file access
 - Change CLI user commands to use remote methods instead of modifying
   the files directly. This avoids potential concurrent changes. This
   change forced me to modify the names of some of the commands'
   parameters to disambiguate them from connection-related parameters.
2020-09-16 10:11:23 -04:00
Justin Bertram 6be8966164 ARTEMIS-2901 support namespace for temporary queues 2020-09-16 10:10:28 -04:00
Howard Gao fe5b81fd55 ARTEMIS-2854 Non-durable subscribers stop receiving after failover
In a cluster scenario where non durable subscribers fail over to
backup while another live node forwarding messages to it,
there is a chance that the the live node keeps the old remote
binding for the subs and messages go to those
old remote bindings will result in "binding not found".
2020-09-16 10:03:36 -04:00
Andy Taylor c29a8cda5c ARTEMIS-2902 - expose at queue control messages held in a prepared tx
https://issues.apache.org/jira/browse/ARTEMIS-2902
2020-09-15 11:08:59 -04:00
Clebert Suconic 27c7385315 NO-JIRA using correct queue on RefOperation::rollback and remove TODO
this does not represent an issue as there are no semantic changes here.
I am doing this for correctness
2020-09-15 08:15:07 -04:00
Clebert Suconic 7cf5289efa ARTEMIS-2900 Expose property (getWholeMessageSize) so users can intercept size of messages and large messages 2020-09-14 15:35:46 -04:00
Justin Bertram cf92c16339 ARTEMIS-2886 put address/FQQN into new security manager interface
The default JAAS security manager doesn't need the address/FQQN for
authorization, but I'm putting it back into the interface because there
are other use cases which *do* need it.
2020-09-14 15:35:24 -04:00
gtully ec1c5a96c7 ARTEMIS-2895 - ensure propagated credentials are visible for bind and removed for subsequent mapping operations 2020-09-07 16:32:57 +01:00
Justin Bertram f5a6189e2d ARTEMIS-2890 FQQN security-settings + JMS not working 2020-09-03 16:52:51 -04:00
Luis De Bello 5087471ed3 ARTEMIS-2696 Releasing ByteBuf after reading content on WebSocket 2020-09-03 16:05:27 -04:00
Clebert Suconic c3887ed710 ARTEMIS-2887 Adding back Message.toString on audit logger 2020-08-26 21:48:30 -04:00
Justin Bertram 90853409a0 ARTEMIS-2886 optimize security auth
Both authentication and authorization will hit the underlying security
repository (e.g. files, LDAP, etc.). For example, creating a JMS
connection and a consumer will result in 2 hits with the *same*
authentication request. This can cause unwanted (and unnecessary)
resource utilization, especially in the case of networked configuration
like LDAP.

There is already a rudimentary cache for authorization, but it is
cleared *totally* every 10 seconds by default (controlled via the
security-invalidation-interval setting), and it must be populated
initially which still results in duplicate auth requests.

This commit optimizes authentication and authorization via the following
changes:

 - Replace our home-grown cache with Google Guava's cache. This provides
simple caching with both time-based and size-based LRU eviction. See more
at https://github.com/google/guava/wiki/CachesExplained. I also thought
about using Caffeine, but we already have a dependency on Guava and the
cache implementions look to be negligibly different for this use-case.
 - Add caching for authentication. Both successful and unsuccessful
authentication attempts will be cached to spare the underlying security
repository as much as possible. Authenticated Subjects will be cached
and re-used whenever possible.
 - Authorization will used Subjects cached during authentication. If the
required Subject is not in the cache it will be fetched from the
underlying security repo.
 - Caching can be disabled by setting the security-invalidation-interval
to 0.
 - Cache sizes are configurable.
 - Management operations exist to inspect cache sizes at runtime.
2020-08-26 13:36:24 -05:00
Domenico Francesco Bruscino 32bf9680f2 [maven-release-plugin] prepare for next development iteration 2020-08-24 16:03:24 +02:00