You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2020/03/26 20:11:09 UTC
[activemq-artemis] branch master updated: ARTEMIS-1975 Fixing
deadlock after error processing
This is an automated email from the ASF dual-hosted git repository.
clebertsuconic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
The following commit(s) were added to refs/heads/master by this push:
new ddb67cc ARTEMIS-1975 Fixing deadlock after error processing
ddb67cc is described below
commit ddb67ccdb12829668c321b06c4c4349da722f4fb
Author: Clebert Suconic <cl...@apache.org>
AuthorDate: Thu Mar 26 16:07:18 2020 -0400
ARTEMIS-1975 Fixing deadlock after error processing
---
.../java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java
index 9ce735d..7d798b7 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java
@@ -3615,6 +3615,10 @@ public class QueueImpl extends CriticalComponentImpl implements Queue {
/** This will print errors and decide what to do with the errored consumer from the protocol layer. */
@Override
public void errorProcessing(Consumer consumer, Throwable t, MessageReference reference) {
+ executor.execute(() -> errorProcessing(consumer, t, reference));
+ }
+
+ private void internalErrorProcessing(Consumer consumer, Throwable t, MessageReference reference) {
synchronized (this) {
ActiveMQServerLogger.LOGGER.removingBadConsumer(t, consumer, reference);
// If the consumer throws an exception we remove the consumer