You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "ASF subversion and git services (JIRA)" <ji...@apache.org> on 2019/01/31 15:32:00 UTC

[jira] [Commented] (AMQ-7143) Temporary transaction file (PageFile) being opened and closed many times, causing poor performance on high latency FS

    [ https://issues.apache.org/jira/browse/AMQ-7143?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16757363#comment-16757363 ] 

ASF subversion and git services commented on AMQ-7143:
------------------------------------------------------

Commit 9e6543551731ef0241967ca545c9a4956876cb86 in activemq's branch refs/heads/master from Alan Protasio
[ https://gitbox.apache.org/repos/asf?p=activemq.git;h=9e65435 ]

AMQ-7143 - Temporary transaction file (PageFile) being opened and closed many times, causing poor performance on high latency FS as NFS


> Temporary transaction file (PageFile) being opened and closed many times, causing poor performance on high latency FS
> ---------------------------------------------------------------------------------------------------------------------
>
>                 Key: AMQ-7143
>                 URL: https://issues.apache.org/jira/browse/AMQ-7143
>             Project: ActiveMQ
>          Issue Type: Improvement
>          Components: KahaDB
>    Affects Versions: 5.15.8
>            Reporter: Alan Protasio
>            Assignee: Christopher L. Shannon
>            Priority: Major
>
> Hi,
> This is an optimization when we have a transaction with many writes (bigger than 10mb by default) and activemq creates a temporary transaction file (pageFile transaction).
> The problem is when this transaction is committed, this temporary file is opened and closed many times (number of writes inside the transaction), causing poor performance (this is operation "freezes the world" during the checkpoint).
>  
> See:
> [https://github.com/apache/activemq/blob/master/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/page/PageFile.java#L1147]
> [https://github.com/apache/activemq/blob/master/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/page/PageFile.java#L203]
>  
> Note that is the recoveryFile is enabled, we open and close the temporary 3 times for each index write.
> There is also a small bug that if the transaction is rolledBack, the temporary file is left there forever, see:
> [https://github.com/apache/activemq/blob/master/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/page/Transaction.java#L686]
> [https://github.com/apache/activemq/blob/master/activemq-kahadb-store/src/main/java/org/apache/activemq/store/kahadb/disk/page/PageFile.java#L1200]
>  
> As the transaction is rolledback, no writes will be performed and so, the file will never be deleted.
> The proposed change, use the same "RandomAccessFile" object used in the transaction and close if when all writes is done (so we stop opening and closing it for each write, and only do it one time per transaction).
>  
> Thanks



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)