Zaiming (Stone) Shi 2 лет назад
Родитель
Сommit
50f4aba5cd

+ 1 - 1
apps/emqx/src/emqx_connection.erl

@@ -979,7 +979,7 @@ handle_cast(Req, State) ->
 %% rate limit
 
 -type limiter_type() :: emqx_limiter_container:limiter_type().
--type limiter() :: emqx_limiter_container:limiter().
+-type limiter() :: emqx_limiter_container:container().
 -type check_succ_handler() ::
     fun((any(), list(any()), state()) -> _).
 

+ 1 - 1
apps/emqx/src/emqx_hocon.erl

@@ -138,7 +138,7 @@ compact_errors(SchemaModule, Error, Stacktrace) ->
     }}.
 
 %% @doc This is only used in static check scripts in the CI.
--spec load_and_check(module(), filename:filename_all()) -> {ok, term()} | {error, any()}.
+-spec load_and_check(module(), file:name_all()) -> {ok, term()} | {error, any()}.
 load_and_check(SchemaModule, File) ->
     try
         do_load_and_check(SchemaModule, File)

+ 2 - 2
apps/emqx/src/emqx_hookpoints.erl

@@ -125,12 +125,12 @@ when
 -callback 'client.subscribe'(emqx_types:clientinfo(), emqx_types:properties(), TopicFilters) ->
     fold_callback_result(TopicFilters)
 when
-    TopicFilters :: list({emqx_topic:topic(), map()}).
+    TopicFilters :: list({emqx_types:topic(), map()}).
 
 -callback 'client.unsubscribe'(emqx_types:clientinfo(), emqx_types:properties(), TopicFilters) ->
     fold_callback_result(TopicFilters)
 when
-    TopicFilters :: list({emqx_topic:topic(), map()}).
+    TopicFilters :: list({emqx_types:topic(), map()}).
 
 -callback 'client.timeout'(_TimerReference :: reference(), _Msg :: term(), Replies) ->
     fold_callback_result(Replies)

+ 1 - 1
apps/emqx/src/emqx_limiter/src/emqx_htb_limiter.erl

@@ -32,7 +32,7 @@
     make_future/1,
     available/1
 ]).
--export_type([local_limiter/0, limiter/0]).
+-export_type([local_limiter/0, limiter/0, retry_context/1]).
 
 %% a token bucket limiter which may or not contains a reference to another limiter,
 %% and can be used in a client alone

+ 1 - 1
apps/emqx/src/emqx_limiter/src/emqx_limiter_bucket_ref.erl

@@ -51,7 +51,7 @@
 %%--------------------------------------------------------------------
 %%  API
 %%--------------------------------------------------------------------
--spec new(counters:countres_ref(), index(), rate()) -> bucket_ref().
+-spec new(counters:counters_ref(), index(), rate()) -> bucket_ref().
 new(Counter, Index, Rate) ->
     #{
         counter => Counter,

+ 2 - 2
apps/emqx/src/emqx_limiter/src/emqx_limiter_container.erl

@@ -32,7 +32,7 @@
     retry_list/2
 ]).
 
--export_type([container/0, check_result/0]).
+-export_type([limiter/0, container/0, check_result/0, limiter_type/0]).
 
 -type container() ::
     infinity
@@ -51,7 +51,7 @@
 -type limiter_id() :: emqx_limiter_schema:limiter_id().
 -type limiter_type() :: emqx_limiter_schema:limiter_type().
 -type limiter() :: emqx_htb_limiter:limiter().
--type retry_context() :: emqx_htb_limiter:retry_context().
+-type retry_context() :: emqx_htb_limiter:retry_context(limiter()).
 -type millisecond() :: non_neg_integer().
 -type check_result() ::
     {ok, container()}

+ 2 - 0
apps/emqx/src/emqx_listeners.erl

@@ -63,6 +63,8 @@
 -export([certs_dir/2]).
 -endif.
 
+-export_type([listener_id/0]).
+
 -type listener_id() :: atom() | binary().
 -define(ROOT_KEY, listeners).
 -define(CONF_KEY_PATH, [?ROOT_KEY, '?', '?']).

+ 2 - 2
apps/emqx/src/emqx_metrics.erl

@@ -72,7 +72,7 @@
 %% BACKW: v4.3.0
 -export([upgrade_retained_delayed_counter_type/0]).
 
--export_type([metric_idx/0]).
+-export_type([metric_idx/0, metric_name/0]).
 
 -compile({inline, [inc/1, inc/2, dec/1, dec/2]}).
 -compile({inline, [inc_recv/1, inc_sent/1]}).
@@ -438,7 +438,7 @@ update_counter(Name, Value) ->
 %% Inc received/sent metrics
 %%--------------------------------------------------------------------
 
--spec inc_msg(emqx_types:massage()) -> ok.
+-spec inc_msg(emqx_types:message()) -> ok.
 inc_msg(Msg) ->
     case Msg#message.qos of
         0 -> inc('messages.qos0.received');

