diff --git a/apps/emqx_authn/src/emqx_authn_api.erl b/apps/emqx_authn/src/emqx_authn_api.erl
index d053b1c4b..19ec71ec3 100644
--- a/apps/emqx_authn/src/emqx_authn_api.erl
+++ b/apps/emqx_authn/src/emqx_authn_api.erl
@@ -149,8 +149,8 @@ fields(response_users) ->
paginated_list_type(ref(response_user));
fields(pagination_meta) ->
[
- {page, non_neg_integer()},
- {limit, non_neg_integer()},
+ {page, pos_integer()},
+ {limit, pos_integer()},
{count, non_neg_integer()}
].
@@ -431,8 +431,8 @@ schema("/authentication/:id/users") ->
description => <<"List users in authenticator in global authentication chain">>,
parameters => [
param_auth_id(),
- {page, mk(integer(), #{in => query, desc => <<"Page Index">>, required => false})},
- {limit, mk(integer(), #{in => query, desc => <<"Page Limit">>, required => false})},
+ {page, mk(pos_integer(), #{in => query, desc => <<"Page Index">>, required => false})},
+ {limit, mk(pos_integer(), #{in => query, desc => <<"Page Limit">>, required => false})},
{like_username,
mk(binary(), #{
in => query,
@@ -481,8 +481,8 @@ schema("/listeners/:listener_id/authentication/:id/users") ->
parameters => [
param_listener_id(),
param_auth_id(),
- {page, mk(integer(), #{in => query, desc => <<"Page Index">>, required => false})},
- {limit, mk(integer(), #{in => query, desc => <<"Page Limit">>, required => false})}
+ {page, mk(pos_integer(), #{in => query, desc => <<"Page Index">>, required => false})},
+ {limit, mk(pos_integer(), #{in => query, desc => <<"Page Limit">>, required => false})}
],
responses => #{
200 => emqx_dashboard_swagger:schema_with_example(
diff --git a/apps/emqx_connector/src/emqx_connector_http.erl b/apps/emqx_connector/src/emqx_connector_http.erl
index 0e1cc3344..f53fa17e5 100644
--- a/apps/emqx_connector/src/emqx_connector_http.erl
+++ b/apps/emqx_connector/src/emqx_connector_http.erl
@@ -95,7 +95,7 @@ For example: `http://localhost:9901/`
, desc => "The type of the pool. Can be one of `random`, `hash`."
})}
, {pool_size,
- sc(non_neg_integer(),
+ sc(pos_integer(),
#{ default => 8
, desc => "The pool size."
})}
diff --git a/apps/emqx_connector/src/emqx_connector_mongo.erl b/apps/emqx_connector/src/emqx_connector_mongo.erl
index fbf42ba75..391075800 100644
--- a/apps/emqx_connector/src/emqx_connector_mongo.erl
+++ b/apps/emqx_connector/src/emqx_connector_mongo.erl
@@ -76,7 +76,9 @@ fields(sharded) ->
, {w_mode, fun w_mode/1}
] ++ mongo_fields();
fields(topology) ->
- [ {pool_size, fun internal_pool_size/1}
+ [ {pool_size, fun emqx_connector_schema_lib:pool_size/1}
+ %% TODO: what is this
+ %% 'max_overflow'
, {max_overflow, fun emqx_connector_schema_lib:pool_size/1}
, {overflow_ttl, fun duration/1}
, {overflow_check_period, fun duration/1}
@@ -114,12 +116,6 @@ mongo_fields() ->
] ++
emqx_connector_schema_lib:ssl_fields().
-internal_pool_size(type) -> integer();
-internal_pool_size(desc) -> "Pool size on start.";
-internal_pool_size(default) -> 1;
-internal_pool_size(validator) -> [?MIN(1)];
-internal_pool_size(_) -> undefined.
-
%% ===================================================================
on_start(InstId, Config = #{mongo_type := Type,
diff --git a/apps/emqx_connector/src/emqx_connector_schema_lib.erl b/apps/emqx_connector/src/emqx_connector_schema_lib.erl
index 7ad058e64..53fae8d31 100644
--- a/apps/emqx_connector/src/emqx_connector_schema_lib.erl
+++ b/apps/emqx_connector/src/emqx_connector_schema_lib.erl
@@ -34,7 +34,7 @@
]).
-type database() :: binary().
--type pool_size() :: integer().
+-type pool_size() :: pos_integer().
-type username() :: binary().
-type password() :: binary().
@@ -72,7 +72,7 @@ database(required) -> true;
database(validator) -> [?NOT_EMPTY("the value of the field 'database' cannot be empty")];
database(_) -> undefined.
-pool_size(type) -> integer();
+pool_size(type) -> pos_integer();
pool_size(desc) -> "Size of the connection pool.";
pool_size(default) -> 8;
pool_size(validator) -> [?MIN(1)];
diff --git a/apps/emqx_connector/src/mqtt/emqx_connector_mqtt_schema.erl b/apps/emqx_connector/src/mqtt/emqx_connector_mqtt_schema.erl
index 355b86aaf..25291059d 100644
--- a/apps/emqx_connector/src/mqtt/emqx_connector_mqtt_schema.erl
+++ b/apps/emqx_connector/src/mqtt/emqx_connector_mqtt_schema.erl
@@ -93,7 +93,7 @@ topic filters for 'remote_topic' of ingress connections.
"messages in case of ACK not received.",
#{default => "15s"})}
, {max_inflight,
- sc(integer(),
+ sc(non_neg_integer(),
#{ default => 32
, desc => "Max inflight (sent, but un-acked) messages of the MQTT protocol"
})}
diff --git a/apps/emqx_dashboard/src/emqx_dashboard_swagger.erl b/apps/emqx_dashboard/src/emqx_dashboard_swagger.erl
index 7ef374ec3..8630803ec 100644
--- a/apps/emqx_dashboard/src/emqx_dashboard_swagger.erl
+++ b/apps/emqx_dashboard/src/emqx_dashboard_swagger.erl
@@ -127,7 +127,7 @@ namespace() -> "public".
fields(page) ->
Desc = <<"Page number of the results to fetch.">>,
Meta = #{in => query, desc => Desc, default => 1, example => 1},
- [{page, hoconsc:mk(integer(), Meta)}];
+ [{page, hoconsc:mk(pos_integer(), Meta)}];
fields(limit) ->
Desc = iolist_to_binary([
<<"Results per page(max ">>,
diff --git a/apps/emqx_exhook/src/emqx_exhook_schema.erl b/apps/emqx_exhook/src/emqx_exhook_schema.erl
index 06a98e920..81d6ef33b 100644
--- a/apps/emqx_exhook/src/emqx_exhook_schema.erl
+++ b/apps/emqx_exhook/src/emqx_exhook_schema.erl
@@ -50,55 +50,36 @@ fields(exhook) ->
)}
];
fields(server) ->
- [
- {name,
- sc(
- binary(),
- #{desc => "Name of the exhook server."}
- )},
- {enable,
- sc(
- boolean(),
- #{
- default => true,
- desc => "Enable the exhook server."
- }
- )},
- {url,
- sc(
- binary(),
- #{desc => "URL of the gRPC server."}
- )},
- {request_timeout,
- sc(
- duration(),
- #{
- default => "5s",
- desc => "The timeout to request gRPC server."
- }
- )},
- {failed_action, failed_action()},
- {ssl, sc(ref(ssl_conf), #{})},
- {auto_reconnect,
- sc(
- hoconsc:union([false, duration()]),
- #{
- default => "60s",
- desc =>
- "Whether to automatically reconnect (initialize) the gRPC server.
"
- "When gRPC is not available, exhook tries to request the gRPC service at "
- "that interval and reinitialize the list of mounted hooks."
- }
- )},
- {pool_size,
- sc(
- integer(),
- #{
- default => 8,
- example => 8,
- desc => "The process pool size for gRPC client."
- }
- )}
+ [ {name, sc(binary(),
+ #{ desc => "Name of the exhook server."
+ })}
+ , {enable, sc(boolean(),
+ #{ default => true
+ , desc => "Enable the exhook server."
+ })}
+ , {url, sc(binary(),
+ #{ desc => "URL of the gRPC server."
+ })}
+ , {request_timeout, sc(duration(),
+ #{ default => "5s"
+ , desc => "The timeout to request gRPC server."
+ })}
+ , {failed_action, failed_action()}
+ , {ssl,
+ sc(ref(ssl_conf), #{})}
+ , {auto_reconnect,
+ sc(hoconsc:union([false, duration()]),
+ #{ default => "60s"
+ , desc => "Whether to automatically reconnect (initialize) the gRPC server.
"
+ "When gRPC is not available, exhook tries to request the gRPC service at "
+ "that interval and reinitialize the list of mounted hooks."
+ })}
+ , {pool_size,
+ sc(pos_integer(),
+ #{ default => 8
+ , example => 8
+ , desc => "The process pool size for gRPC client."
+ })}
];
fields(ssl_conf) ->
Schema = emqx_schema:client_ssl_opts_schema(#{}),
diff --git a/apps/emqx_gateway/src/emqx_gateway_api_authn.erl b/apps/emqx_gateway/src/emqx_gateway_api_authn.erl
index 644b44574..9b37145f8 100644
--- a/apps/emqx_gateway/src/emqx_gateway_api_authn.erl
+++ b/apps/emqx_gateway/src/emqx_gateway_api_authn.erl
@@ -384,7 +384,7 @@ params_paging_in_qs() ->
[
{page,
mk(
- integer(),
+ pos_integer(),
#{
in => query,
required => false,
@@ -394,7 +394,7 @@ params_paging_in_qs() ->
)},
{limit,
mk(
- integer(),
+ pos_integer(),
#{
in => query,
required => false,
diff --git a/apps/emqx_gateway/src/emqx_gateway_api_clients.erl b/apps/emqx_gateway/src/emqx_gateway_api_clients.erl
index dfeceb24e..c9870d828 100644
--- a/apps/emqx_gateway/src/emqx_gateway_api_clients.erl
+++ b/apps/emqx_gateway/src/emqx_gateway_api_clients.erl
@@ -664,7 +664,7 @@ params_paging() ->
[
{page,
mk(
- integer(),
+ pos_integer(),
#{
in => query,
required => false,
@@ -674,7 +674,7 @@ params_paging() ->
)},
{limit,
mk(
- integer(),
+ pos_integer(),
#{
in => query,
desc => <<"Page Limit">>,
diff --git a/apps/emqx_gateway/src/emqx_gateway_api_listeners.erl b/apps/emqx_gateway/src/emqx_gateway_api_listeners.erl
index 44d938c60..77e4b48aa 100644
--- a/apps/emqx_gateway/src/emqx_gateway_api_listeners.erl
+++ b/apps/emqx_gateway/src/emqx_gateway_api_listeners.erl
@@ -191,7 +191,7 @@ users(get, #{bindings := #{name := Name0, id := Id}, query_string := Qs}) ->
Name0,
Id,
fun(_GwName, #{id := AuthId, chain_name := ChainName}) ->
- emqx_authn_api:list_users(ChainName, AuthId, page_pramas(Qs))
+ emqx_authn_api:list_users(ChainName, AuthId, page_params(Qs))
end
);
users(post, #{
@@ -261,7 +261,7 @@ import_users(post, #{
%%--------------------------------------------------------------------
%% Utils
-page_pramas(Qs) ->
+page_params(Qs) ->
maps:with([<<"page">>, <<"limit">>], Qs).
%%--------------------------------------------------------------------
@@ -555,7 +555,7 @@ params_paging_in_qs() ->
[
{page,
mk(
- integer(),
+ pos_integer(),
#{
in => query,
required => false,
@@ -565,7 +565,7 @@ params_paging_in_qs() ->
)},
{limit,
mk(
- integer(),
+ pos_integer(),
#{
in => query,
required => false,
diff --git a/apps/emqx_modules/src/emqx_delayed_api.erl b/apps/emqx_modules/src/emqx_delayed_api.erl
index 4029646af..47c714037 100644
--- a/apps/emqx_modules/src/emqx_delayed_api.erl
+++ b/apps/emqx_modules/src/emqx_delayed_api.erl
@@ -149,9 +149,9 @@ schema("/mqtt/delayed/messages") ->
[
{data, mk(hoconsc:array(ref("message")), #{})},
{meta, [
- {page, mk(integer(), #{})},
- {limit, mk(integer(), #{})},
- {count, mk(integer(), #{})}
+ {page, mk(pos_integer(), #{})},
+ {limit, mk(pos_integer(), #{})},
+ {count, mk(non_neg_integer(), #{})}
]}
]
}
diff --git a/apps/emqx_slow_subs/src/emqx_slow_subs_api.erl b/apps/emqx_slow_subs/src/emqx_slow_subs_api.erl
index 98072ba9c..801c5ff51 100644
--- a/apps/emqx_slow_subs/src/emqx_slow_subs_api.erl
+++ b/apps/emqx_slow_subs/src/emqx_slow_subs_api.erl
@@ -50,8 +50,8 @@ schema(("/slow_subscriptions")) ->
},
get => #{tags => [<<"slow subs">>],
description => <<"Get slow topics statistics record data">>,
- parameters => [ {page, mk(integer(), #{in => query})}
- , {limit, mk(integer(), #{in => query})}
+ parameters => [ {page, mk(pos_integer(), #{in => query})}
+ , {limit, mk(pos_integer(), #{in => query})}
],
'requestBody' => [],
responses => #{200 => [{data, mk(hoconsc:array(ref(record)), #{})}]}
diff --git a/apps/emqx_slow_subs/test/emqx_slow_subs_api_SUITE.erl b/apps/emqx_slow_subs/test/emqx_slow_subs_api_SUITE.erl
index 7cefbac21..fec10839d 100644
--- a/apps/emqx_slow_subs/test/emqx_slow_subs_api_SUITE.erl
+++ b/apps/emqx_slow_subs/test/emqx_slow_subs_api_SUITE.erl
@@ -96,7 +96,7 @@ t_get_history(_) ->
lists:foreach(Each, lists:seq(1, 5)),
- {ok, Data} = request_api(get, api_path(["slow_subscriptions"]), "_page=1&_limit=10",
+ {ok, Data} = request_api(get, api_path(["slow_subscriptions"]), "page=1&limit=10",
auth_header_()),
#{<<"data">> := [First | _]} = emqx_json:decode(Data, [return_maps]),
diff --git a/rebar.config b/rebar.config
index 75a5da56a..75d156e01 100644
--- a/rebar.config
+++ b/rebar.config
@@ -47,7 +47,7 @@
[ {lc, {git, "https://github.com/emqx/lc.git", {tag, "0.2.1"}}}
, {redbug, "2.0.7"}
, {gpb, "4.11.2"} %% gpb only used to build, but not for release, pin it here to avoid fetching a wrong version due to rebar plugins scattered in all the deps
- , {typerefl, {git, "https://github.com/ieQu1/typerefl", {tag, "0.8.6"}}}
+ , {typerefl, {git, "https://github.com/ieQu1/typerefl", {tag, "0.9.0"}}}
, {ehttpc, {git, "https://github.com/emqx/ehttpc", {tag, "0.1.12"}}}
, {gproc, {git, "https://github.com/uwiger/gproc", {tag, "0.8.0"}}}
, {jiffy, {git, "https://github.com/emqx/jiffy", {tag, "1.0.5"}}}