Skip to content

Commit

Permalink
Better couch_db_set/couch_set_view_group logging on exit
Browse files Browse the repository at this point in the history
Change-Id: I357ad7abe0929c32f01e6aae7aa645b3df74f916
Reviewed-on: http://review.couchbase.org/13304
Reviewed-by: Filipe David Borba Manana <fdmanana@gmail.com>
Tested-by: Filipe David Borba Manana <fdmanana@gmail.com>
  • Loading branch information
fdmanana committed Feb 18, 2012
1 parent 7ac246f commit b573403
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 14 deletions.
36 changes: 28 additions & 8 deletions src/couch_set_view/src/couch_db_set.erl
Expand Up @@ -63,17 +63,17 @@ get_seqs(Pid) ->


init({SetName, Active, Passive, _} = Args) ->
try
{ok, State} = do_init(Args),
proc_lib:init_ack({ok, self()}),
gen_server:enter_loop(?MODULE, [], State)
{ok, State} = try
do_init(Args)
catch _:Error ->
?LOG_ERROR("Error opening database set `~s`: ~p~n"
"initial active partitions: ~w~n"
"initial passive partitions: ~w~n",
[SetName, Error, Active, Passive]),
exit(Error)
end.
end,
proc_lib:init_ack({ok, self()}),
gen_server:enter_loop(?MODULE, [], State).

do_init({SetName, Active0, Passive0, DbOpenOptions}) ->
Active = lists:usort(Active0),
Expand Down Expand Up @@ -222,9 +222,10 @@ handle_cast({compacted, DbName}, State) ->
end.


handle_info({'DOWN', _Ref, _, _, Reason}, State) ->
?LOG_INFO("Shutting down couch_db_set for set `~s` because a partition "
"died with reason: ~p", [State#state.set_name, Reason]),
handle_info({'DOWN', _Ref, _, Pid, Reason}, State) ->
?LOG_INFO("Shutting down couch_db_set for set `~s` because partition `~s` "
"died with reason: ~p",
[State#state.set_name, get_db_name(Pid, State), Reason]),
{stop, Reason, State}.


Expand Down Expand Up @@ -260,3 +261,22 @@ switch_partitions_state(PartList, SetName, OpenOpts, SetA, SetB) ->
raise_db_open_error(DbName, Error) ->
Msg = io_lib:format("Couldn't open database `~s`, reason: ~w", [DbName, Error]),
throw({db_open_error, DbName, Error, iolist_to_binary(Msg)}).


get_db_name(Pid, #state{master_db = #db{main_pid = Pid} = MasterDb}) ->
MasterDb#db.name;
get_db_name(Pid, #state{dbs_active = Active, dbs_passive = Passive}) ->
case find_db_name(Pid, dict:to_list(Active)) of
undefined ->
find_db_name(Pid, dict:to_list(Passive));
Name ->
Name
end.

find_db_name(_Pid, []) ->
undefined;
find_db_name(Pid, [{Name, {#db{main_pid = Pid}, _, _}} | _]) ->
Name;
find_db_name(Pid, [_ | Rest]) ->
find_db_name(Pid, Rest).

13 changes: 7 additions & 6 deletions src/couch_set_view/src/couch_set_view_group.erl
Expand Up @@ -224,16 +224,17 @@ start_link({RootDir, SetName, Group}) ->

init({_, _, Group} = InitArgs) ->
process_flag(trap_exit, true),
try
{ok, State} = do_init(InitArgs),
proc_lib:init_ack({ok, self()}),
gen_server:enter_loop(?MODULE, [], State, 1)
{ok, State} = try
do_init(InitArgs)
catch
_:Error ->
?LOG_ERROR("~s error opening set view group `~s` from set `~s`: ~p",
[?MODULE, Group#set_view_group.name, Group#set_view_group.set_name, Error]),
exit(Error)
end.
end,
proc_lib:init_ack({ok, self()}),
gen_server:enter_loop(?MODULE, [], State, 1).


do_init({_, SetName, _} = InitArgs) ->
case prepare_group(InitArgs, false) of
Expand Down Expand Up @@ -302,7 +303,7 @@ do_init({_, SetName, _} = InitArgs) ->
},
{ok, InitState};
Error ->
Error
throw(Error)
end.

handle_call({define_view, NumPartitions, ActiveList, ActiveBitmask,
Expand Down

0 comments on commit b573403

Please sign in to comment.