[
https://issues.apache.org/jira/browse/ARTEMIS-1056?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15945139#comment-15945139
]
ASF GitHub Bot commented on ARTEMIS-1056:
-----------------------------------------
Github user clebertsuconic commented on a diff in the pull request:
https://github.com/apache/activemq-artemis/pull/1140#discussion_r108418250
--- Diff:
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/handler/ProtonHandler.java
---
@@ -322,17 +308,22 @@ private void dispatch() {
// because we could have a distributed deadlock
// while processing events (for instance onTransport)
// while a client is also trying to write here
- while ((ev = popEvent()) != null) {
- for (EventHandler h : handlers) {
- if (log.isTraceEnabled()) {
- log.trace("Handling " + ev + " towards " + h);
- }
- try {
- Events.dispatch(ev, h);
- } catch (Exception e) {
- log.warn(e.getMessage(), e);
- connection.setCondition(new ErrorCondition());
+
+ synchronized (lock) {
+ while ((ev = collector.peek()) != null) {
+ for (EventHandler h : handlers) {
+ if (log.isTraceEnabled()) {
+ log.trace("Handling " + ev + " towards " + h);
+ }
+ try {
+ Events.dispatch(ev, h);
+ } catch (Exception e) {
+ log.warn(e.getMessage(), e);
+ connection.setCondition(new ErrorCondition());
--- End diff --
@gemmellr this is an extra safety measure.
Each method down the road is supposed to take care of exceptions.. This is
never supposed to happen.
We have a similar code on Core... sending an error condition to the client
in case any non treated exception happened.
> Performance improvements over AMQP
> ----------------------------------
>
> Key: ARTEMIS-1056
> URL: https://issues.apache.org/jira/browse/ARTEMIS-1056
> Project: ActiveMQ Artemis
> Issue Type: Improvement
> Affects Versions: 2.0.0
> Reporter: clebert suconic
> Assignee: clebert suconic
> Fix For: 2.next
>
>
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)