diff options
author | Nick Vatamaniuc <vatamane@apache.org> | 2020-05-28 14:52:34 -0400 |
---|---|---|
committer | Nick Vatamaniuc <nickva@users.noreply.github.com> | 2020-05-28 15:00:45 -0400 |
commit | 10559eae51ded2371f4150836311cfe7517a230f (patch) | |
tree | 5fc5530ee436d7a49b66f361c20535cdfc16aa96 | |
parent | 56738359ac92e10187e908e1620fef13476862fe (diff) | |
download | couchdb-10559eae51ded2371f4150836311cfe7517a230f.tar.gz |
Don't skip over docs in mango indices on erlfdb errors
-rw-r--r-- | src/couch_views/src/couch_views_updater.erl | 5 | ||||
-rw-r--r-- | src/couch_views/test/couch_views_updater_test.erl | 12 |
2 files changed, 16 insertions, 1 deletions
diff --git a/src/couch_views/src/couch_views_updater.erl b/src/couch_views/src/couch_views_updater.erl index 30dfac326..a87fab117 100644 --- a/src/couch_views/src/couch_views_updater.erl +++ b/src/couch_views/src/couch_views_updater.erl @@ -31,6 +31,11 @@ index(Db, #doc{id = Id, revs = Revs} = Doc, _NewWinner, _OldWinner, NewRevId, index_int(Db, Doc, Seq) end catch + error:{erlfdb, ErrCode} when is_integer(ErrCode) -> + DbName = fabric2_db:name(Db), + couch_log:error("Mango index erlfdb error Db ~s Doc ~p ~p", + [DbName, Id, ErrCode]), + erlang:raise(error, {erlfdb, ErrCode}, erlang:get_stacktrace()); Error:Reason -> DbName = fabric2_db:name(Db), couch_log:error("Mango index error for Db ~s Doc ~p ~p ~p", diff --git a/src/couch_views/test/couch_views_updater_test.erl b/src/couch_views/test/couch_views_updater_test.erl index e45622512..0dfc57461 100644 --- a/src/couch_views/test/couch_views_updater_test.erl +++ b/src/couch_views/test/couch_views_updater_test.erl @@ -35,7 +35,8 @@ indexer_test_() -> ?TDEF_FE(index_docs), ?TDEF_FE(update_doc), ?TDEF_FE(delete_doc), - ?TDEF_FE(includes_design_docs) + ?TDEF_FE(includes_design_docs), + ?TDEF_FE(handle_erlfdb_errors) ] } } @@ -68,10 +69,12 @@ foreach_setup() -> Docs = make_docs(3), fabric2_db:update_docs(Db, Docs), + meck:new(couch_views_fdb, [passthrough]), {Db, DDoc}. foreach_teardown({Db, _}) -> + meck:unload(), ok = fabric2_db:delete(fabric2_db:name(Db), []). @@ -131,6 +134,13 @@ includes_design_docs({Db, _}) -> ], Docs). +handle_erlfdb_errors({Db, _}) -> + meck:expect(couch_views_fdb, write_doc, fun(_, _, _, _) -> + error({erlfdb, 1009}) + end), + ?assertError({erlfdb, 1009}, fabric2_db:update_docs(Db, [doc(4)])). + + run_query(Db, DDoc) -> Args = #mrargs{ view_type = map, |