[ 
https://issues.apache.org/jira/browse/COUCHDB-180?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Paul Joseph Davis updated COUCHDB-180:
--------------------------------------

    Attachment: COUCHDB-180.patch

In this particular case the error is stemming from the fact that the gen_server 
in couch_view_group.erl was not closing it's view file descriptor contained in 
the Group. Looking around I noticed that there are a couple places where we're 
not closing the file descriptor properly so I just put the call to close in 
terminate/2.

I don't actually think this is the correct patch to apply because I'm pretty 
sure there are corner cases in temp views that could cause breakage. 
(Specifcally, one temp view hitting a reset condition and then causing the 
entire file to be closed even out from underneath other temp views.)

The proper answer to this I think will be to make sure that all view files are 
opened in the ref_counted mode which also means that couch_view will require 
work to deref all it's temp view file handles etc. Damien mentioned at one 
point that the fd even for permanent views should be opened by couch_view. This 
could work but a few of the reset functions will need to be switched from an 
outright delete to a truncate so as to not confuse couch_view.

Anyone have other ideas?

> Too many view files may be held open, rendering CouchDB unusable
> ----------------------------------------------------------------
>
>                 Key: COUCHDB-180
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-180
>             Project: CouchDB
>          Issue Type: Bug
>          Components: JavaScript View Server
>    Affects Versions: 0.9
>         Environment: OS X 10.5.5
>            Reporter: Paul Carey
>         Attachments: COUCHDB-180.patch, test_for_open_files.js
>
>
> On trunk (rev 728285), CouchDB will hold onto view files for a certain 
> request pattern. 
> Once a threshold of open files has been exceeded, all requests to CouchDB 
> will result in {error,emfile}.
> The attached test case runs through the following sequence n times.
> delete db
> create db
> create doc
> query non existant view
> create view
> query view
> On my machine a value of about 250 for n is enough for the threshold to be 
> exceeded. Regardless, running lsof clearly shows CouchDB holding multiple 
> refs to the same view file.
>  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to