diff options
author | Damien F. Katz <damien@apache.org> | 2008-12-18 21:43:34 +0000 |
---|---|---|
committer | Damien F. Katz <damien@apache.org> | 2008-12-18 21:43:34 +0000 |
commit | 2a6ad51f1acd4cae30a6e976d00444a1a6931702 (patch) | |
tree | 9f501a26ca689cf3b237a0cfe4966a768b008603 /src/couchdb/couch_view_group.erl | |
parent | 6cc0a3fcaddb3094f8f0fcd5bd51b3e74e70d11c (diff) |
fix for crash of couch_server when database non-existant
git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@727832 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/couchdb/couch_view_group.erl')
-rw-r--r-- | src/couchdb/couch_view_group.erl | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/couchdb/couch_view_group.erl b/src/couchdb/couch_view_group.erl index cbbac92a..84c60428 100644 --- a/src/couchdb/couch_view_group.erl +++ b/src/couchdb/couch_view_group.erl @@ -47,9 +47,19 @@ request_group(Pid, Seq) -> start_link(InitArgs) -> case gen_server:start_link(couch_view_group, {InitArgs, self(), Ref = make_ref()}, []) of - {ok, Pid} -> {ok, Pid}; - ignore -> receive {Ref, Error} -> Error end; - Error -> Error + {ok, Pid} -> + {ok, Pid}; + ignore -> + receive + {Ref, Pid, Error} -> + case process_info(self(), trap_exit) of + {trap_exit, true} -> receive {'EXIT', Pid, _} -> ok end; + {trap_exit, false} -> ok + end, + Error + end; + Error -> + Error end. % init differentiates between temp and design_doc views. It creates a closure @@ -67,7 +77,7 @@ init({InitArgs, ReturnPid, Ref}) -> updater_pid = Pid, group=Group}}; Error -> - ReturnPid ! {Ref, Error}, + ReturnPid ! {Ref, self(), Error}, ignore end. |