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/03/26 20:55:35 UTC

[couchdb] 04/33: WIP - couch_db.erl

This is an automated email from the ASF dual-hosted git repository.

davisp pushed a commit to branch COUCHDB-3326-clustered-purge-davisp-refactor
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit cb0ef63ef7d5330750a7aeba17386ccb4bd46206
Author: Paul J. Davis <pa...@gmail.com>
AuthorDate: Mon Mar 26 09:51:54 2018 -0500

    WIP - couch_db.erl
---
 src/couch/src/couch_db.erl | 29 +++++++++++++++--------------
 1 file changed, 15 insertions(+), 14 deletions(-)

diff --git a/src/couch/src/couch_db.erl b/src/couch/src/couch_db.erl
index b0b5d9f..2a9e56d 100644
--- a/src/couch/src/couch_db.erl
+++ b/src/couch/src/couch_db.erl
@@ -384,13 +384,14 @@ purge_docs(Db, IdRevs) ->
     Rev :: {non_neg_integer(), binary()},
     PurgeOption :: interactive_edit | replicated_changes,
     Reply :: {ok, []} | {ok, [Rev]}.
-purge_docs(#db{main_pid = Pid}, UUIdsIdsRevs, Options) ->
+purge_docs(#db{main_pid = Pid} = Db, UUIdsIdsRevs, Options) ->
     increment_stat(Db, [couchdb, database_purges]),
-    gen_server:call(Pid, {purge_docs, UUIdsIdsRevs, Options});
+    gen_server:call(Pid, {purge_docs, UUIdsIdsRevs, Options}).
 
 -spec get_purge_infos(#db{}, [UUId]) -> [PurgeInfo] when
     UUId :: binary(),
     PurgeInfo :: {PurgeSeq, UUId, Id, [Rev]} | not_found,
+    PurgeSeq :: non_neg_integer(),
     Id :: binary(),
     Rev :: {non_neg_integer(), binary()}.
 get_purge_infos(Db, UUIDs) ->
@@ -425,7 +426,7 @@ get_minimum_purge_seq(#db{} = Db) ->
         {start_key, list_to_binary(?LOCAL_DOC_PREFIX + "purge-")},
         {end_key_gt, list_to_binary(?LOCAL_DOC_PREFIX + "purge.")}
     ],
-    {ok, MinIdxSeq} = couch_db:fold_local_docs(Db, FoldFun, InitSeq, Opts),
+    {ok, MinIdxSeq} = couch_db:fold_local_docs(Db, FoldFun, InitMinSeq, Opts),
     FinalSeq = case MinIdxSeq < PurgeSeq - PurgeInfosLimit of
         true -> MinIdxSeq;
         false -> erlang:max(0, PurgeSeq - PurgeInfosLimit)
@@ -439,7 +440,7 @@ get_minimum_purge_seq(#db{} = Db) ->
     FinalSeq.
 
 
-purge_client_exists(DbName, DocID, Props) ->
+purge_client_exists(DbName, DocId, Props) ->
     % Warn about clients that have not updated their purge
     % checkpoints in the last "index_lag_warn_seconds"
     LagWindow = config:get_integer(
@@ -450,14 +451,14 @@ purge_client_exists(DbName, DocID, Props) ->
     LagThreshold = NowSecs - LagWindow,
 
     try
-        CheckFun = get_purge_client_fun(Props),
+        CheckFun = get_purge_client_fun(DocId, Props),
         Exists = CheckFun(DbName, DocId, Props),
         if not Exists -> ok; true ->
             Updated = couch_util:get_value(<<"updated_on">>, Props),
             if is_integer(Updated) and Updated > LagThreshold -> ok; true ->
-                Diff = NowSecs - LU,
+                Diff = NowSecs - Updated,
                 Fmt = "Purge checkpint '~s' not updated in ~p seconds",
-                couch_log:error(Fmt, [DocId, NowSecs - LU])
+                couch_log:error(Fmt, [DocId, Diff])
             end
         end,
         Exists
@@ -468,13 +469,13 @@ purge_client_exists(DbName, DocID, Props) ->
     end.
 
 
-get_purge_client_fun(DocId, Props) -
+get_purge_client_fun(DocId, Props) ->
     M0 = couch_util:get_value(<<"verify_module">>, Props),
-    try
-        M = binary_to_existing_atom(M0, latin1)
+    M = try
+        binary_to_existing_atom(M0, latin1)
     catch error:badarg ->
-        Fmt = "Missing index module '~s' for purge checkpoint '~s'",
-        couch_log:error(Fmt, [M0, DocId]),
+        Fmt1 = "Missing index module '~s' for purge checkpoint '~s'",
+        couch_log:error(Fmt1, [M0, DocId]),
         throw(failed)
     end,
 
@@ -483,8 +484,8 @@ get_purge_client_fun(DocId, Props) -
         F = binary_to_existing_atom(F0, latin1),
         fun M:F/2
     catch error:badarg ->
-        Fmt = "Missing function '~s' in '~s' for purge checkpoint '~s'",
-        couch_log:error(Fmt, [F0, M0, DocId]),
+        Fmt2 = "Missing function '~s' in '~s' for purge checkpoint '~s'",
+        couch_log:error(Fmt2, [F0, M0, DocId]),
         throw(failed)
     end.
 

-- 
To stop receiving notification emails like this one, please contact
davisp@apache.org.