11079 Commits

Author SHA1 Message Date
Howard Gao
1f90b5be0d ARTEMIS-5062 ClusterConnectionControl has wrong annotation 2024-09-26 11:48:33 -05:00
Clebert Suconic
5808985a6a ARTEMIS-5067 Fix ClusteredMirrorSoakTest::testAutoCreateQueue 2024-09-26 10:15:18 -04:00
Robbie Gemmell
5bad88e701 ARTEMIS-4996: update to junit 5.11.1 2024-09-26 13:16:29 +01:00
Jean-Pascal Briquet
8fc6f09195 ARTEMIS-5063 messageMoved addition in ActiveMQServerMessagePlugin 2024-09-25 21:59:02 -04:00
Clebert Suconic
0c4c0542be ARTEMIS-5068 Temporary queue should not be mirrored 2024-09-25 21:58:13 -04:00
Clebert Suconic
9199b1f2dc ARTEMIS-5067 Preventing Race when one side is not connected in the mirror
There was already some verification at AMQPMirrorControllerSource::invalidTarget
however the verification failed on soak test ReplicatedBothNodesMirrorTest,
and an user I was working with also gave me evidence of this happening.

I'm improving the previous verification, which is actually a simplification that works on every case.
2024-09-25 21:57:45 -04:00
Clebert Suconic
30c5e63e0b ARTEMIS-5066 Disable Divert on Mirror Target 2024-09-25 21:57:45 -04:00
Clebert Suconic
b084eac71d ARTEMIS-5065 Remove Mirrored Properties on send for OpenWire and Core 2024-09-25 21:57:20 -04:00
Clebert Suconic
1d1f03ad5e ARTEMIS-4971 Warning on Unacked messages through mirror AckManager 2024-09-25 09:52:37 -04:00
Timothy Bish
e7ed4700e1 ARTEMIS-5054 Fix concurrent access issue of large message to Stomp Frame
When converting a large server message to an outgoing STOMP frame the converter
is allowing unsafe concurrent access to the large message internals which leads
to failures on message deliver as the state is out of sync amongst the dispatch
threads.
2024-09-25 14:12:33 +01:00
Justin Bertram
9bb63b656f ARTEMIS-5042 don't throw Exception when clearing cluster-connection bindings
Throwing an exception when clearing the bindings when a
cluster-connection is closed short-circuits the clearing (and closing)
process. This commit fixes that by simply logging the failure to clear
and continues on.

No new tests are added with this commit. It relies on existing tests.
2024-09-23 12:30:53 -07:00
Justin Bertram
9db78f6f59 ARTEMIS-1962 remove deprecated failover-on-server-shutdown from core bridge doc 2024-09-23 12:29:37 -05:00
Justin Bertram
f03708a486 ARTEMIS-5061 bump org.jline:jline from 3.26.3 to 3.27.0 2024-09-23 11:44:20 -05:00
Justin Bertram
28fb02ce6d ARTEMIS-5060 bump selenium.version from 4.24.0 to 4.25.0 2024-09-23 11:41:02 -05:00
Justin Bertram
233814bd6f ARTEMIS-5059 bump commons-io:commons-io from 2.16.1 to 2.17.0 2024-09-23 11:38:17 -05:00
Clebert Suconic
f92a846c21 ARTEMIS-5038 Mirrored ACKs are broken if using multiple priorities on producers
PriorityLinkedList has multiple sub-lists, before this commit PriorityLinkedList::setNodeStore would set the same node store between all the lists.
When a removeWithID was called for an item on list[0] the remove from list[4] would always succeed first. This operation would work correctly most of the time except
when tail and head is being used. Many NullPointerExceptions would be seen while iterating on the list for remove operations, and the navigation would be completely broken.

A test was added to PriorityLinkedListTest to make sure the correct lists were used however I was not able to reproduce the NPE condition in that test.
AccumulatedInPageSoakTest reproduced the exact condition for the NPE when significant load is used.
2024-09-23 11:48:24 -04:00
Justin Bertram
a70b053dbd ARTEMIS-5055 AIO not detected in official Ubuntu Docker image 2024-09-23 10:50:15 -04:00
Timothy Bish
4a80671dc6 ARTEMIS-5058 Update Qpid protonj2 to v1.0.0-M22
Update to latest release, used in AMQP tests
2024-09-20 14:42:22 -07:00
Gary Tully
ebd97bb91a ARTEMIS-5051 disable jolokia detectors in console war 2024-09-20 12:23:31 +01:00
Justin Bertram
7882c92e5d ARTEMIS-5049 add detailed logging for auth caches 2024-09-19 13:36:08 -07:00
Justin Bertram
90300285c7 ARTEMIS-5052 hash authentication cache keys
Existing tests should suffice to validate this change.
2024-09-19 11:55:03 -07:00
Justin Bertram
c8f51952f4 ARTEMIS-5048 clean up for removal of Base64.java 2024-09-19 11:06:37 -07:00
Robbie Gemmell
f2a410e9bc ARTEMIS-5050: misc improvements to 'Broker-to-Broker Connectivity' docs/index 2024-09-18 15:05:38 -05:00
Justin Bertram
d9d84f814c ARTEMIS-5048 use java.util.Base64
We've traditionally used org.apache.activemq.artemis.utils.Base64 for
Base64 encoding/decoding. This implementation is based on public domain
code from http://iharder.net/base64.

