Commit Graph

547 Commits

Author SHA1 Message Date
Clebert Suconic 657e4bf842 ARTEMIS-3538 Removing some extra // ---- 2021-11-04 08:43:14 -04:00
Clebert Suconic 8b3663e827 ARTEMIS-3538 Removing a few extra // ----- structural comments 2021-11-02 21:45:09 -04:00
Asukwo-comfort 923e4cc892 ARTEMIS-3538: Removing // --------- comments from the codebase 2021-11-02 21:44:12 -04:00
Domenico Francesco Bruscino 7988739f41 ARTEMIS-3543 Fix encrypted passwords in composite urls 2021-11-01 17:15:23 -04:00
Justin Bertram 402842062a [maven-release-plugin] prepare for next development iteration 2021-10-11 13:35:57 -05:00
Justin Bertram 5fcb763234 [maven-release-plugin] prepare release 2.19.0 2021-10-11 13:35:06 -05:00
franz1981 95d2de5aa4 NO-JIRA Save double property lookup on common case 2021-10-11 08:46:58 -04:00
Justin Bertram 1740f9cfef
ARTEMIS-3488 add system property for setting key in DefaultSensitiveStringCodec 2021-10-06 11:12:41 -05:00
Robbie Gemmell 20511375de NO-JIRA: update to errorprone 2.9.0, fix errors, enable it when running on Java 17+ 2021-09-29 11:55:40 +01:00
gtully 72cfda6b1a ARTEMIS-2007 - refactor to make use of existing refCountForConsumers for tracking consumer count and remove need for volatile redistributor 2021-09-24 15:07:01 +01:00
Clebert Suconic 0266582a8f ARTEMIS-3441 Remove a few finalize methods 2021-08-24 19:08:00 -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 9fd1d5941d ARTEMIS-3365 Fix NPE on CORE client disconnecting 2021-08-06 18:48:49 +02:00
Domenico Francesco Bruscino 3555dd7d25 ARTEMIS-3365 Add broker balancers 2021-08-06 08:33:21 -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
Justin Bertram 8799fe807e ARTEMIS-3302 fix regression with OpenSSL
When using the OpenSSL provider on the broker the getPeerCertificates()
method does *not* return a X509Certificate[] so we need to convert the
Certificate[] that is returned. This code is inspired by Tomcat's
org.apache.tomcat.util.net.jsse.JSSESupport class.
2021-08-04 09:19:41 -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 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
Robbie Gemmell 6b8fdcb079 ARTEMIS-3409: skip tests if preconditions cant be satisfied 2021-08-03 08:55:00 -04:00
Clebert Suconic b8d0674ef9 NO-JIRA AssertionLoggerHandler improvements
I decided on NO-JIRA as this is only support tests themselves. No need for release notes on this commit:

I changed logging-CI.properties to be the same as logging.properties, with the only exception as file and console are limited by WARN.
while the AssertionLogger would still get INFO. as that's required for certain tests.
2021-07-29 11:38:26 -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
Clebert Suconic b4aef3fca8 ARTEMIS-3386 Expiry messages using too many threads 2021-07-15 13:51:52 -04:00
Clebert Suconic fb5f6a3f82 NO-JIRA I got tired of the ThreadDump after Wait failures. I am removing it. 2021-07-13 08:21:11 -04:00
Justin Bertram 9f96e2d270 ARTEMIS-3379 add message details to consumer audit log 2021-07-06 16:15:50 -04:00
Clebert Suconic 4d7c6cc188 ARTEMIS-3373 Using consistent template terminology under the collections package 2021-07-02 15:59:32 -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
Robbie Gemmell dc7de89374 ARTEMIS-3341: update checkstyle, use consistent plugin version, fix some issues or tweak config to allow existing style 2021-06-10 20:53:16 +01:00
Justin Bertram e9c94e57d9 ARTEMIS-3288 support bulk user loading with basic security manager 2021-05-25 11:13:35 -05:00
Justin Bertram 3621258458 ARTEMIS-3285 potential duplicate messages with LVQ + non-destructive 2021-05-24 16:42:10 -04:00
Justin Bertram 81bbca15c1 ARTEMIS-3229 add details to AdressControl MBean 2021-05-24 11:51:14 -05:00
Clebert Suconic 27c343913f ARTEMIS-3297 Journal Retention Feature 2021-05-18 16:29:18 -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 a3295c9873 ARTEMIS-3271 removing not needed Field Updater and fixing reset 2021-04-29 15:11:52 +01:00
gtully 6e6ae3e205 ARTEMIS-3271 - tidy up comments and remove 'dead local store' 2021-04-29 09:42:52 +01:00
Clebert Suconic 39f468450b ARTEMIS-3271 Improve Critical Analyzer to sample single therads
worked in collaboration with Gary Tully on this fix
2021-04-28 16:47:58 +01:00
Domenico Francesco Bruscino b4789a894f ARTEMIS-3221 Migrating to Jakarta EE 8 artifacts 2021-04-09 11:49:59 -04:00
Sebastian Thomschke 76b76c56e9 NO-JIRA Remove unused private logger field 2021-03-18 15:05:51 -04:00
Clebert Suconic 05c55d382c ARTEMIS-3133 Just Encapsulating ObjectPool into a small utility 2021-03-04 10:38:14 -05: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 e7e3c71511 ARTEMIS-3113 - Artemis AMQP shouldn't depend on JMS.
* removing the  JMS dependency on AMQP module
* fixing destinations usage.
* refactoring to remove some JMS usage and make exceptions a bit better

