This is an automated email from the ASF dual-hosted git repository.

vatamane pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/couchdb.git


The following commit(s) were added to refs/heads/main by this push:
     new fe0ff7f42 Ignore design docs in the shards db in the scanner
fe0ff7f42 is described below

commit fe0ff7f425e21c924b9f4c036b8dbd5f05f6b349
Author: Nick Vatamaniuc <[email protected]>
AuthorDate: Wed Oct 29 16:15:50 2025 -0400

    Ignore design docs in the shards db in the scanner
    
    Skip them in the odd chance users users added any in there.
---
 src/couch_scanner/src/couch_scanner_plugin.erl      | 3 +++
 src/couch_scanner/test/eunit/couch_scanner_test.erl | 5 +++++
 2 files changed, 8 insertions(+)

diff --git a/src/couch_scanner/src/couch_scanner_plugin.erl 
b/src/couch_scanner/src/couch_scanner_plugin.erl
index 9aa7b1de0..84bbf6496 100644
--- a/src/couch_scanner/src/couch_scanner_plugin.erl
+++ b/src/couch_scanner/src/couch_scanner_plugin.erl
@@ -300,6 +300,9 @@ scan_dbs(#st{cursor = Cursor} = St) ->
         couch_db:close(Db)
     end.
 
+scan_dbs_fold(#full_doc_info{id = <<?DESIGN_DOC_PREFIX, _/binary>>}, Acc) ->
+    % In case user added a design doc in the dbs database
+    {ok, Acc};
 scan_dbs_fold(#full_doc_info{} = FDI, #st{shards_db = Db} = Acc) ->
     Acc1 = Acc#st{cursor = FDI#full_doc_info.id},
     Acc2 = maybe_checkpoint(Acc1),
diff --git a/src/couch_scanner/test/eunit/couch_scanner_test.erl 
b/src/couch_scanner/test/eunit/couch_scanner_test.erl
index d288dc50a..5d6a22f38 100644
--- a/src/couch_scanner/test/eunit/couch_scanner_test.erl
+++ b/src/couch_scanner/test/eunit/couch_scanner_test.erl
@@ -63,6 +63,10 @@ setup() ->
     ok = fabric:create_db(DbName1, [{q, "2"}, {n, "1"}]),
     ok = fabric:create_db(DbName2, [{q, "2"}, {n, "1"}]),
     ok = fabric:create_db(DbName3, [{q, "2"}, {n, "1"}]),
+    % Add a design doc the shards db. Scanner should ignore it.
+    {ok, _} = couch_util:with_db(mem3_sync:shards_db(), fun(Db) ->
+        couch_db:update_doc(Db, #doc{id = <<"_design/foo">>}, [])
+    end),
     ok = add_doc(DbName1, ?DOC1, #{foo1 => bar}),
     ok = add_doc(DbName1, ?DOC2, #{
         foo2 => baz,
@@ -113,6 +117,7 @@ teardown({Ctx, {DbName1, DbName2, DbName3}}) ->
     fabric:delete_db(DbName1),
     fabric:delete_db(DbName2),
     fabric:delete_db(DbName3),
+    couch_server:delete(mem3_sync:shards_db(), [?ADMIN_CTX]),
     test_util:stop_couch(Ctx),
     meck:unload().
 

Reply via email to