diff options
author | Robert Newson <rnewson@apache.org> | 2020-01-11 10:15:20 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-11 10:15:20 +0000 |
commit | e10498f3c6acc6703b353a535ee5c21222cd0bd3 (patch) | |
tree | 54af45c7f1da058128a58cdd8ead8c7f3886d75d | |
parent | dd1b2817bbf7a0efce858414310a0c822ce89468 (diff) | |
parent | c8a75fa0739575a3fd980b81ee5d5e3173de0b7a (diff) | |
download | couchdb-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.erl | 6 | ||||
-rw-r--r-- | src/mem3/src/mem3_sync_event_listener.erl | 2 |
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)), |