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().