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