[
https://issues.apache.org/jira/browse/COUCHDB-2365?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mike Wallace updated COUCHDB-2365:
----------------------------------
Priority: Minor (was: Major)
Affects Version/s: 1.5.1
1.6.0
Fix Version/s: 2.0.0
> Failing multipart requests leave dangling couch_stream processes
> ----------------------------------------------------------------
>
> Key: COUCHDB-2365
> URL: https://issues.apache.org/jira/browse/COUCHDB-2365
> Project: CouchDB
> Issue Type: Bug
> Security Level: public(Regular issues)
> Components: Database Core
> Affects Versions: 1.5.1, 1.6.0
> Reporter: Mike Wallace
> Priority: Minor
> Fix For: 2.0.0
>
>
> Multipart requests spawn a couch_stream gen_server when couch_stream:open/2
> is called in couch_db:with_stream/3 [1]. Currently this gen_server will only
> be stopped when couch_db:with_stream/3 calls couch_stream:close/1 which
> happens after the callback Fun is executed [2]. If anything goes wrong before
> closing the stream then the couch_stream gen_server will exit as long as the
> process that opened the stream exits with a reason other than normal (since
> the processes are linked). However, if the process which opened the stream
> exits with reason normal before closing the stream then the process will live
> indefinitely.
> Ordinarily this is not particularly bothersome however if the volume of
> failing multipart requests is high the resources consumed by these dangling
> processes can be significant (consuming all available memory in the worst
> case).
> This can be reproduced by making failing multipart requests and observing the
> number of processes with initial call couch_stream:init/1 e.g.:
> https://gist.github.com/mikewallace1979/baad43ecfc01506ba8c5
> [1]
> https://github.com/apache/couchdb-couch/blob/master/src/couch_db.erl#L1108-L1121
> [2]
> https://github.com/apache/couchdb-couch/blob/master/src/couch_db.erl#L1123-L1133
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)