Commit Graph

521 Commits

Author SHA1 Message Date
Endre Stølsvik 2de859f758 AMQ-8617: RedeliveryPolicy:Exponential Backoff + NonBlockingRedelivery = too long delays
(cherry picked from commit 393a696955)

Scenario on client:

1. Employing RedeliveryPolicy with exponential backoff (keeping maximum
redeliveries at default 6)
2. Enabled non-blocking redelivery
3. Receiving e.g. 100 consecutive poison messages (which eventually
should DLQ after max redeliveries)

This will result in massive redelivery delays due to a logic bug.

The reason is that redeliveryDelay is a field variable kept on the
ActiveMQMessageConsumer, instead of being a property on the message - or
that the redelivery delay was calculated per message based on the
redelivery count.

When consecutive messages rollbacks multiple times, the redeliveryDelay
field is continuously multiplied by the backoff multiplier, resulting in
enormous delays.

Fix: Ditch the field variable, instead calculating the redeliveryDelay
per delivery from the redelivery count. (This happens to be identical to
how it is done in afterRollback() in ActiveMQSession:1004.)

Test is added - which fails with the previous code, and passes with
this. Added a debug log line for the calculated delay.
2022-11-22 08:56:09 +01:00
Enrico Olivelli f103c2cec9 AMQ-9052: Selectors - improve perfomance of Equals and Not
(cherry picked from commit a978eb5115)
2022-08-18 07:21:59 +02:00
Enrico Olivelli 8d9fdd3b07 AMQ-8613 Improve performance of selectors with a big sequence of OR and AND logical expressions
(cherry picked from commit 4b08978062)
2022-08-17 07:47:29 +02:00
Lucas Tétreault 020519f54f Clean up remaining Xalan references
(cherry picked from commit 7b3f13feda)
2022-08-12 08:08:37 +02:00
Jean-Baptiste Onofré 68bed90c99 [AMQ-8518] Avoid NPE if path is null (at startup)
(cherry picked from commit 0849ae0211)
2022-04-19 08:29:21 +02:00
Christopher L. Shannon aa10747e94 AMQ-8550 - Check for null keystore/truststore passwords
Inside ActiveMQSslConnectionFactory the passwords should be checked for
null so a NPE isn't thrown. Null will be passed to the factories instead
and the keystore/truststore factories will try and load the keystores
using null for the password which may or may not work depending on the
implementation and if password is set.

