Merge pull request #2438 from apache/reset-corrupt-view-index
Reset a view shard if the signature is wrong
diff --git a/src/couch_mrview/src/couch_mrview_index.erl b/src/couch_mrview/src/couch_mrview_index.erl
index 8542cc6..c96d871 100644
--- a/src/couch_mrview/src/couch_mrview_index.erl
+++ b/src/couch_mrview/src/couch_mrview_index.erl
@@ -127,6 +127,12 @@
NewSt = couch_mrview_util:init_state(Db, Fd, State, Header),
ensure_local_purge_doc(Db, NewSt),
{ok, NewSt};
+ {ok, {WrongSig, _}} ->
+ couch_log:error("~s has the wrong signature: expected: ~p but got ~p",
+ [IndexFName, Sig, WrongSig]),
+ NewSt = couch_mrview_util:reset_index(Db, Fd, State),
+ ensure_local_purge_doc(Db, NewSt),
+ {ok, NewSt};
no_valid_header ->
NewSt = couch_mrview_util:reset_index(Db, Fd, State),
ensure_local_purge_doc(Db, NewSt),
diff --git a/src/mem3/src/mem3_sync_event_listener.erl b/src/mem3/src/mem3_sync_event_listener.erl
index cd8a650..fa353d9 100644
--- a/src/mem3/src/mem3_sync_event_listener.erl
+++ b/src/mem3/src/mem3_sync_event_listener.erl
@@ -297,7 +297,7 @@
Ref = erlang:monitor(process, Pid),
RestartFun = fun() -> exit(EventMgr, kill) end,
- test_util:with_process_restart(config_event, RestartFun),
+ {_, _} = test_util:with_process_restart(config_event, RestartFun),
?assertNot(is_process_alive(EventMgr)),