Skip to content

Commit c65eb74

Browse files
Merge pull request #694 from basho/merge-develop-2-2-to-develop
Merge develop 2 2 to develop
2 parents 1e49259 + 6637b1f commit c65eb74

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

src/yz_index_hashtree.erl

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -545,7 +545,7 @@ clear_tree(S=#state{index=Index}) ->
545545
S3#state{built=false, expired=false}.
546546

547547
destroy_trees(S) ->
548-
S2 = close_trees(S),
548+
S2 = close_trees(S, true),
549549
{_,Tree0} = hd(S#state.trees), % deliberately using state with live db ref
550550
hashtree:destroy(Tree0),
551551
S2.
@@ -563,7 +563,11 @@ maybe_build(S) ->
563563
%%
564564
%% @doc Flush and close the trees if not closed already.
565565
-spec close_trees(#state{}) -> #state{}.
566-
close_trees(S=#state{trees=Trees, closed=false}) ->
566+
close_trees(State) ->
567+
close_trees(State, false).
568+
569+
-spec close_trees(#state{}, SkipUpdate::boolean()) -> #state{}.
570+
close_trees(S=#state{trees=Trees, closed=false}, _WillDestroy=false) ->
567571
Trees2 = [begin
568572
NewTree =
569573
try hashtree:next_rebuild(Tree) of
@@ -584,11 +588,19 @@ close_trees(S=#state{trees=Trees, closed=false}) ->
584588
end,
585589
{IdxN, NewTree}
586590
end || {IdxN, Tree} <- Trees],
587-
Trees3 = [{IdxN, hashtree:close(Tree)} || {IdxN, Tree} <- Trees2],
588-
S#state{trees=Trees3, closed=true};
589-
close_trees(S) ->
591+
really_close_trees(Trees2, S);
592+
close_trees(#state{trees=Trees, closed=false}=State, _WillDestroy=true) ->
593+
really_close_trees(Trees, State);
594+
close_trees(S, _) ->
590595
S.
591596

597+
really_close_trees(Trees2, S) ->
598+
lists:foreach(fun really_close_tree/1, Trees2),
599+
S#state{trees = undefined, closed = true}.
600+
601+
really_close_tree({_IdxN, Tree}) ->
602+
hashtree:close(Tree).
603+
592604
-spec build_or_rehash(pid(), state()) -> ok.
593605
build_or_rehash(Tree, S) ->
594606
Type = case load_built(S) of

0 commit comments

Comments
 (0)