fix(fs-exp): reply with error when listing failed everywhere
This commit is contained in:
parent
11edfc1c6a
commit
258fabbf8b
|
@ -266,20 +266,32 @@ start_reader(Options, RelFilepath, CallerPid) ->
|
|||
%%
|
||||
|
||||
-spec list(options()) ->
|
||||
{ok, [exportinfo(), ...]} | {error, file_error()}.
|
||||
{ok, [exportinfo(), ...]} | {error, [{node(), _Reason}]}.
|
||||
list(_Options) ->
|
||||
Nodes = mria_mnesia:running_nodes(),
|
||||
Results = emqx_ft_storage_exporter_fs_proto_v1:list_exports(Nodes),
|
||||
{GoodResults, BadResults} = lists:partition(
|
||||
Replies = emqx_ft_storage_exporter_fs_proto_v1:list_exports(Nodes),
|
||||
{Results, Errors} = lists:foldl(
|
||||
fun
|
||||
({_Node, {ok, {ok, _}}}) -> true;
|
||||
(_) -> false
|
||||
({_Node, {ok, {ok, Files}}}, {Acc, Errors}) ->
|
||||
{Files ++ Acc, Errors};
|
||||
({Node, {ok, {error, _} = Error}}, {Acc, Errors}) ->
|
||||
{Acc, [{Node, Error} | Errors]};
|
||||
({Node, Error}, {Acc, Errors}) ->
|
||||
{Acc, [{Node, Error} | Errors]}
|
||||
end,
|
||||
lists:zip(Nodes, Results)
|
||||
{[], []},
|
||||
lists:zip(Nodes, Replies)
|
||||
),
|
||||
length(BadResults) > 0 andalso
|
||||
?SLOG(warning, #{msg => "list_remote_exports_failed", failures => BadResults}),
|
||||
{ok, [File || {_Node, {ok, {ok, Files}}} <- GoodResults, File <- Files]}.
|
||||
length(Errors) > 0 andalso
|
||||
?SLOG(warning, #{msg => "list_remote_exports_failed", errors => Errors}),
|
||||
case Results of
|
||||
[_ | _] ->
|
||||
{ok, Results};
|
||||
[] when Errors =:= [] ->
|
||||
{ok, Results};
|
||||
[] ->
|
||||
{error, Errors}
|
||||
end.
|
||||
|
||||
%%
|
||||
|
||||
|
|
Loading…
Reference in New Issue