(cherry picked from commit b93d58259c)
2022-04-05 13:41:54 -04:00
Christopher L. Shannon (cshannon) 8a4c928806 Revert "[AMQ-7309] Update to jakarta.jms/jakarta.jms-api:2.0.3 (#682)"
This reverts commit 67256c61b1.
2022-03-01 10:25:01 -05:00
Jean-Baptiste Onofré e597017200
Merge pull request #662 from jbonofre/AMQ-7426
[AMQ-7426] Upgrade to log4j2
2022-02-27 13:23:53 +01:00
Matt Pavlovich 094dbc89f3
[AMQ-8515] FailoverTransport should handle MaxFrameSizeExceededException (#785) 2022-02-25 19:46:45 -06:00
jbonofre 472dcf8497 [AMQ-7426] Upgrade to log4j2 2022-02-24 15:20:51 +01:00
Matt Pavlovich 00925c1eff [AMQ-8493] Minor deprecation cleanups in activemq-client 2022-02-16 12:58:29 -06:00
Christopher L. Shannon (cshannon) 19949e36bc [AMQ-8412] - Add some comments for maxFrameSizeEnabled 2022-02-07 08:45:28 -05:00
Christopher L. Shannon (cshannon) 26a3c55833 AMQ-8412 - Add wireformat negotiation test for maxFrameSizeEnabled
Verify that maxFrameSizeEnabled being configured on the client or the
server is not negotiated and won't affect the other
2022-02-07 08:03:06 -05:00
Matt Pavlovich 67a2edbf0d [AMQ-8412] Update client-side maxFrameSize handling to be more symetrical with server-side
- Handle in the OpenWireFormat class
 - Add unit tests to confirm
 - Verify compression is accounted for
 - Verify the ability to disable using wireFormat.maxFrameSizeEnabled=false
 - [cshannon] Reworked max frame size test case to add in all transports and all client/server cases
2022-02-06 17:45:11 -06:00
Matt Pavlovich 48d0fb1171 [AMQ-8412] Client-side management of max frame size
- Store maxFrameSize on client-side
 - Check messages on outbound send to send an actionable exception to the caller
 - Add a reason code for max message size exceeded (client-side)
2022-01-26 09:49:42 -06:00
Jean-Baptiste Onofré de563e76ce
Merge pull request #738 from mattrpav/AMQ-8341
[AMQ-8341] Remove FTP Blob strategy
2022-01-15 07:01:25 +01:00
Matt Pavlovich 2e784d07be [AMQ-8341] Remove FTP Blob strategy
- Remove commons-net dependency
2022-01-12 11:05:43 -06:00
Matt Pavlovich bc9ff5a09f [AMQ-8443] Allow reconnect command to work 2022-01-12 11:05:17 -06:00
Jean-Baptiste Onofré c2e2c818b5 [AMQ-8445] Fix SSLParameters set in the SSL transport 2022-01-12 08:48:00 +01:00
Jean-Baptiste Onofré 18b231bf9f
Merge pull request #711 from jgallimore/AMQ-8275
AMQ-8275 - Java 16 SSL - reflection warning
2021-12-19 08:01:05 +01:00
Matt Pavlovich 67256c61b1
[AMQ-7309] Update to jakarta.jms/jakarta.jms-api:2.0.3 (#682)
- API update only
 - Throw UnsupportedOperationException
 - Disable activemq-camel from build
 - Formatting fixes
 - Use geronimo-jms for osgi-related artifacts
 - Fix features.xml invalid xml header
 - Add a unit test to confirm JMS 2.0 methods for phase 1 (throw UnsupportedOperationException)
 - Add deliveryTime field to Message
 - Minor formatting fixes
2021-11-10 11:56:04 -06:00
Jonathan Gallimore 34c4e186fe AMQ-8275 eliminate use of reflection for SNI on SslTransport 2021-09-14 12:53:35 +01:00
xingrufei dbbf3cb3f3 [AMQ-8350] ActiveMQMessage.getStringProperty() should exchange equals method call objects 2021-08-06 10:22:38 +08:00
dvhvsekhar 8584b46e76
AMQ-8304: Added a check with !isStopping() also before attempting to read input stream (#672) 2021-07-04 06:42:45 +02:00
Christopher L. Shannon (cshannon) 3f5abd4433 AMQ-6660 - Use a separate lock for lazy scheduler creation to prevent
deadlocks

Switch to using a dedicated lock to initialize the Scheduler object
inside of ActiveMQConnection to prevent a deadlock scenario that occurs
when using the intrinsic ActiveMQConnection lock. This is using double
checked locking so this lock will only be contended with during lazy
creation and then will rely on the volatile reference for future reads
and when stopping/closing.
2021-06-25 11:37:25 -04:00
Jean-Baptiste Onofré ae777e9571
Merge pull request #665 from mattrpav/AMQ-8282
[AMQ-8282] Migrate from deprecated .newInstance() calls to .getConstr…
2021-06-04 06:18:27 +02:00
Christopher L. Shannon (cshannon) 2fcf2fd75f AMQ-8287 - fix NIOSSLTransport deadlock with serviceRead lock
This narrows the lock that was added to serviceRead() to secureRead()
which prevents processing commands while locked which should solve the
deadlock issues
2021-06-02 09:47:24 -04:00
Matt Pavlovich 950a140455 [AMQ-8282] Migrate from deprecated .newInstance() calls to .getConstructors().newInstance 2021-06-02 08:30:36 -05:00
Matt Pavlovich 2cc17a2fa0 [AMQ-8279] Compiler warning cleanups
- Remove unsused imports (exept for generated classes)
 - Convert to T.valueOf on boxed primitives from new T()
2021-05-25 09:34:35 -05:00
gtully c4d2ddfce9 AMQ-7298 - fix regression with broker redelivery plugin, fix and test relates to AMQ-8168 2021-04-16 13:12:13 +01:00
Jean-Baptiste Onofré db6098c53a
Merge pull request #365 from jgallimore/master-AMQ-7149
AMQ-7149 Remove dependency activemq-http and activemq-stomp
2021-03-24 11:36:04 +01:00
Jean-Baptiste Onofré 4c7bb06503
Merge pull request #423 from mdaley/master
Stop failed timer task from breaking timers.
2021-03-23 14:43:43 +01:00
Jean-Baptiste Onofré ea5b2d8813
Merge pull request #274 from ashakirin/master
AMQ-6894: limit poison exception message to 1024
2021-03-22 06:02:38 +01:00
Christopher L. Shannon (cshannon) 944ca6c7e1 AMQ-8183 - prevent infinite loop when maxFrameSize is exceeded
This makes sure the nio transport thread properly terminates if
maxFrameSize is exceeded with OpenWire to prevent an infinite loop that
uses up all the cpu
2021-03-11 09:59:36 -05:00
Christopher L. Shannon (cshannon) 1654e6c79c AMQ-8169: Synchronize on serviceRead inside NIOSSLTransport
This is needed to prevent concurrent access to the SSLEngine during
initialization. This is a regression from when auto+nio+ssl was added.
2021-03-08 11:28:33 -05:00
jbonofre cbc1baa07a [AMQ-8097] Deal with deserialization with xstream unmarshal poison ack 2021-01-13 16:13:25 +01:00
Jean-Baptiste Onofré 02d4f8efec
Merge pull request #565 from alevandoski/master
AMQ-8011 - Performance Related issue in ClassLoadingAwareObjectInputS…
2020-11-21 19:05:54 +01:00
Jean-Baptiste Onofré 5bc7532d42
Merge pull request #569 from garydgregory/NPE_NetworkInterface_getNetworkInterfaces
Guard against null NetworkInterface.getNetworkInterfaces()
2020-11-20 18:13:19 +01:00
Gary Gregory d292372902 Guard against null return value from
java.net.NetworkInterface.getNetworkInterfaces().
2020-11-05 10:13:50 -05:00
Benjamin Graf a2e718f259 AMQ-8055 - rename posion to correct poison 2020-10-23 09:50:18 +02:00
Andrew Levandoski f3e0ab4c5a AMQ-8011 - Performance Related issue in ClassLoadingAwareObjectInputStream.checkSecurity() 2020-10-20 17:21:31 -04:00
gtully 0c986c33f6 AMQ-8039 - support system property configuration of the inactivity monitor thread pool, follow example of nio. new test to verify 2020-09-11 10:39:15 +01:00
Jean-Baptiste Onofré 4991668549
Merge pull request #517 from coheigea/AMQ-7450
AMQ-7450 - Put some restrictions on the URLs that are allowed in Blob…
2020-06-23 07:01:38 +02:00
jbonofre 88525ce650 [AMQ-7121] Set setter accessible (for JDK 11) 2020-06-22 17:35:49 +02:00
gtully ed41101755 AMQ-7497 - support reconnect of the single RA xaResource connection 2020-06-11 19:39:18 +01:00
Colm O hEigeartaigh 45108a2328 AMQ-7450 - Put some restrictions on the URLs that are allowed in BlobMessages 2020-05-25 14:24:10 +01:00
Pascal Schumacher efcca7d062 Fix javadoc warnings related to non-existing parameter names. 2020-05-22 10:49:39 +02:00
gtully 62cfe83e9d [AMQ-7291] rework fix to initializeWriting but just with the read only properties check 2020-05-21 10:41:58 +01:00
Jean-Baptiste Onofré 173426c55c
Merge pull request #535 from jbonofre/AMQ-7480
[AMQ-7480] Avoid NPE if original exception is null
2020-05-21 09:52:33 +02:00
jbonofre ecbeb6d2eb [AMQ-7480] Avoid NPE if original exception is null 2020-05-19 16:51:23 +02:00