From 9aec01e7a3283b8b0021ce217e891e40d321809d Mon Sep 17 00:00:00 2001 From: Andrew Mayorov Date: Thu, 23 Mar 2023 14:17:56 +0300 Subject: [PATCH] fix(ft-asm): use regular map for meta fragments There's actually no need to use an ordered data structure at all. --- apps/emqx_ft/src/emqx_ft_assembly.erl | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/apps/emqx_ft/src/emqx_ft_assembly.erl b/apps/emqx_ft/src/emqx_ft_assembly.erl index d0998d6ec..dead1132e 100644 --- a/apps/emqx_ft/src/emqx_ft_assembly.erl +++ b/apps/emqx_ft/src/emqx_ft_assembly.erl @@ -37,10 +37,7 @@ status :: status(), coverage :: coverage() | undefined, properties :: properties() | undefined, - meta :: orddict:orddict( - filemeta(), - {node(), filefrag({filemeta, filemeta()})} - ), + meta :: #{filemeta() => {node(), filefrag({filemeta, filemeta()})}}, segs :: emqx_wdgraph:t(emqx_ft:offset(), {node(), filefrag({segment, segmentinfo()})}), size :: emqx_ft:bytes() }). @@ -63,7 +60,7 @@ new(Size) -> #asm{ status = {incomplete, {missing, filemeta}}, - meta = orddict:new(), + meta = #{}, segs = emqx_wdgraph:new(), size = Size }. @@ -111,7 +108,7 @@ coverage(#asm{coverage = Coverage}) -> -spec nodes(t()) -> [node()]. nodes(#asm{meta = Meta, segs = Segs}) -> - S1 = orddict:fold( + S1 = maps:fold( fun(_Meta, {Node, _Fragment}, Acc) -> ordsets:add_element(Node, Acc) end, @@ -131,7 +128,7 @@ properties(#asm{properties = Properties}) -> Properties. status(meta, #asm{meta = Meta}) -> - status(meta, orddict:to_list(Meta)); + status(meta, maps:to_list(Meta)); status(meta, [{Meta, {_Node, _Frag}}]) -> {complete, Meta}; status(meta, []) -> @@ -150,7 +147,7 @@ status(coverage, #asm{segs = Segments, size = Size}) -> append_filemeta(Asm, Node, Fragment = #{fragment := {filemeta, Meta}}) -> Asm#asm{ - meta = orddict:store(Meta, {Node, Fragment}, Asm#asm.meta) + meta = maps:put(Meta, {Node, Fragment}, Asm#asm.meta) }. append_segmentinfo(Asm, _Node, #{fragment := {segment, #{size := 0}}}) ->