Updated Branches:
refs/heads/master c20240cb4 -> d977eb7ec
Close view files cleanly on DB create/delete
The shutdown_sync was actually interfering with a clean shutdown
initiated by the index processes themselves when they received a 'DOWN'
message from their monitoring of the DB process. The explicit 'delete'
cast message in this patch is very probably redundant, but it makes the
intent clear. The important bit is to let the index process terminate
*and* get confirmation of the termination before attempting to nuke the
directory.
COUCHDB-1364
Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/d977eb7e
Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/d977eb7e
Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/d977eb7e
Branch: refs/heads/master
Commit: d977eb7ec52bc13dca7b4f530cb51f42df0f6224
Parents: c20240c
Author: Adam Kocoloski <kocolosk@apache.org>
Authored: Sun Dec 2 09:04:48 2012 -0500
Committer: Adam Kocoloski <kocolosk@apache.org>
Committed: Wed Dec 5 15:35:02 2012 -0800
----------------------------------------------------------------------
src/couch_index/src/couch_index_server.erl | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb/blob/d977eb7e/src/couch_index/src/couch_index_server.erl
----------------------------------------------------------------------
diff --git a/src/couch_index/src/couch_index_server.erl b/src/couch_index/src/couch_index_server.erl
index 48fa8e4..bc1fce7 100644
--- a/src/couch_index/src/couch_index_server.erl
+++ b/src/couch_index/src/couch_index_server.erl
@@ -160,7 +160,9 @@ reset_indexes(DbName, Root) ->
% shutdown all the updaters and clear the files, the db got changed
Fun = fun({_, {DDocId, Sig}}) ->
[{_, Pid}] = ets:lookup(?BY_SIG, {DbName, Sig}),
- couch_util:shutdown_sync(Pid),
+ MRef = erlang:monitor(process, Pid),
+ gen_server:cast(Pid, delete),
+ receive {'DOWN', MRef, _, _, _} -> ok end,
rem_from_ets(DbName, Sig, DDocId, Pid)
end,
lists:foreach(Fun, ets:lookup(?BY_DB, DbName)),
|