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,

Reply via email to