couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Adam Kocoloski (JIRA)" <>
Subject [jira] [Commented] (COUCHDB-1583) improve the flow control in ibrowse streams
Date Wed, 31 Oct 2012 19:28:11 GMT


Adam Kocoloski commented on COUCHDB-1583:

Thanks for opening this ticket Bob.  Sorry for not firing off a topic branch sooner.  When
we started using the new replicator internally at Cloudant we noticed that long-running replications
would ultimately consume a ton of memory on the node mediating the replication and crash.
 I tracked it down to the mailbox for the process consuming the _changes feed over HTTP, and
from there to a misuse of ibrowse's stream_next API.  Admittedly the API is super-confusing;
it should have a big read warning box telling you that you may receive multiple messages for
each invocation of the function.

The patch is working well for us, and given that the commit landed directly on master I'm
going to go ahead and resolve this one.
> improve the flow control in ibrowse streams
> -------------------------------------------
>                 Key: COUCHDB-1583
>                 URL:
>             Project: CouchDB
>          Issue Type: Improvement
>          Components: Replication
>            Reporter: Bob Dionne
>            Assignee: Adam Kocoloski
>             Fix For: 1.3
> The flow control in ibrowse's async response streams is tricky.  We call
> stream_next to pull more data off the socket, but it seems that ibrowse
> will sometimes split that data into multiple messages.  If we call
> stream_next for each message we process we end up with an overflowing
> mailbox.
> This commit[1] changes the consumer so that it clears out the mailbox before
> calling stream_next.
> [1] 8ccf696f833a0f0a453d

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:

View raw message