@@ -278,8 +278,16 @@ handle_op(purge, T) ->
278278
279279do_apply (Cmd , # t {effects = Effs , index = Index , state = S0 ,
280280 log = Log } = T ) ->
281- {S , Effects , _ } = rabbit_fifo :apply (#{index => Index }, Cmd , [], S0 ),
282- T # t {state = S ,
281+ {St , Effects } = case rabbit_fifo :apply (#{index => Index }, Cmd , S0 ) of
282+ {S , _ , E } when is_list (E ) ->
283+ {S , E };
284+ {S , _ , E } ->
285+ {S , [E ]};
286+ {S , _ } ->
287+ {S , []}
288+ end ,
289+
290+ T # t {state = St ,
283291 index = Index + 1 ,
284292 effects = enq_effs (Effects , Effs ),
285293 log = [Cmd | Log ]}.
@@ -338,9 +346,13 @@ prefixes(Source, N, Acc) ->
338346
339347run_log (InitState , Entries ) ->
340348 lists :foldl (fun ({Idx , E }, {Acc0 , Efx0 }) ->
341- case rabbit_fifo :apply (meta (Idx ), E , Efx0 , Acc0 ) of
342- {Acc , Efx , _ } ->
343- {Acc , Efx }
349+ case rabbit_fifo :apply (meta (Idx ), E , Acc0 ) of
350+ {Acc , _ , Efx } when is_list (Efx ) ->
351+ {Acc , Efx0 ++ Efx };
352+ {Acc , _ , Efx } ->
353+ {Acc , Efx0 ++ [Efx ]};
354+ {Acc , _ } ->
355+ {Acc , Efx0 }
344356 end
345357 end , {InitState , []}, Entries ).
346358
0 commit comments