diff options
-rw-r--r-- | src/couch/src/couch_compaction_daemon.erl | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/couch/src/couch_compaction_daemon.erl b/src/couch/src/couch_compaction_daemon.erl index 1a535dba7..608ea1908 100644 --- a/src/couch/src/couch_compaction_daemon.erl +++ b/src/couch/src/couch_compaction_daemon.erl @@ -239,6 +239,36 @@ maybe_compact_views(DbName, [DDocName | Rest], Config) -> db_ddoc_names(Db) -> + DbName = couch_db:name(Db), + ClusteredDbName = mem3:dbname(DbName), + case ClusteredDbName == DbName of + true -> + db_local_ddoc_names(Db); + false -> + db_cluster_ddoc_names(ClusteredDbName) + end. + + +db_cluster_ddoc_names(ClusteredDbName) -> + try + case fabric:design_docs(ClusteredDbName) of + {ok, DDocs} -> + lists:map(fun({Props}) -> + DocId = proplists:get_value(<<"_id">>, Props), + <<"_design/", GroupName/binary>> = DocId, + GroupName + end, DDocs); + Error -> + ErrMsg = "Could not get design docs for ~p error:~p", + couch_log:error(ErrMsg, [ClusteredDbName, Error]), + [] + end + catch error:database_does_not_exist -> + [] + end. + + +db_local_ddoc_names(Db) -> FoldFun = fun ddoc_name/2, Opts = [{start_key, <<"_design/">>}], {ok, DDocNames} = couch_db:fold_docs(Db, FoldFun, [], Opts), |