[
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.