You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@couchdb.apache.org by "Jan Lehnardt (Commented) (JIRA)" <ji...@apache.org> on 2012/03/18 21:36:44 UTC
[jira] [Commented] (COUCHDB-1445) CouchDB deletes .view files if it
can't open them, even if the error is "emfile".
[ https://issues.apache.org/jira/browse/COUCHDB-1445?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13232355#comment-13232355 ]
Jan Lehnardt commented on COUCHDB-1445:
---------------------------------------
Randall Leeds replies:
Looks like a bug. Whenever there's a problem opening a view file,
couch_view tries to delete it. Clearly, this is not the right course of
action when the problem is due to emfile.
Here's a patch that I propose might fix it. I'd like to hear from another
dev on this, or if there's a better way we should bail out.
diff --git a/src/couchdb/couch_view_group.erl
b/src/couchdb/couch_view_group.erl
index 97fc512..ab075bd 100644
--- a/src/couchdb/couch_view_group.erl
+++ b/src/couchdb/couch_view_group.erl
@@ -469,6 +469,10 @@ open_index_file(RootDir, DbName, GroupSig) ->
case couch_file:open(FileName) of
{ok, Fd} -> {ok, Fd};
{error, enoent} -> couch_file:open(FileName, [create]);
+ {error, emfile} ->
+ ?LOG_ERROR("Could not open file for view index: max open files
reached. "
+ "Raise ERL_MAX_PORTS or system limits.", []),
+ throw({error, emfile});
Error -> Error
end.
> CouchDB deletes .view files if it can't open them, even if the error is "emfile".
> ---------------------------------------------------------------------------------
>
> Key: COUCHDB-1445
> URL: https://issues.apache.org/jira/browse/COUCHDB-1445
> Project: CouchDB
> Issue Type: Bug
> Components: JavaScript View Server
> Affects Versions: 1.2
> Reporter: Jan Lehnardt
> Fix For: 1.2
>
>
> Via Stefan Kögl on dev@:
> Another thing I noticed during my tests of CouchDB 1.2.x. I redirected
> live traffic to the instance and after a rather short time, requests
> were failing with the following information in the logs:
> [Sun, 18 Mar 2012 16:39:24 GMT] [error] [<0.27554.2>]
> {error_report,<0.31.0>,
> {<0.27554.2>,std_error,
> [{application,mochiweb},
> "Accept failed error",
> "{error,emfile}"]}}
> [Sun, 18 Mar 2012 16:39:24 GMT] [error] [<0.27554.2>]
> {error_report,<0.31.0>,
> {<0.27554.2>,crash_report,
> [[{initial_call,
> {mochiweb_acceptor,init,
> ['Argument__1','Argument__2',
> 'Argument__3']}},
> {pid,<0.27554.2>},
> {registered_name,[]},
> {error_info,
> {exit,
> {error,accept_failed},
> [{mochiweb_acceptor,init,3},
> {proc_lib,init_p_do_apply,3}]}},
> {ancestors,
> [couch_httpd,couch_secondary_services,
> couch_server_sup,<0.32.0>]},
> {messages,[]},
> {links,[<0.129.0>]},
> {dictionary,[]},
> {trap_exit,false},
> {status,running},
> {heap_size,233},
> {stack_size,24},
> {reductions,244}],
> []]}}
> I think "emfile" means that CouchDB (or mochiweb?) couldn't open any
> more files / connections. I've set the (hard and soft) nofile limit for
> user couchdb to 4096, but didn't raise the ERL_MAX_PORTS accordingly.
> Anyway, as soon as the error occured, CouchDB started writing most of my
> view files from scratch, rendering the instance unusable.
> I'd expect CouchDB to fail more gracefully when the maximum number of
> open files is reached. Is this a bug or expected behaviour?
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira