summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Newson <rnewson@apache.org>2020-01-11 10:15:20 +0000
committerGitHub <noreply@github.com>2020-01-11 10:15:20 +0000
commite10498f3c6acc6703b353a535ee5c21222cd0bd3 (patch)
tree54af45c7f1da058128a58cdd8ead8c7f3886d75d
parentdd1b2817bbf7a0efce858414310a0c822ce89468 (diff)
parentc8a75fa0739575a3fd980b81ee5d5e3173de0b7a (diff)
downloadcouchdb-e10498f3c6acc6703b353a535ee5c21222cd0bd3.tar.gz
Merge pull request #2438 from apache/reset-corrupt-view-index
Reset a view shard if the signature is wrong
-rw-r--r--src/couch_mrview/src/couch_mrview_index.erl6
-rw-r--r--src/mem3/src/mem3_sync_event_listener.erl2
2 files changed, 7 insertions, 1 deletions
diff --git a/src/couch_mrview/src/couch_mrview_index.erl b/src/couch_mrview/src/couch_mrview_index.erl
index 8542cc63f..c96d87173 100644
--- a/src/couch_mrview/src/couch_mrview_index.erl
+++ b/src/couch_mrview/src/couch_mrview_index.erl
@@ -127,6 +127,12 @@ open(Db, State0) ->
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 cd8a650f1..fa353d9a8 100644
--- a/src/mem3/src/mem3_sync_event_listener.erl
+++ b/src/mem3/src/mem3_sync_event_listener.erl
@@ -297,7 +297,7 @@ should_terminate(Pid) ->
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)),