activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From shoukunhuai <...@git.apache.org>
Subject [GitHub] activemq-artemis pull request #1827: Improve paged message acknowledge
Date Wed, 31 Jan 2018 02:29:16 GMT
GitHub user shoukunhuai opened a pull request:

    https://github.com/apache/activemq-artemis/pull/1827

    Improve paged message acknowledge

    
    
    Cache `messageID`, `transactionID` and `isLargeMessage`
    in PagedReference, so that when acknowledge, we do not have to
    get PagedMessage which may be GCed and cause re-read entire page.
    
    Also, in RefsOperation::afterCommit do not lock queue when do
    postAcknowledge. I think this method is thread safe.
    
    And last, decrement ref count after commit only if it is a paged large message.
    Large message depends on this operation to delete file. Other implements does nothing
in this method.
    
    All those change is to avoid get PagedMessage when acknowledge.
    
    Let me know if there is anything wrong.
    
    @clebertsuconic would you please help review this PR? I will create jira issue when necessary.
    
    Attached is thread dump when doing stress test, we found most of server thread is blocked
on page operation.
    We use Artemis 2.4.0, run 10 jmeter engine, for each engine started 100 publisher and
50 subscriber.
    We changed jmeter to use shared subscription, and blockOnAcknowledge is set true.
    
    [jstack.txt](https://github.com/apache/activemq-artemis/files/1680132/jstack.txt)


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/shoukunhuai/activemq-artemis enhance-paged-ack

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/activemq-artemis/pull/1827.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #1827
    
----
commit 52d63a5802353966236f1f9eec85d577e1941a12
Author: huaishk <shoukunhuai@...>
Date:   2018-01-31T01:48:43Z

    Improve paged message acknowledge
    
    Cache `messageID`, `transactionID` and `isLargeMessage`
    in PagedReference, so that when acknowledge, we do not have to
    get PagedMessage which may be GCed and cause re-read entire page.
    
    Also, in RefsOperation::afterCommit do not lock queue when do
    postAcknowledge. I think this method is thread safe.

----


---

Mime
View raw message