[ 
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]

Reply via email to