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()) ->
|
-spec list(options()) ->
|
||||||
{ok, [exportinfo(), ...]} | {error, file_error()}.
|
{ok, [exportinfo(), ...]} | {error, [{node(), _Reason}]}.
|
||||||
list(_Options) ->
|
list(_Options) ->
|
||||||
Nodes = mria_mnesia:running_nodes(),
|
Nodes = mria_mnesia:running_nodes(),
|
||||||
Results = emqx_ft_storage_exporter_fs_proto_v1:list_exports(Nodes),
|
Replies = emqx_ft_storage_exporter_fs_proto_v1:list_exports(Nodes),
|
||||||
{GoodResults, BadResults} = lists:partition(
|
{Results, Errors} = lists:foldl(
|
||||||
fun
|
fun
|
||||||
({_Node, {ok, {ok, _}}}) -> true;
|
({_Node, {ok, {ok, Files}}}, {Acc, Errors}) ->
|
||||||
(_) -> false
|
{Files ++ Acc, Errors};
|
||||||
|
({Node, {ok, {error, _} = Error}}, {Acc, Errors}) ->
|
||||||
|
{Acc, [{Node, Error} | Errors]};
|
||||||
|
({Node, Error}, {Acc, Errors}) ->
|
||||||
|
{Acc, [{Node, Error} | Errors]}
|
||||||
end,
|
end,
|
||||||
lists:zip(Nodes, Results)
|
{[], []},
|
||||||
|
lists:zip(Nodes, Replies)
|
||||||
),
|
),
|
||||||
length(BadResults) > 0 andalso
|
length(Errors) > 0 andalso
|
||||||
?SLOG(warning, #{msg => "list_remote_exports_failed", failures => BadResults}),
|
?SLOG(warning, #{msg => "list_remote_exports_failed", errors => Errors}),
|
||||||
{ok, [File || {_Node, {ok, {ok, Files}}} <- GoodResults, File <- Files]}.
|
case Results of
|
||||||
|
[_ | _] ->
|
||||||
|
{ok, Results};
|
||||||
|
[] when Errors =:= [] ->
|
||||||
|
{ok, Results};
|
||||||
|
[] ->
|
||||||
|
{error, Errors}
|
||||||
|
end.
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue