[
https://issues.apache.org/jira/browse/QPID-8557?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17394621#comment-17394621
]
Robert Godfrey commented on QPID-8557:
--------------------------------------
{quote}Although QPID-8547 introduced configurable parameters for
CoalescingCommitter, BDB log is flushed to disc on every message. That is
caused by calling future.get() inside of
org.apache.qpid.server.txn.AsyncCommand.complete(). Such call forces broker to
wait until CoalescingCommiter calls #CommitThread#processJobs() making the
operation effectively sync instead of async{quote}
Coalescing committer does not flush on every message - the design of
CoalescingCommitter is to coalesce writes from concurrent threads. Since the
flush to disk is essentially single threaded, the coalescing committer allows
for parallelism (in practice thread0 will start a flush, threads 1-X will then
be queued up waiting and then will all commit in a coalesced flush).
The broker code is written with the understanding that by the time the commit
returns, the data is safely written to disk - so I'd be very concerned about
changing the behaviour here
> [Broker-J] Batching mode for CoalescingCommitter
> ------------------------------------------------
>
> Key: QPID-8557
> URL: https://issues.apache.org/jira/browse/QPID-8557
> Project: Qpid
> Issue Type: Improvement
> Components: Broker-J
> Affects Versions: qpid-java-broker-8.0.5
> Reporter: Daniil Kirilyuk
> Priority: Minor
>
> Although QPID-8547 introduced configurable parameters for
> CoalescingCommitter, BDB log is flushed to disc on every message. That is
> caused by calling future.get() inside of
> org.apache.qpid.server.txn.AsyncCommand.complete(). Such call forces broker
> to wait until CoalescingCommiter calls #CommitThread#processJobs() making the
> operation effectively sync instead of async (every message triggers
> processJobs() and data flush).
> To improve overall performance we suggest to add batching mode for
> CoalescingCommitter, which would consider BDBVirtualHost parameters and flush
> data in chunks of size ${qpid.broker.bdbCommiterNotifyThreshold} or every
> ${qpid.broker.bdbCommiterWaitTimeout} ms (whatever comes first).
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]