diff options
Diffstat (limited to 'src/couch/src/couch_query_servers.erl')
-rw-r--r-- | src/couch/src/couch_query_servers.erl | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/couch/src/couch_query_servers.erl b/src/couch/src/couch_query_servers.erl index 6649df364..c6d71345a 100644 --- a/src/couch/src/couch_query_servers.erl +++ b/src/couch/src/couch_query_servers.erl @@ -523,9 +523,14 @@ with_ddoc_proc(#doc{id=DDocId,revs={Start, [DiskRev|_]}}=DDoc, Fun) -> Rev = couch_doc:rev_to_str({Start, DiskRev}), DDocKey = {DDocId, Rev}, Proc = get_ddoc_process(DDoc, DDocKey), - try Fun({Proc, DDocId}) - after - ok = ret_os_process(Proc) + try Fun({Proc, DDocId}) of + Resp -> + ok = ret_os_process(Proc), + Resp + catch Tag:Err -> + Stack = erlang:get_stacktrace(), + catch proc_stop(Proc), + erlang:raise(Tag, Err, Stack) end. proc_prompt(Proc, Args) -> |