diff --git a/apps/emqx_ft/src/emqx_ft_conf.erl b/apps/emqx_ft/src/emqx_ft_conf.erl index b0e73cda4..aafcd5ad3 100644 --- a/apps/emqx_ft/src/emqx_ft_conf.erl +++ b/apps/emqx_ft/src/emqx_ft_conf.erl @@ -22,7 +22,6 @@ %% Accessors -export([storage/0]). --export([segments_root/1]). -export([gc_interval/1]). -export([segments_ttl/1]). @@ -49,16 +48,6 @@ storage() -> emqx_config:get([file_transfer, storage], disabled). --spec segments_root(_Storage) -> file:name(). -segments_root(_Storage) -> - Conf = assert_storage(local), - case emqx_map_lib:deep_find([segments, root], Conf) of - {ok, Root} -> - Root; - {not_found, _, _} -> - filename:join([emqx:data_dir(), file_transfer, segments]) - end. - -spec gc_interval(_Storage) -> milliseconds(). gc_interval(_Storage) -> Conf = assert_storage(local), diff --git a/apps/emqx_ft/src/emqx_ft_storage_fs.erl b/apps/emqx_ft/src/emqx_ft_storage_fs.erl index f0bc9ac67..4e5cc9236 100644 --- a/apps/emqx_ft/src/emqx_ft_storage_fs.erl +++ b/apps/emqx_ft/src/emqx_ft_storage_fs.erl @@ -41,6 +41,7 @@ % GC API % TODO: This is quickly becomes hairy. +-export([get_root/1]). -export([get_subdir/2]). -export([get_subdir/3]). @@ -220,7 +221,7 @@ transfers(Storage) -> % TODO `Continuation` % There might be millions of transfers on the node, we need a protocol and % storage schema to iterate through them effectively. - ClientIds = try_list_dir(get_segments_root(Storage)), + ClientIds = try_list_dir(get_root(Storage)), {ok, lists:foldl( fun(ClientId, Acc) -> transfers(Storage, ClientId, Acc) end, @@ -229,7 +230,7 @@ transfers(Storage) -> )}. transfers(Storage, ClientId, AccIn) -> - Dirname = filename:join(get_segments_root(Storage), ClientId), + Dirname = filename:join(get_root(Storage), ClientId), case file:list_dir(Dirname) of {ok, FileIds} -> lists:foldl( @@ -263,6 +264,16 @@ read_transferinfo(Storage, Transfer, Acc) -> Acc end. +-spec get_root(storage()) -> + file:name(). +get_root(Storage) -> + case emqx_map_lib:deep_find([segments, root], Storage) of + {ok, Root} -> + Root; + {not_found, _, _} -> + filename:join([emqx:data_dir(), file_transfer, segments]) + end. + -spec get_subdir(storage(), transfer()) -> file:name(). get_subdir(Storage, Transfer) -> @@ -307,7 +318,7 @@ break_segment_filename(Filename) -> mk_filedir(Storage, {ClientId, FileId}, SubDirs) -> filename:join([ - get_segments_root(Storage), + get_root(Storage), emqx_ft_fs_util:escape_filename(ClientId), emqx_ft_fs_util:escape_filename(FileId) | SubDirs @@ -325,9 +336,6 @@ try_list_dir(Dirname) -> {error, _} -> [] end. -get_segments_root(Storage) -> - emqx_ft_conf:segments_root(Storage). - -include_lib("kernel/include/file.hrl"). read_file(Filepath, DecodeFun) -> diff --git a/apps/emqx_ft/src/emqx_ft_storage_fs_gc.erl b/apps/emqx_ft/src/emqx_ft_storage_fs_gc.erl index 63b0ab500..2ab30e88b 100644 --- a/apps/emqx_ft/src/emqx_ft_storage_fs_gc.erl +++ b/apps/emqx_ft/src/emqx_ft_storage_fs_gc.erl @@ -374,4 +374,4 @@ register_gcstat_error(Subject, Error, Stats = #gcstats{errors = Errors}) -> %% get_segments_root(Storage) -> - emqx_ft_conf:segments_root(Storage). + emqx_ft_storage_fs:get_root(Storage).