summaryrefslogtreecommitdiff
path: root/src/couch/src/couch_query_servers.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/couch/src/couch_query_servers.erl')
-rw-r--r--src/couch/src/couch_query_servers.erl11
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) ->