Procházet zdrojové kódy

fix(ft-asm): use regular map for meta fragments

There's actually no need to use an ordered data structure at all.
Andrew Mayorov před 2 roky
rodič
revize
9aec01e7a3
1 změnil soubory, kde provedl 5 přidání a 8 odebrání
  1. 5 8
      apps/emqx_ft/src/emqx_ft_assembly.erl

+ 5 - 8
apps/emqx_ft/src/emqx_ft_assembly.erl

@@ -37,10 +37,7 @@
     status :: status(),
     status :: status(),
     coverage :: coverage() | undefined,
     coverage :: coverage() | undefined,
     properties :: properties() | 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()})}),
     segs :: emqx_wdgraph:t(emqx_ft:offset(), {node(), filefrag({segment, segmentinfo()})}),
     size :: emqx_ft:bytes()
     size :: emqx_ft:bytes()
 }).
 }).
@@ -63,7 +60,7 @@
 new(Size) ->
 new(Size) ->
     #asm{
     #asm{
         status = {incomplete, {missing, filemeta}},
         status = {incomplete, {missing, filemeta}},
-        meta = orddict:new(),
+        meta = #{},
         segs = emqx_wdgraph:new(),
         segs = emqx_wdgraph:new(),
         size = Size
         size = Size
     }.
     }.
@@ -111,7 +108,7 @@ coverage(#asm{coverage = Coverage}) ->
 
 
 -spec nodes(t()) -> [node()].
 -spec nodes(t()) -> [node()].
 nodes(#asm{meta = Meta, segs = Segs}) ->
 nodes(#asm{meta = Meta, segs = Segs}) ->
-    S1 = orddict:fold(
+    S1 = maps:fold(
         fun(_Meta, {Node, _Fragment}, Acc) ->
         fun(_Meta, {Node, _Fragment}, Acc) ->
             ordsets:add_element(Node, Acc)
             ordsets:add_element(Node, Acc)
         end,
         end,
@@ -131,7 +128,7 @@ properties(#asm{properties = Properties}) ->
     Properties.
     Properties.
 
 
 status(meta, #asm{meta = Meta}) ->
 status(meta, #asm{meta = Meta}) ->
-    status(meta, orddict:to_list(Meta));
+    status(meta, maps:to_list(Meta));
 status(meta, [{Meta, {_Node, _Frag}}]) ->
 status(meta, [{Meta, {_Node, _Frag}}]) ->
     {complete, Meta};
     {complete, Meta};
 status(meta, []) ->
 status(meta, []) ->
@@ -150,7 +147,7 @@ status(coverage, #asm{segs = Segments, size = Size}) ->
 
 
 append_filemeta(Asm, Node, Fragment = #{fragment := {filemeta, Meta}}) ->
 append_filemeta(Asm, Node, Fragment = #{fragment := {filemeta, Meta}}) ->
     Asm#asm{
     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}}}) ->
 append_segmentinfo(Asm, _Node, #{fragment := {segment, #{size := 0}}}) ->