+ 7 - 3
apps/emqx/src/emqx_persistent_session_ds.erl

@@ -85,6 +85,12 @@
 ]).
 -endif.
 
+-export_type([
+    id/0,
+    subscription_id/0,
+    session/0
+]).
+
 %% Currently, this is the clientid.  We avoid `emqx_types:clientid()' because that can be
 %% an atom, in theory (?).
 -type id() :: binary().
@@ -145,8 +151,6 @@
         (NOW_MS >= LAST_ALIVE_AT + EI))
 ).
 
--export_type([id/0]).
-
 %%
 
 -spec create(clientinfo(), conninfo(), emqx_session:conf()) ->
@@ -243,7 +247,7 @@ stats(Session) ->
     info(?STATS_KEYS, Session).
 
 %% Debug/troubleshooting
--spec print_session(emqx_types:client_id()) -> map() | undefined.
+-spec print_session(emqx_types:clientid()) -> map() | undefined.
 print_session(ClientId) ->
     catch ro_transaction(
         fun() ->

+ 1 - 1
apps/emqx/src/emqx_persistent_session_ds/emqx_ps_ds_int.hrl

@@ -24,7 +24,7 @@
     dest :: emqx_persistent_session_ds:id()
 }).
 -record(ps_routeidx, {
-    entry :: emqx_topic_index:key(emqx_persistent_session_ds_router:dest()),
+    entry :: '$1' | emqx_topic_index:key(emqx_persistent_session_ds_router:dest()),
     unused = [] :: nil()
 }).
 

+ 1 - 1
apps/emqx/src/emqx_router.erl

@@ -91,7 +91,7 @@
 -type dest() :: node() | {group(), node()}.
 
 -record(routeidx, {
-    entry :: emqx_topic_index:key(dest()),
+    entry :: '$1' | emqx_topic_index:key(dest()),
     unused = [] :: nil()
 }).
 

+ 2 - 1
apps/emqx/src/emqx_session.erl

@@ -111,6 +111,7 @@
     t/0,
     conf/0,
     conninfo/0,
+    clientinfo/0,
     reply/0,
     replies/0,
     common_timer_name/0,
@@ -499,7 +500,7 @@ cancel_timer(Name, Timers0) ->
 
 %%--------------------------------------------------------------------
 
--spec disconnect(clientinfo(), eqmx_types:conninfo(), t()) ->
+-spec disconnect(clientinfo(), conninfo(), t()) ->
     {idle | shutdown, t()}.
 disconnect(_ClientInfo, ConnInfo, Session) ->
     ?IMPL(Session):disconnect(Session, ConnInfo).

+ 1 - 1
apps/emqx/src/emqx_session_events.erl

@@ -34,7 +34,7 @@
 
 %%
 
--spec handle_event(emqx_session:client_info(), event()) ->
+-spec handle_event(emqx_session:clientinfo(), event()) ->
     ok.
 handle_event(ClientInfo, {expired, Msg}) ->
     ok = emqx_hooks:run('delivery.dropped', [ClientInfo, Msg, expired]),

+ 3 - 3
apps/emqx/src/emqx_sup.erl

@@ -30,8 +30,8 @@
 -export([init/1]).
 
 -type startchild_ret() ::
-    {ok, supervisor:child()}
-    | {ok, supervisor:child(), term()}
+    {ok, pid()}
+    | {ok, pid(), term()}
     | {error, term()}.
 
 -define(SUP, ?MODULE).
@@ -52,7 +52,7 @@ start_child(ChildSpec) when is_map(ChildSpec) ->
 start_child(Mod, Type) ->
     start_child(child_spec(Mod, Type)).
 
--spec stop_child(supervisor:child_id()) -> ok | {error, term()}.
+-spec stop_child(atom()) -> ok | {error, term()}.
 stop_child(ChildId) ->
     case supervisor:terminate_child(?SUP, ChildId) of
         ok -> supervisor:delete_child(?SUP, ChildId);

+ 7 - 4
apps/emqx/src/emqx_tls_lib.erl

@@ -44,6 +44,9 @@
     to_client_opts/2
 ]).
 
+%% ssl:tls_version/0 is not exported.
+-type tls_version() :: tlsv1 | 'tlsv1.1' | 'tlsv1.2' | 'tlsv1.3'.
+
 -include("logger.hrl").
 
 -define(IS_TRUE(Val), ((Val =:= true) orelse (Val =:= <<"true">>))).
@@ -123,8 +126,8 @@
 %% @doc Validate a given list of desired tls versions.
 %% raise an error exception if non of them are available.
 %% The input list can be a string/binary of comma separated versions.
--spec integral_versions(tls | dtls, undefined | string() | binary() | [ssl:tls_version()]) ->
-    [ssl:tls_version()].
+-spec integral_versions(tls | dtls, undefined | string() | binary() | [tls_version()]) ->
+    [tls_version()].
 integral_versions(Type, undefined) ->
     available_versions(Type);
 integral_versions(Type, []) ->
@@ -164,7 +167,7 @@ all_ciphers() ->
     all_ciphers(available_versions(all)).
 
 %% @hidden Return a list of (openssl string format) cipher suites.
--spec all_ciphers([ssl:tls_version()]) -> [string()].
+-spec all_ciphers([tls_version()]) -> [string()].
 all_ciphers(['tlsv1.3']) ->
     %% When it's only tlsv1.3 wanted, use 'exclusive' here
     %% because 'all' returns legacy cipher suites too,
@@ -212,7 +215,7 @@ do_selected_ciphers(_) ->
     ?SELECTED_CIPHERS.
 
 %% @doc Ensure version & cipher-suites integrity.
--spec integral_ciphers([ssl:tls_version()], binary() | string() | [string()]) -> [string()].
+-spec integral_ciphers([tls_version()], binary() | string() | [string()]) -> [string()].
 integral_ciphers(Versions, Ciphers) when Ciphers =:= [] orelse Ciphers =:= undefined ->
     %% not configured
     integral_ciphers(Versions, selected_ciphers(Versions));

+ 1 - 0
apps/emqx/src/emqx_tls_psk.erl

@@ -20,6 +20,7 @@
 
 %% SSL PSK Callbacks
 -export([lookup/3]).
+-export_type([psk_identity/0]).
 
 -type psk_identity() :: string().
 -type psk_user_state() :: term().

+ 2 - 0
apps/emqx/src/emqx_topic_index.erl

@@ -30,6 +30,8 @@
 -export([get_topic/1]).
 -export([get_record/2]).
 
+-export_type([key/1]).
+
 -type key(ID) :: emqx_trie_search:key(ID).
 -type match(ID) :: key(ID).
 -type words() :: emqx_trie_search:words().

+ 4 - 1
apps/emqx/src/emqx_trace/emqx_trace_formatter.erl

@@ -19,11 +19,14 @@
 -export([format/2]).
 -export([format_meta_map/1]).
 
+%% logger_formatter:config/0 is not exported.
+-type config() :: map().
+
 %%%-----------------------------------------------------------------
 %%% API
 -spec format(LogEvent, Config) -> unicode:chardata() when
     LogEvent :: logger:log_event(),
-    Config :: logger:config().
+    Config :: config().
 format(
     #{level := debug, meta := Meta = #{trace_tag := Tag}, msg := Msg},
     #{payload_encode := PEncode}

+ 1 - 1
apps/emqx/src/emqx_trace/emqx_trace_handler.erl

@@ -125,7 +125,7 @@ uninstall(HandlerId) ->
             name => binary(),
             type => topic | clientid | ip_address,
             id => atom(),
-            filter => emqx_types:topic() | emqx_types:clienetid() | emqx_trace:ip_address(),
+            filter => emqx_types:topic() | emqx_types:clientid() | emqx_trace:ip_address(),
             level => logger:level(),
             dst => file:filename() | console | unknown
         }

+ 4 - 0
apps/emqx_durable_storage/src/emqx_ds.erl

@@ -42,6 +42,7 @@
     stream/0,
     stream_rank/0,
     iterator/0,
+    iterator_id/0,
     message_id/0,
     message_store_opts/0,
     next_result/1, next_result/0,
@@ -67,6 +68,9 @@
 
 -type stream_rank() :: {term(), integer()}.
 
+%% TODO: Not implemented
+-type iterator_id() :: term().
+
 -opaque iterator() :: ds_specific_iterator().
 
 -opaque stream() :: ds_specific_stream().

+ 1 - 7
apps/emqx_machine/src/emqx_machine.app.src

@@ -6,13 +6,7 @@
     {vsn, "0.2.17"},
     {modules, []},
     {registered, []},
-    {applications, [kernel, stdlib, emqx_ctl, covertool]},
-    %% system_monitor is loaded but not booted,
-    %% emqx_machine.erl makes the decision when to start
-    %% the app after certain config injection.
-    %% it's a included_application because otherwise dialyzer
-    %% would report unknown functions
-    {included_applications, [system_monitor]},
+    {applications, [kernel, stdlib, emqx_ctl]},
     {mod, {emqx_machine_app, []}},
     {env, []},
     {licenses, ["Apache-2.0"]},

+ 2 - 1
rebar.config.erl

@@ -562,7 +562,8 @@ dialyzer(Config) ->
     AppsToExclude = AppNames -- KnownApps,
 
     Extra =
-        [bcrypt || provide_bcrypt_dep()] ++
+        [os_mon, system_monitor, covertool] ++
+            [bcrypt || provide_bcrypt_dep()] ++
             [jq || is_jq_supported()] ++
             [quicer || is_quicer_supported()],
     NewDialyzerConfig =