Jira: https://issues.apache.org/jira/browse/ARTEMIS-3113
2021-02-11 10:45:01 -05:00
Clebert Suconic 7f64822591 Revert "[ARTEMIS-3113]: Artemis AMQP shouldn't depend on JMS."
This reverts commit 5079ad1019.
2021-02-10 18:34:25 -05:00
Clebert Suconic 5079ad1019 [ARTEMIS-3113]: Artemis AMQP shouldn't depend on JMS.
* removing the  JMS dependency on AMQP module
* fixing destinations usage.

Jira: https://issues.apache.org/jira/browse/ARTEMIS-3113
2021-02-10 12:47:38 -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
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
Clebert Suconic 017daa90f2 NO-JIRA fixing javadoc 2021-02-08 14:29:02 -05:00
Clebert Suconic 755947ee0b ARTEMIS-3084 Deal with async close and double close
Since the libaio.close is now async
there might be a situation with more than one close called during a server.stop();

This should deal with that scenario
2021-02-01 15:29:39 -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 8b093ec428 NO-JIRA minor logging doc updates 2021-01-20 12:19:58 -06:00
franz1981 19b04531c6 ARTEMIS-3049 Reduce live page lookup cost 2021-01-12 17:28:13 -05:00
gtully c384776d6f ARTEMIS-3033 - fix early visibility on cached simple string parts array 2021-01-07 11:32:46 +00:00
gtully 546bbfebfb ARTEMIS-3033 - implement address tree map for wildcards in place of linked addresses 2021-01-06 20:31:46 +00: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
franz1981 b3b5d4893c ARTEMIS-3016 Reduce DuplicateIDCache memory footprint 2021-01-06 09:05:01 -05:00
Clebert Suconic 4dd51bc1ef NO-JIRA Adding Thread Dump to be reported on failing Wait conditions 2020-12-22 13:28:30 -05:00
Domenico Francesco Bruscino 92d6ae87ed ARTEMIS-3027 Fixing AMQP persister encoding 2020-12-22 10:37:34 -05:00
franz1981 2b585508cc ARTEMIS-3025 JsonReader char[] leak 2020-12-09 10:55:09 -06:00
Justin Bertram ec2cb19f2d ARTEMIS-3003 NPE when reloading persisted security-setting 2020-11-20 10:08:39 -05: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
gtully d0bf65ea65 ARTEMIS-2990 - update wildcard address map on creation only, avoid duplicates and duplicate checks 2020-11-13 11:15:09 +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 a52ddb60ca ARTEMIS-2970 Adding test validaing Broker Connection with socket disconencts and TTL 2020-11-04 16:48:17 -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
Clebert Suconic c0b12b14c8 ARTEMIS-2969 / ARTEMIS-2937 Controlling connecting state on AMQP Broker Connection
- Fixed an issue where I needed to set connection to null after closing it
- Added more tests on QpidDispatchPeerTest (tests i would have done manually, and reproduced a few issues along the way)
2020-11-02 09:54:21 -05: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 a8bfe0dd42 NO-JIRA fixing javadoc for release 2020-10-30 10:02:50 -04:00
Clebert Suconic 753dac47d8 ARTEMIS-2937 Cleanup on tests 2020-10-29 10:09:36 -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
franz1981 e2c1848da4 ARTEMIS-2926 Scheduled task executions are skipped randomly
Making Scheduled task to be more reliable when
using scheduledComponent.delay() method and saving
periodic tasks to be skipped although on correct timing
2020-10-28 09:53:07 -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 8fe4bfb29a ARTEMIS-2936 Adding logging.info on when to enable trace on critical analyzer 2020-10-07 10:40:55 -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 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
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 c0c638d61f NO-JIRA Fixing intermittent failure on a REST test 2020-09-15 08:56:07 -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
Domenico Francesco Bruscino a549fcedde [maven-release-plugin] prepare release 2.15.0 2020-08-24 16:03:12 +02:00
Justin Bertram d86067a65b ARTEMIS-2872 support FQQN syntax for security-settings 2020-08-22 18:24:40 -05:00
Clebert Suconic 365663e368 NO-JIRA javadoc on NetUtil 2020-08-20 08:58:55 -04:00
Michael Pearce 2c506cc52a [ARTEMIS-2863] Add support to pause dispatch when group rebalance
Add test case
Add implementation
Add docs
2020-08-19 12:04:50 -04:00
Clebert Suconic 9842f45a49 ARTEMIS-2867 Do not cache IPs on DNS Entries for NetworkHealthCheck
In case of a DNS outage, the pinger should still fail
If we cache the InetAddress this would not be possible
2020-08-06 17:40:41 -04:00