summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilipe David Borba Manana <fdmanana@apache.org>2012-01-19 12:55:40 +0000
committerFilipe David Borba Manana <fdmanana@apache.org>2012-01-22 12:44:12 +0000
commit12a593c61dc0f154f3ade65a50706a019103d680 (patch)
tree51b6c58824f7a0ba0ed009a217d3bb590be9e7ea
parentc43fbc921528d7cbbb4c5b617abdc561f9370aa7 (diff)
downloadcouchdb-12a593c61dc0f154f3ade65a50706a019103d680.tar.gz
Close view compaction file when compaction is canceled
Closes COUCHDB-1384
-rw-r--r--src/couchdb/couch_view_group.erl7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/couchdb/couch_view_group.erl b/src/couchdb/couch_view_group.erl
index 769a69e75..97fc512d5 100644
--- a/src/couchdb/couch_view_group.erl
+++ b/src/couchdb/couch_view_group.erl
@@ -168,7 +168,12 @@ handle_call({start_compact, CompactFun}, _From, #group_state{compactor_pid=nil}
{ok, Fd} = open_index_file(compact, RootDir, DbName, GroupSig),
NewGroup = reset_file(Db, Fd, DbName, Group),
couch_db:close(Db),
- Pid = spawn_link(fun() -> CompactFun(Group, NewGroup, DbName) end),
+ unlink(Fd),
+ Pid = spawn_link(fun() ->
+ link(Fd),
+ CompactFun(Group, NewGroup, DbName),
+ unlink(Fd)
+ end),
{reply, {ok, Pid}, State#group_state{compactor_pid = Pid}};
handle_call({start_compact, _}, _From, State) ->
%% compact already running, this is a no-op