couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF subversion and git services (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (COUCHDB-2365) Failing multipart requests leave dangling couch_stream processes
Date Wed, 08 Oct 2014 11:11:34 GMT

    [ https://issues.apache.org/jira/browse/COUCHDB-2365?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14163335#comment-14163335
] 

ASF subversion and git services commented on COUCHDB-2365:
----------------------------------------------------------

Commit 8f9bd3e6c762b58a2d7d3bdc06131a606d904783 in couchdb-couch's branch refs/heads/2365-fix-failed-multipart-process-leak
from [~mikewallace]
[ https://git-wip-us.apache.org/repos/asf?p=couchdb-couch.git;h=8f9bd3e ]

[squash] Add a test for COUCHDB-2365


> 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