[ 
https://issues.apache.org/jira/browse/ARTEMIS-4476?focusedWorklogId=887440&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-887440
 ]

ASF GitHub Bot logged work on ARTEMIS-4476:
-------------------------------------------

                Author: ASF GitHub Bot
            Created on: 26/Oct/23 18:10
            Start Date: 26/Oct/23 18:10
    Worklog Time Spent: 10m 
      Work Description: tabish121 commented on code in PR #4656:
URL: https://github.com/apache/activemq-artemis/pull/4656#discussion_r1373551849


##########
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonServerSenderContext.java:
##########
@@ -980,6 +983,19 @@ class DefaultController implements SenderController {
 
       @Override
       public Consumer init(ProtonServerSenderContext senderContext) throws 
Exception {
+         {
+            ProtonHandler handler;
+            Connection qpidConnection;
+            // Avoiding possible NPEs that could happen on mock tests
+            if (connection != null &&
+               (handler = connection.getHandler()) != null && (qpidConnection 
= handler.getConnection()) != null) {
+               if (qpidConnection.getRemoteState() == EndpointState.CLOSED) {
+                  logger.warn("AMQP Connection creating invalid consumer for 
closed connection", connection);
+                  throw new IllegalStateException("AMQP connection " + 
connection.getRemoteAddress() + " creating invalid consumer for closed 
connection");
+               }
+            }
+         }
+

Review Comment:
   I'm not particularly fond of this "make mocking easier approach" as it 
ignore what should be an invalid case of missing proton handler and connection. 
 If a test needs to mock this it should be able to supply mocks that answer 
with mocked versions of these objects.  





Issue Time Tracking
-------------------

    Worklog Id:     (was: 887440)
    Time Spent: 20m  (was: 10m)

> Connection Failure Race Conditions in AMQP and Core
> ---------------------------------------------------
>
>                 Key: ARTEMIS-4476
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-4476
>             Project: ActiveMQ Artemis
>          Issue Type: Task
>            Reporter: Clebert Suconic
>            Assignee: Clebert Suconic
>            Priority: Major
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> Failure Detection has a possibility to a race condition with the processing 
> of the client packets (or frames in the case of AMQP).
> This is because Netty detects the failure and removes the connection objects 
> while the packets are still processing things. 
> I was not able to reproduce this particular issue, but I have seen a case 
> from a memory dump where the consumer was created while the connection was 
> already dropped, leaving the consumer isolated without any communication with 
> clients.
> That particular case I could see a possibility because of these races.
> I am adding tests to exercise connection failure in stress and I was able to 
> reproduce other issues.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to