gemmellr commented on a change in pull request #3728:
URL: https://github.com/apache/activemq-artemis/pull/3728#discussion_r705570521



##########
File path: 
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/connect/mirror/AMQPMirrorControllerTarget.java
##########
@@ -380,10 +394,7 @@ private void performAck(String nodeID, long messageID, 
Queue targetQueue, ACKMes
             logger.warn(e.getMessage(), e);
          }
       } else {
-         if (logger.isDebugEnabled()) {
-            logger.debug("Post ack Server " + server + " could not find 
messageID = " + messageID +
-                            " representing nodeID=" + nodeID);
-         }
+         performAckOnPage(nodeID, messageID, targetQueue, ackMessageOperation);

Review comment:
       The scan is done on the same thread that reads the pages, yes...but I 
dont see where there is any guarantee or coordination that the message hasnt 
already depaged by that thread before we eventually get round to asking it to 
do the scan for us, after trying and failing to ack the message on the queue 
itself from the other IO thread?
   
   To me it seems like the connection thread can try to ack on the queue, fail 
to do so as it isnt there yet...decide to pop a scan onto the paging thread, 
only for that thread to successfully depage the message while we are preparing 
the request, and then be asked to remove it from the paging store and fail at 
that because its no longer there anymore by the time it runs, but is now on the 
queue we wont check again.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to