summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/couch/src/couch_compaction_daemon.erl30
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),