This is an automated email from the ASF dual-hosted git repository. vatamane pushed a commit to branch dont-skip-over-transient-mango-docs in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit b1d7a346427c3694cc6bc7205a66548b719b07dc Author: Nick Vatamaniuc <vatam...@apache.org> AuthorDate: Thu May 28 14:52:34 2020 -0400 Don't skip over docs in mango indices on erlfdb errors --- src/couch_views/src/couch_views_updater.erl | 5 +++++ src/couch_views/test/couch_views_updater_test.erl | 13 ++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/couch_views/src/couch_views_updater.erl b/src/couch_views/src/couch_views_updater.erl index 30dfac3..a87fab1 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 e456225..3c80537 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_indexer, [passthrough]), {Db, DDoc}. foreach_teardown({Db, _}) -> + meck:unload(), ok = fabric2_db:delete(fabric2_db:name(Db), []). @@ -131,6 +134,14 @@ 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,