You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by da...@apache.org on 2018/04/26 18:59:07 UTC
[couchdb] 11/19: Add EPI hook for creating purge docs on compaction
This is an automated email from the ASF dual-hosted git repository.
davisp pushed a commit to branch COUCHDB-3326-clustered-purge-davisp-refactor-2
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit 2a741eb407c6e83c3a62432e015f01de9253ea55
Author: Paul J. Davis <pa...@gmail.com>
AuthorDate: Tue Apr 24 15:56:39 2018 -0500
Add EPI hook for creating purge docs on compaction
---
src/couch/src/couch_bt_engine_compactor.erl | 18 ++++++++++++++++++
src/couch/src/couch_db_plugin.erl | 8 +++++++-
2 files changed, 25 insertions(+), 1 deletion(-)
diff --git a/src/couch/src/couch_bt_engine_compactor.erl b/src/couch/src/couch_bt_engine_compactor.erl
index 6bb981e..370cae2 100644
--- a/src/couch/src/couch_bt_engine_compactor.erl
+++ b/src/couch/src/couch_bt_engine_compactor.erl
@@ -44,6 +44,12 @@ start(#st{} = St, DbName, Options, Parent) ->
} = St,
couch_log:debug("Compaction process spawned for db \"~s\"", [DbName]),
+ {ok, DDocs} = design_docs(DbName),
+ lists:map(fun(DDoc) ->
+ JsonDDoc = couch_doc:from_json_obj(DDoc),
+ couch_db_plugin:maybe_init_index_purge_state(DbName, JsonDDoc)
+ end, DDocs),
+
{ok, NewSt, DName, DFd, MFd, Retry} =
open_compaction_files(Header, FilePath, Options),
erlang:monitor(process, MFd),
@@ -582,3 +588,15 @@ update_compact_task(NumChanges) ->
end,
couch_task_status:update([{changes_done, Changes2}, {progress, Progress}]).
+
+design_docs(DbName) ->
+ try
+ case fabric:design_docs(mem3:dbname(DbName)) of
+ {error, {maintenance_mode, _, _Node}} ->
+ {ok, []};
+ Else ->
+ Else
+ end
+ catch error:database_does_not_exist ->
+ {ok, []}
+ end.
diff --git a/src/couch/src/couch_db_plugin.erl b/src/couch/src/couch_db_plugin.erl
index 740b812..0107403 100644
--- a/src/couch/src/couch_db_plugin.erl
+++ b/src/couch/src/couch_db_plugin.erl
@@ -18,7 +18,8 @@
after_doc_read/2,
validate_docid/1,
check_is_admin/1,
- on_delete/2
+ on_delete/2,
+ maybe_init_index_purge_state/2
]).
-define(SERVICE_ID, couch_db).
@@ -60,6 +61,11 @@ on_delete(DbName, Options) ->
Handle = couch_epi:get_handle(?SERVICE_ID),
couch_epi:apply(Handle, ?SERVICE_ID, on_delete, [DbName, Options], []).
+maybe_init_index_purge_state(DbName, DDoc) ->
+ Handle = couch_epi:get_handle(?SERVICE_ID),
+ couch_epi:apply(Handle, ?SERVICE_ID, maybe_init_index_purge_state,
+ [DbName, DDoc], []).
+
%% ------------------------------------------------------------------
%% Internal Function Definitions
%% ------------------------------------------------------------------
--
To stop receiving notification emails like this one, please contact
davisp@apache.org.