You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by rn...@apache.org on 2025/10/09 14:00:02 UTC
(couchdb) branch deleted_document_ttl_enhancement created (now a4afdc935)
This is an automated email from the ASF dual-hosted git repository.
rnewson pushed a change to branch deleted_document_ttl_enhancement
in repository https://gitbox.apache.org/repos/asf/couchdb.git
at a4afdc935 change deleted_document_ttl to match scanner repeat format
This branch includes the following new commits:
new a4afdc935 change deleted_document_ttl to match scanner repeat format
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(couchdb) 01/01: change deleted_document_ttl to match scanner repeat format
Posted by rn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
rnewson pushed a commit to branch deleted_document_ttl_enhancement
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit a4afdc935bda91237ef45b0c5990eabddbb94a8b
Author: Robert Newson <rn...@apache.org>
AuthorDate: Thu Oct 9 14:43:46 2025 +0100
change deleted_document_ttl to match scanner repeat format
---
src/couch/src/couch_auto_purge_plugin.erl | 19 ++++++++++++++++---
.../test/eunit/couch_auto_purge_plugin_tests.erl | 4 ++--
src/couch_scanner/src/couch_scanner_util.erl | 3 ++-
src/docs/src/api/database/misc.rst | 6 +++---
src/docs/src/config/scanner.rst | 7 +++++--
5 files changed, 28 insertions(+), 11 deletions(-)
diff --git a/src/couch/src/couch_auto_purge_plugin.erl b/src/couch/src/couch_auto_purge_plugin.erl
index a6088cd42..e309a647a 100644
--- a/src/couch/src/couch_auto_purge_plugin.erl
+++ b/src/couch/src/couch_auto_purge_plugin.erl
@@ -133,14 +133,14 @@ ttl(St, DbName) ->
DbTTL =
case fabric:get_auto_purge_props(DbName) of
{ok, AutoPurgeProps} ->
- case couch_util:get_value(<<"deleted_document_ttl">>, AutoPurgeProps) of
+ case parse_deleted_document_ttl(AutoPurgeProps) of
TTL when is_integer(TTL) ->
TTL;
undefined ->
undefined;
Else ->
?WARN(
- "TTL in ~s as ttl was '~p', not integer",
+ "ignoring TTL in ~s as ttl was '~p'",
[DbName, Else],
meta(St)
),
@@ -156,6 +156,19 @@ ttl(St, DbName) ->
end,
if
DbTTL /= undefined -> DbTTL;
- DefaultTTL /= undefined -> list_to_integer(DefaultTTL);
+ DefaultTTL /= undefined -> parse_ttl(DefaultTTL);
true -> undefined
end.
+
+parse_deleted_document_ttl(AutoPurgeProps) ->
+ case couch_util:get_value( <<"deleted_document_ttl">>, AutoPurgeProps) of
+ undefined ->
+ undefined;
+ Else ->
+ parse_ttl(Else)
+ end.
+
+parse_ttl([$- | TTL]) ->
+ -(parse_ttl(TTL));
+parse_ttl(TTL) ->
+ couch_scanner_util:parse_non_weekday_period(TTL).
diff --git a/src/couch/test/eunit/couch_auto_purge_plugin_tests.erl b/src/couch/test/eunit/couch_auto_purge_plugin_tests.erl
index 371abcb05..5a322b7c0 100644
--- a/src/couch/test/eunit/couch_auto_purge_plugin_tests.erl
+++ b/src/couch/test/eunit/couch_auto_purge_plugin_tests.erl
@@ -62,7 +62,7 @@ t_no_auto_purge_by_default({_, DbName}) ->
ok.
t_auto_purge_after_config_ttl({_, DbName}) ->
- config:set(atom_to_list(?PLUGIN), "deleted_document_ttl", "-1000000", false),
+ config:set(atom_to_list(?PLUGIN), "deleted_document_ttl", "-3_hour", false),
ok = add_doc(DbName, <<"doc1">>, #{<<"_deleted">> => true}),
?assertEqual(1, doc_del_count(DbName)),
meck:reset(couch_scanner_server),
@@ -73,7 +73,7 @@ t_auto_purge_after_config_ttl({_, DbName}) ->
ok.
t_auto_purge_after_db_ttl({_, DbName}) ->
- ok = fabric:set_auto_purge_props(DbName, [{<<"deleted_document_ttl">>, -1000000}]),
+ ok = fabric:set_auto_purge_props(DbName, [{<<"deleted_document_ttl">>, "-3_hour"}]),
ok = add_doc(DbName, <<"doc1">>, #{<<"_deleted">> => true}),
?assertEqual(1, doc_del_count(DbName)),
meck:reset(couch_scanner_server),
diff --git a/src/couch_scanner/src/couch_scanner_util.erl b/src/couch_scanner/src/couch_scanner_util.erl
index ff4edafd3..e556ff369 100644
--- a/src/couch_scanner/src/couch_scanner_util.erl
+++ b/src/couch_scanner/src/couch_scanner_util.erl
@@ -22,7 +22,8 @@
compile_regexes/1,
match_regexes/2,
on_first_node/0,
- consistent_hash_nodes/1
+ consistent_hash_nodes/1,
+ parse_non_weekday_period/1
]).
-define(SECOND, 1).
diff --git a/src/docs/src/api/database/misc.rst b/src/docs/src/api/database/misc.rst
index 446113bc9..02a0fdcf7 100644
--- a/src/docs/src/api/database/misc.rst
+++ b/src/docs/src/api/database/misc.rst
@@ -373,12 +373,12 @@ following behavior:
Date: Mon, 22 Sep 2025 11:01:00 GMT
Server: CouchDB (Erlang/OTP)
- {"deleted_document_ttl": 259200}
+ {"deleted_document_ttl": "3_mon"}
.. http:put:: /{db}/_auto_purge
:synopsis: Update auto purge settings
- Retrieves the auto purge settings for the database. These settings
+ Updates the auto purge settings for the database. These settings
are used by the :ref:`auto purge plugin <config/auto_purge_plugin>`.
:param db: Database name
@@ -403,7 +403,7 @@ following behavior:
Content-Type: application/json
Host: localhost:5984
- {"deleted_document_ttl": 259200}
+ {"deleted_document_ttl": "3_hour"}
**Response**:
diff --git a/src/docs/src/config/scanner.rst b/src/docs/src/config/scanner.rst
index bad2480db..9c56891d2 100644
--- a/src/docs/src/config/scanner.rst
+++ b/src/docs/src/config/scanner.rst
@@ -256,7 +256,10 @@ settings in their ``[{plugin}]`` section.
.. config:option:: deleted_document_ttl
- Set the default interval, in seconds, before the plugin will purge
- a deleted document. The database may override this setting with the
+ Set the default interval before the plugin will purge
+ a deleted document. Possible ttl formats are: ``{num}_{timeunit}`` (ex.:
+ ``1000_sec``, ``30_min``, ``8_hours``, ``24_hour``, ``2_days``,
+ ``3_weeks``, ``1_month``).
+ The database may override this setting with the
:ref:`api/db/auto_purge` endpoint. If neither is set, the
plugin will not purge deleted documents.