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

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

                Author: ASF GitHub Bot
            Created on: 06/Mar/24 15:10
            Start Date: 06/Mar/24 15:10
    Worklog Time Spent: 10m 
      Work Description: gemmellr commented on code in PR #4840:
URL: https://github.com/apache/activemq-artemis/pull/4840#discussion_r1514629712


##########
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonAbstractReceiver.java:
##########
@@ -320,28 +325,45 @@ public final void onMessage(Delivery delivery) throws 
ActiveMQAMQPException {
             return;
          }
 
-         final Message message = messageReader.readBytes(delivery);
+         {

Review Comment:
   Needed? Its already inside a small try block where this is the only actual 
work.



##########
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/AMQPLargeMessageWriter.java:
##########
@@ -81,33 +84,55 @@ public boolean isWriting() {
    public void close() {
       if (!closed) {
          try {
+            try {
+               if (largeBodyReader != null) {
+                  largeBodyReader.close();
+               }
+            } catch (Exception e) {
+               // if we get an error only at this point, there's nothing else 
we could do other than log.warn
+               logger.warn("{}", e.getMessage(), e);
+            }
             if (message != null) {
                message.usageDown();
             }
          } finally {
-            reset(true);
+            resetClosed();
          }
       }
    }
 
    @Override
-   public AMQPLargeMessageWriter open() {
-      if (!closed) {
-         throw new IllegalStateException("Trying to open an AMQP Large Message 
writer that was not closed");

Review Comment:
   Is it now allowed to duplicate-open a writer? Doesnt seem like it should be 
given what it does.



##########
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/ProtonAbstractReceiver.java:
##########
@@ -320,28 +325,45 @@ public final void onMessage(Delivery delivery) throws 
ActiveMQAMQPException {
             return;
          }
 
-         final Message message = messageReader.readBytes(delivery);
+         {
+            Message completeMessage;
+            if ((completeMessage = messageReader.readBytes(delivery)) != null) 
{
+               // notice the AMQP Large Message Reader will always return false
+               // and call the onMessageComplete directly
+               // since that happens asynchronously

Review Comment:
   return null?



##########
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/proton/handler/ProtonHandler.java:
##########
@@ -213,9 +224,7 @@ public boolean isHandler() {
    }
 
    public void requireHandler() {
-      if (!workerExecutor.inEventLoop()) {
-         throw new IllegalStateException("this method requires to be called 
within the handler, use the executor");
-      }
+      assert workerExecutor.inEventLoop();

Review Comment:
   Is the trade-off worth it? If it goes wrong in live usage then previously we 
would always find out. Now we probably wont, except any weird consequences of 
illegal use.
   
   Also feels like a separate change either way.





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

    Worklog Id:     (was: 908578)
    Time Spent: 6h 10m  (was: 6h)

> Move AMQP Large Message File Handling away from Netty thread
> ------------------------------------------------------------
>
>                 Key: ARTEMIS-4668
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-4668
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>    Affects Versions: 2.32.0
>            Reporter: Clebert Suconic
>            Assignee: Clebert Suconic
>            Priority: Major
>             Fix For: 2.33.0
>
>          Time Spent: 6h 10m
>  Remaining Estimate: 0h
>
> Operations like file.open, file.close, and file.sync should be moved away 
> from the Netty Thread for AMQP Large Messages
> This task now is about moving the processing for AMQP Messages. we may in a 
> near future also improve tunneled large messages. For now we will do for AMQP 
> messages only.



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

Reply via email to