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

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

                Author: ASF GitHub Bot
            Created on: 03/Aug/19 05:39
            Start Date: 03/Aug/19 05:39
    Worklog Time Spent: 10m 
      Work Description: franz1981 commented on pull request #2703: ARTEMIS-2380 
Fix delivering message in the case of consume close
URL: https://github.com/apache/activemq-artemis/pull/2703#discussion_r310339975
 
 

 ##########
 File path: 
artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java
 ##########
 @@ -1175,6 +1179,17 @@ public void addConsumer(final Consumer consumer) throws 
Exception {
 
    }
 
+   @Override
+   public void addLingerRef(Consumer consumer, MessageReference lingerRef) 
throws Exception {
+      lingerRef.emptyConsumerID();
+      lingerRefMap.put(lingerRef, consumer);
 
 Review comment:
   Beware putting `MessageReference` into a `Map`: 
`MessageReferenceImpl::hashCode` relies on `getMessage().hashCode()` and 
`CoreMessage::hashCode` will use the native hash code (like 
`java.lang.System#identityHashCode`).
   It is known that it would break biased locking optimization on it (see 
https://blogs.oracle.com/dave/biased-locking-in-hotspot for more detail): given 
that `CoreMessage` heavily relies on `synchronized` operation, I would suggest 
to measure the perf impact of it first :+1: 
 
----------------------------------------------------------------
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.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


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

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

> Fix delivering message in the case of consume close
> ---------------------------------------------------
>
>                 Key: ARTEMIS-2380
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-2380
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: Broker
>            Reporter: yangwei
>            Priority: Major
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> When consumer is closed and transaction is not committed or rollbacked, the 
> msg acked is not showed by delivering message but counted by delivering count.
> We add closed consumer if any message is acked but not committed or 
> rollbacked, and remove closed consumer if transaction is finished. In this 
> way, delivering messages can be properly retained.
> During calling hasCosnumer and getConsumerId, there is some race condition 
> that emptyConsumerId is called causing following getConsumerId throws 
> IllegalStateException. Also optimize it without extra effort.



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

Reply via email to