In Java 8 java.util.Base64 was introduced. I assumed we hadn't switched
to this implementation for performance reasons so I created a simple
JMH-based test to compare the two implementations and it appears to me
that java.util.Base64 is significantly faster than our current
implementation. Using the JDK's class will simplify our code and
improve performance. Also, it should be 100% backwards compatible
since Base64 encoding/decoding is standardized.
2024-09-18 12:15:14 -07:00
Justin Bertram
6d84f3741e ARTEMIS-5048 add test to demonstrate performance difference 2024-09-18 12:15:14 -07:00
Clebert Suconic
7860fd5fa9 ARTEMIS-5035 M_and_M_FactoryTest cannot use OpenWire as it's using JMS2 2024-09-18 11:33:05 -04:00
Justin Bertram
b79db8ed66 ARTEMIS-4781 AMQP message leaking large message file
When an AMQP message is sent over a cluster bridge it is embedded into a
Core message. If the size of the AMQP message is barely beneath the
minLargeMessageSize then the Core message in which the AMQP message is
embedded will become a large message. The on the bridge target when the
embedded AMQP message is extracted from the large Core message it will
not be considered "large." In this situation the file for the large Core
message will leak.

Thanks to Erwin Dondorp for the test. I renamed and refactored it a bit,
but the fundamentals came from Erwin.
2024-09-17 14:42:37 +01:00
Justin Bertram
dc64d9be78 ARTEMIS-5045 add test + polish 2024-09-16 10:17:03 +01:00
fogninid
91ddc6a2e7 ARTEMIS-5045 don't change the Micrometer MeterRegistry config
For embedded use-cases the Micrometer MeterRegistry may be passed in
from the application and used for other meters unrelated to the broker.
Therefore, the broker should not change the config of the MeterRegistry
(e.g. by adding common tags to all meters) as the config change(s) may
be incompatible with the needs of the embedding application.
2024-09-16 10:17:03 +01:00
Robbie Gemmell
239c3d3239 ARTEMIS-5046: update to groovy 4.0.23 2024-09-13 14:55:14 +01:00
Robbie Gemmell
b443331bba NO-JIRA: have dependabot ignore errorprone >= 2.32.0 since it needs Java 17+ 2024-09-12 14:32:10 +01:00
Laurent Dauvilaire
9702053af2 ARTEMIS-5033 Avoid NPE on method processAddSession in OpenWireConnection
The class org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection in ActiveMQ Artemis
is based on org.apache.activemq.broker.TransportConnection from ActiveMQ Classic,
and in the latter there is null check that doesn't exist in the former.
Therefore, I think it's worth adding this check.

The info should never be null since it is passed in off the wire from the OpenWire marshaller,
and state.getSessionIds() should also never return null because the underlying ConcurrentMap is initialized when ConnectionState is created.
2024-09-10 22:08:52 -05:00
Justin Bertram
1503a40fe7 ARTEMIS-4965 mitigate NPE when missing SQL property 2024-09-10 18:03:21 +01:00
Justin Bertram
eb19d586fd ARTEMIS-5044 bump io.micrometer:micrometer-core from 1.13.3 to 1.13.4 2024-09-10 11:15:26 -05:00
Justin Bertram
fff4eb06cc ARTEMIS-5043 bump log4j.version from 2.23.1 to 2.24.0 2024-09-10 11:10:23 -05:00
Justin Bertram
48e8de20e9 ARTEMIS-5015 bump org.jboss.marshalling:jboss-marshalling-river from 2.1.4.Final to 2.2.1.Final 2024-09-10 11:08:13 -05:00
Justin Bertram
46c7cb445c ARTEMIS-4182 support client ID config on bridges
Allow the client ID to be configured on normal bridge as well as
cluster-connection bridges. This makes the bridge connection easier to
identify on the target broker.
2024-09-10 16:46:20 +01:00
Robbie Gemmell
2365ebf0a7 ARTEMIS-5032: tweak test asserts following a failure in CI 2024-09-10 13:14:44 +01:00
Clebert Suconic
e322a418ce ARTEMIS-5010 Adding Failback scenario to ReplicatedBothNodesMirrorTest 2024-09-09 15:50:48 -04:00
Timothy Bish
5b3b995d61 ARTEMIS-4978 Fix AMQP messages not matching selector on replay
When using the replay functionality the application of filters to
the replayed messages fails to match against AMQP messages due to the
message not getting scanned when some message values are accessed.
2024-09-09 14:34:14 +01:00
Justin Bertram
5db043da0f ARTEMIS-5023 web temp directory cleaner now moot
Before the changes in 15dd24754ae8c6c2dd646fbd214f7a76b33b1197 temporary
web resources could proliferate and consume inordinate amounts of disk
space because their directory names were generated uniquely every time
Jetty was started. However, now that they are deterministic no
proliferation is possible. Jetty will create the directories when it
starts, remove them when it stops, and if it fails to clean-up on
shutdown (e.g. crash from OOME) it will clean-up and recreate them when
it starts.

