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

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

                Author: ASF GitHub Bot
            Created on: 20/May/24 02:29
            Start Date: 20/May/24 02:29
    Worklog Time Spent: 10m 
      Work Description: clebertsuconic commented on code in PR #4932:
URL: https://github.com/apache/activemq-artemis/pull/4932#discussion_r1606177252


##########
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/AMQPLargeMessageWriter.java:
##########
@@ -170,16 +170,26 @@ private void resume() {
    }
 
    private void tryDelivering() {
+
+      final Delivery localDelivery = delivery;
+      final MessageReference localReference = reference;
+      final LargeBodyReader localBodyReader = largeBodyReader;
+
+      if (localDelivery == null || localReference == null || localBodyReader 
== null) {
+         logger.debug("Write got closed before tryDelivering was called");
+         return;
+      }

Review Comment:
   @gemmellr the exception is a network disconnect. Client disconnects and a 
network failure is transmitted. Close is called.
   
   For that we need to either use a cached local variable or add 
synchronization.
   
   I suggest we add a local cache as it doesn't really matter if we just send 
stuff on the already closed session. Adding synchronization on the write may 
risk deadlocks.
   
   
   I'm not able to fix it this week as I'm going out for a week. if you desire 
to pick up this issue please close my PR and open a new one.
   
   
   I will keep my as draft until I can come back into this.





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

    Worklog Id:     (was: 919965)
    Time Spent: 2h 10m  (was: 2h)

> NPE between AMQPLargeMessageWriter::tryDelivering and resetClose
> ----------------------------------------------------------------
>
>                 Key: ARTEMIS-4771
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-4771
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>            Reporter: Clebert Suconic
>            Priority: Major
>          Time Spent: 2h 10m
>  Remaining Estimate: 0h
>
> This is using RedHat's bits:
> java.lang.NullPointerException: Cannot invoke 
> "org.apache.qpid.proton.engine.Delivery.getTag()" because "this.delivery" is 
> null
>         at 
> org.apache.activemq.artemis.protocol.amqp.proton.AMQPLargeMessageWriter.tryDelivering(AMQPLargeMessageWriter.java:174)
>  ~[artemis-amqp-protocol-2.33.0.redhat-00009.jar:2.33.0.redhat-00009]
>         at 
> io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173)
>  ~[netty-common-4.1.108.Final-redhat-00001.jar:4.1.108.Final-redhat-00001]
>         at 
> io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166)
>  [netty-common-4.1.108.Final-redhat-00001.jar:4.1.108.Final-redhat-00001]
>         at 
> io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
>  [netty-common-4.1.108.Final-redhat-00001.jar:4.1.108.Final-redhat-00001]
>         at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:413) 
> [netty-transport-classes-epoll-4.1.108.Final-redhat-00001.jar:4.1.108.Final-redhat-00001]
>         at 
> io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
>  [netty-common-4.1.108.Final-redhat-00001.jar:4.1.108.Final-redhat-00001]
>         at 
> io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) 
> [netty-common-4.1.108.Final-redhat-00001.jar:4.1.108.Final-redhat-00001]
>         at 
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
>  [artemis-commons-2.33.0.redhat-00009.jar:2.33.0.redhat-00009]



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

Reply via email to