Skip to content
This repository was archived by the owner on May 25, 2021. It is now read-only.

Commit 0bad010

Browse files
Mayya Sharipovajiangphcn
authored andcommitted
Update to use new purge API
COUCHDB-3326
1 parent 4e779f2 commit 0bad010

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

src/couch_index_updater.erl

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -133,10 +133,7 @@ update(Idx, Mod, IdxState) ->
133133
DbUpdateSeq = couch_db:get_update_seq(Db),
134134
DbCommittedSeq = couch_db:get_committed_update_seq(Db),
135135

136-
PurgedIdxState = case purge_index(Db, Mod, IdxState) of
137-
{ok, IdxState0} -> IdxState0;
138-
reset -> exit({reset, self()})
139-
end,
136+
{ok, PurgedIdxState} = purge_index(Db, Mod, IdxState),
140137

141138
NumChanges = couch_db:count_changes_since(Db, CurrSeq),
142139

@@ -201,11 +198,20 @@ purge_index(Db, Mod, IdxState) ->
201198
{ok, DbPurgeSeq} = couch_db:get_purge_seq(Db),
202199
IdxPurgeSeq = Mod:get(purge_seq, IdxState),
203200
if
204-
DbPurgeSeq == IdxPurgeSeq ->
201+
IdxPurgeSeq == DbPurgeSeq ->
205202
{ok, IdxState};
206-
DbPurgeSeq == IdxPurgeSeq + 1 ->
207-
{ok, PurgedIdRevs} = couch_db:get_last_purged(Db),
208-
Mod:purge(Db, DbPurgeSeq, PurgedIdRevs, IdxState);
209203
true ->
210-
reset
204+
FoldFun = fun({PurgeSeq, _UUId, Id, Revs}, Acc) ->
205+
{ok, StateAcc} = Mod:purge(Db, PurgeSeq, [{Id, Revs}], Acc),
206+
StateAcc
207+
end,
208+
{ok, NewStateAcc} = couch_db:fold_purged_docs(
209+
Db,
210+
IdxPurgeSeq,
211+
FoldFun,
212+
IdxState,
213+
[]
214+
),
215+
Mod:update_local_purge_doc(Db, NewStateAcc),
216+
{ok, NewStateAcc}
211217
end.

0 commit comments

Comments
 (0)