Therefore, our own house-keeping of those directories is no longer
needed and, in fact, causes problems. For example, when executing the
`restartEmbeddedWebServer` management operation the temp web resources
will actually be removed inadvertently causing the web console to fail.

This commit removes the web temp house-keeping logic as well as the
related tests. It also modifies & adds tests to ensure Jetty does this
house-keeping on its own.
2024-09-09 12:57:06 +01:00
Timothy Bish
eef3ea9eb3 ARTEMIS-5039 Update netty to version 4.1.113.Final 2024-09-06 12:52:38 -07:00
Timothy Bish
acc415126f NO-JIRA Fix intermittent test failure 2024-09-06 11:15:57 -04:00
Clebert Suconic
daba842984 ARTEMIS-5035 Change some tests to use a random choice for protocol 2024-09-05 17:04:48 -04:00
Justin Bertram
8b265f4625 ARTEMIS-4804 & ARTEMIS-4805 mitigate NPEs in ScaleDownHandler 2024-09-05 13:57:47 -04:00
Timothy Bish
ec8026e4d6 ARTEMIS-5032 Ensure AMQP message priority is honored after restart
Ensure that on server restart the original priority value assigned to an
AMQP message is used when dispatching durable messages from the store.
The AMQP Header section is scanned if present and the priority value
is recovered in an efficient manner.
2024-09-05 13:56:28 -04:00
Justin Bertram
50c20554d8 ARTEMIS-5034 improve & document OpenWire protocol logging 2024-09-05 11:15:11 -05:00
Justin Bertram
defa911143 ARTEMIS-5028 use a default filter when none is specified for mngmnt ops
This is a small usability improvement for management whereby
invocations of some operations no longer require JSON boilerplate. It
impacts the following operations on the ActiveMQServerControl:

 - listConnections
 - listSessions
 - listAddresses
 - listQueues
 - listConsumers
 - listProducers
2024-09-05 12:04:41 -04:00
Clebert Suconic
7fb9aa5f97 ARTEMIS-5010 Addressing deadlock on AckManager
AckManager.flush would hold a lock on ackManager, There was a possible deadlock with MirrorTarget:

Thread 1:

        at org.apache.activemq.artemis.protocol.amqp.connect.mirror.AckManager.addRetry(AckManager.java:393)
        - waiting to lock <0x00000007990a13e8> (a org.apache.activemq.artemis.protocol.amqp.connect.mirror.AckManager)
        at org.apache.activemq.artemis.protocol.amqp.connect.mirror.AckManager.ack(AckManager.java:418)
        at org.apache.activemq.artemis.protocol.amqp.connect.mirror.AMQPMirrorControllerTarget.performAck(AMQPMirrorControllerTarget.java:479)
        at org.apache.activemq.artemis.protocol.amqp.connect.mirror.AMQPMirrorControllerTarget.postAcknowledge(AMQPMirrorControllerTarget.java:461)
        at org.apache.activemq.artemis.protocol.amqp.connect.mirror.AMQPMirrorControllerTarget.actualDelivery(AMQPMirrorControllerTarget.java:318)
        at org.apache.activemq.artemis.protocol.amqp.proton.ProtonAbstractReceiver.onMessageComplete(ProtonAbstractReceiver.java:361)

Thread 2:

        at jdk.internal.misc.Unsafe.park(java.base@11.0.8/Native Method)
        - parking to wait for  <0x000000079de0af38> (a java.util.concurrent.CountDownLatch$Sync)
        at java.util.concurrent.locks.LockSupport.parkNanos(java.base@11.0.8/LockSupport.java:234)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos(java.base@11.0.8/AbstractQueuedSynchronizer.java:1079)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(java.base@11.0.8/AbstractQueuedSynchronizer.java:1369)
        at java.util.concurrent.CountDownLatch.await(java.base@11.0.8/CountDownLatch.java:278)
        at org.apache.activemq.artemis.protocol.amqp.connect.mirror.AMQPMirrorControllerTarget.flush(AMQPMirrorControllerTarget.java:230)
        at org.apache.activemq.artemis.protocol.amqp.connect.mirror.AckManager$$Lambda$601/0x00000008005c3040.accept(Unknown Source)
        at java.lang.Iterable.forEach(java.base@11.0.8/Iterable.java:75)
        at org.apache.activemq.artemis.protocol.amqp.connect.mirror.AckManager.flushMirrorTargets(AckManager.java:184)
        - locked <0x00000007990a13e8> (a org.apache.activemq.artemis.protocol.amqp.connect.mirror.AckManager)
        at org.apache.activemq.artemis.protocol.amqp.connect.mirror.AckManager.initRetry(AckManager.java:162)
2024-09-04 16:19:52 -04:00
Justin Bertram
74691b8b61 ARTEMIS-5031 bump owasp.version from 10.0.3 to 10.0.4 2024-09-04 14:02:59 -05:00