[ https://issues.apache.org/jira/browse/AMQ-7143?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16755721#comment-16755721 ]
Alan Protasio commented on AMQ-7143: ------------------------------------ This is the patch: [https://github.com/apache/activemq/pull/343] All tests are succeeding: "mvn clean install -Dactivemq.tests=all" > Temporary transaction file (PageFile) being opened and closed many times, > leading poor performance > -------------------------------------------------------------------------------------------------- > > 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 > Priority: Major > > Hi, > This is just an optimization when we have a transaction with many writes > (bigger than 10mb by default) and we create a temporary file. > 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)