summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Vatamaniuc <vatamane@apache.org>2020-05-28 14:52:34 -0400
committerNick Vatamaniuc <nickva@users.noreply.github.com>2020-05-28 15:00:45 -0400
commit10559eae51ded2371f4150836311cfe7517a230f (patch)
tree5fc5530ee436d7a49b66f361c20535cdfc16aa96
parent56738359ac92e10187e908e1620fef13476862fe (diff)
downloadcouchdb-10559eae51ded2371f4150836311cfe7517a230f.tar.gz
Don't skip over docs in mango indices on erlfdb errors
-rw-r--r--src/couch_views/src/couch_views_updater.erl5
-rw-r--r--src/couch_views/test/couch_views_updater_test.erl12
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,