You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ei...@apache.org on 2019/11/22 01:57:53 UTC
[couchdb] 04/14: Remove log_btree and friends from compactor
This is an automated email from the ASF dual-hosted git repository.
eiri pushed a commit to branch 2167-no-view-changes
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit 53c3463567b5dc5959762f831852f61111951bf2
Author: Eric Avdey <ei...@eiri.ca>
AuthorDate: Mon Nov 4 14:18:48 2019 -0400
Remove log_btree and friends from compactor
---
src/couch_mrview/src/couch_mrview_compactor.erl | 80 ++-----------------------
1 file changed, 6 insertions(+), 74 deletions(-)
diff --git a/src/couch_mrview/src/couch_mrview_compactor.erl b/src/couch_mrview/src/couch_mrview_compactor.erl
index 9a069ce..17d67f1 100644
--- a/src/couch_mrview/src/couch_mrview_compactor.erl
+++ b/src/couch_mrview/src/couch_mrview_compactor.erl
@@ -41,9 +41,6 @@ compact(State) ->
sig=Sig,
update_seq=Seq,
id_btree=IdBtree,
- log_btree=LogBtree,
- seq_indexed=SeqIndexed,
- keyseq_indexed=KeySeqIndexed,
views=Views
} = State,
erlang:put(io_priority, {view_compact, DbName, IdxName}),
@@ -60,27 +57,15 @@ compact(State) ->
#mrst{
id_btree = EmptyIdBtree,
- log_btree = EmptyLogBtree,
views = EmptyViews
} = EmptyState,
- TotalChanges0 = case SeqIndexed orelse KeySeqIndexed of
- true -> NumDocIds * 2;
- _ -> NumDocIds
- end,
-
TotalChanges = lists:foldl(
fun(View, Acc) ->
{ok, Kvs} = couch_mrview_util:get_row_count(View),
- case SeqIndexed orelse KeySeqIndexed of
- true ->
- {ok, SKvs} = couch_mrview_util:get_view_changes_count(View),
- Acc + Kvs + SKvs;
- false ->
- Acc + Kvs
- end
+ Acc + Kvs
end,
- TotalChanges0, Views),
+ NumDocIds, Views),
couch_task_status:add_task([
{type, view_compaction},
@@ -126,24 +111,13 @@ compact(State) ->
FinalAcc2 = update_task(FinalAcc, length(Uncopied)),
- {NewLogBtree, FinalAcc3} = case SeqIndexed of
- true ->
- compact_log(LogBtree, BufferSize,
- FinalAcc2#acc{kvs=[],
- kvs_size=0,
- btree=EmptyLogBtree});
- _ ->
- {nil, FinalAcc2}
- end,
-
{NewViews, _} = lists:mapfoldl(fun({View, EmptyView}, Acc) ->
compact_view(View, EmptyView, BufferSize, Acc)
- end, FinalAcc3, lists:zip(Views, EmptyViews)),
+ end, FinalAcc2, lists:zip(Views, EmptyViews)),
unlink(EmptyState#mrst.fd),
{ok, EmptyState#mrst{
id_btree=NewIdBtree,
- log_btree=NewLogBtree,
views=NewViews,
update_seq=Seq
}}.
@@ -186,58 +160,16 @@ recompact_retry_count() ->
).
-compact_log(LogBtree, BufferSize, Acc0) ->
- FoldFun = fun(KV, Acc) ->
- #acc{btree = Bt, kvs = Kvs, kvs_size = KvsSize} = Acc,
- KvsSize2 = KvsSize + ?term_size(KV),
- case KvsSize2 >= BufferSize of
- true ->
- {ok, Bt2} = couch_btree:add(Bt, lists:reverse([KV | Kvs])),
- Acc2 = update_task(Acc, 1 + length(Kvs)),
- {ok, Acc2#acc{
- btree = Bt2, kvs = [], kvs_size = 0}};
- _ ->
- {ok, Acc#acc{
- kvs = [KV | Kvs], kvs_size = KvsSize2}}
- end
- end,
-
- {ok, _, FinalAcc} = couch_btree:foldl(LogBtree, FoldFun, Acc0),
- #acc{btree = Bt3, kvs = Uncopied} = FinalAcc,
- {ok, NewLogBtree} = couch_btree:add(Bt3, lists:reverse(Uncopied)),
- FinalAcc2 = update_task(FinalAcc, length(Uncopied)),
- {NewLogBtree, FinalAcc2}.
-
%% @spec compact_view(View, EmptyView, Retry, Acc) -> {CompactView, NewAcc}
compact_view(#mrview{id_num=VID}=View, EmptyView, BufferSize, Acc0) ->
- {NewBt, Acc1} = compact_view_btree(View#mrview.btree,
+ {NewBt, FinalAcc} = compact_view_btree(View#mrview.btree,
EmptyView#mrview.btree,
VID, BufferSize, Acc0),
- %% are we indexing changes by sequences?
- {NewSeqBt, Acc2} = case View#mrview.seq_indexed of
- true ->
- compact_view_btree(View#mrview.seq_btree,
- EmptyView#mrview.seq_btree,
- VID, BufferSize, Acc1);
- _ ->
- {nil, Acc1}
- end,
- {NewKeyBySeqBt, FinalAcc} = case View#mrview.keyseq_indexed of
- true ->
- compact_view_btree(View#mrview.key_byseq_btree,
- EmptyView#mrview.key_byseq_btree,
- VID, BufferSize, Acc2);
- _ ->
- {nil, Acc2}
- end,
-
{EmptyView#mrview{btree=NewBt,
- seq_btree=NewSeqBt,
update_seq=View#mrview.update_seq,
- purge_seq=View#mrview.purge_seq,
- key_byseq_btree=NewKeyBySeqBt}, FinalAcc}.
+ purge_seq=View#mrview.purge_seq}, FinalAcc}.
compact_view_btree(Btree, EmptyBtree, VID, BufferSize, Acc0) ->
Fun = fun(KV, #acc{btree = Bt, kvs = Kvs, kvs_size = KvsSize} = Acc) ->
@@ -302,7 +234,7 @@ swap_compacted(OldState, NewState) ->
unlink(OldState#mrst.fd),
erlang:demonitor(OldState#mrst.fd_monitor, [flush]),
-
+
{ok, NewState#mrst{fd_monitor=Ref}}.