couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mike Wallace (JIRA)" <j...@apache.org>
Subject [jira] [Created] (COUCHDB-2365) Failing multipart requests leave dangling couch_stream processes
Date Wed, 08 Oct 2014 09:00:44 GMT
Mike Wallace created COUCHDB-2365:
-------------------------------------

             Summary: 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
            Reporter: Mike Wallace


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)

Mime
View raw message