You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by shoukunhuai <gi...@git.apache.org> on 2018/02/01 11:46:37 UTC
[GitHub] activemq-artemis pull request #1827: ARTEMIS-1650 Improve paged message ackn...
Github user shoukunhuai commented on a diff in the pull request:
https://github.com/apache/activemq-artemis/pull/1827#discussion_r165333374
--- Diff: artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/RefsOperation.java ---
@@ -152,14 +153,14 @@ protected void rollbackRedelivery(Transaction tx, MessageReference ref, long tim
@Override
public void afterCommit(final Transaction tx) {
for (MessageReference ref : refsToAck) {
- synchronized (ref.getQueue()) {
--- End diff --
I do this because in QueueImpl::postAcknowledge, the only thing that changed queue's state is decrement queue's delivering count, which i believe is thread safe.
While QueueImpl:postRollback is different, it will not return messages if purge on no consumers and there is no consumer at that time, since add/remove consumer will lock the queue. So we must lock the queue when do post rollback.
If no body is 100% sure about this, i will revert this change, since other change has improved a lot.
---