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 2017/03/15 22:48:22 UTC

couch-index commit: updated refs/heads/COUCHDB-3326-clustered-purge to b56faf3 [Forced Update!]

Repository: couchdb-couch-index
Updated Branches:
  refs/heads/COUCHDB-3326-clustered-purge 79b45e1c1 -> b56faf318 (forced update)


Update couch_index to use new purge API

COUCHDB-3326


Project: http://git-wip-us.apache.org/repos/asf/couchdb-couch-index/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-couch-index/commit/b56faf31
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-couch-index/tree/b56faf31
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-couch-index/diff/b56faf31

Branch: refs/heads/COUCHDB-3326-clustered-purge
Commit: b56faf318f4e867846570f3b0006a96afd21f7ba
Parents: 4e779f2
Author: Mayya Sharipova <ma...@ca.ibm.com>
Authored: Mon Aug 15 09:37:05 2016 -0400
Committer: Paul J. Davis <pa...@gmail.com>
Committed: Wed Mar 15 17:48:10 2017 -0500

----------------------------------------------------------------------
 src/couch_index_updater.erl | 23 ++++++++++++++---------
 1 file changed, 14 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb-couch-index/blob/b56faf31/src/couch_index_updater.erl
----------------------------------------------------------------------
diff --git a/src/couch_index_updater.erl b/src/couch_index_updater.erl
index bf31460..6cc720e 100644
--- a/src/couch_index_updater.erl
+++ b/src/couch_index_updater.erl
@@ -133,10 +133,7 @@ update(Idx, Mod, IdxState) ->
         DbUpdateSeq = couch_db:get_update_seq(Db),
         DbCommittedSeq = couch_db:get_committed_update_seq(Db),
 
-        PurgedIdxState = case purge_index(Db, Mod, IdxState) of
-            {ok, IdxState0} -> IdxState0;
-            reset -> exit({reset, self()})
-        end,
+        {ok, PurgedIdxState} = purge_index(Db, Mod, IdxState),
 
         NumChanges = couch_db:count_changes_since(Db, CurrSeq),
 
@@ -201,11 +198,19 @@ purge_index(Db, Mod, IdxState) ->
     {ok, DbPurgeSeq} = couch_db:get_purge_seq(Db),
     IdxPurgeSeq = Mod:get(purge_seq, IdxState),
     if
-        DbPurgeSeq == IdxPurgeSeq ->
+        IdxPurgeSeq == DbPurgeSeq ->
             {ok, IdxState};
-        DbPurgeSeq == IdxPurgeSeq + 1 ->
-            {ok, PurgedIdRevs} = couch_db:get_last_purged(Db),
-            Mod:purge(Db, DbPurgeSeq, PurgedIdRevs, IdxState);
         true ->
-            reset
+            FoldFun = fun({PurgeSeq, _UUId, Id, Revs}, Acc) ->
+                Mod:purge(Db, PurgeSeq, [{Id, Revs}], Acc)
+            end,
+            {ok, NewStateAcc} = couch_db:fold_purged_docs(
+                    Db,
+                    IdxPurgeSeq,
+                    FoldFun,
+                    IdxState,
+                    []
+                ),
+            Mod:update_local_purge_doc(Db, NewStateAcc),
+            {ok, NewStateAcc}
     end.