From 7a471faf672d5fb9aad6d78f55c8e9d62362e39a Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Tue, 17 Jan 2023 19:57:14 +0100 Subject: [PATCH 1/2] refactor(authn): use simple sync query for authn there is no need to route the authn queries through the buffer worker --- apps/emqx_authn/src/simple_authn/emqx_authn_http.erl | 2 +- apps/emqx_authn/src/simple_authn/emqx_authn_jwt.erl | 4 ++-- apps/emqx_authn/src/simple_authn/emqx_authn_mongodb.erl | 2 +- apps/emqx_authn/src/simple_authn/emqx_authn_mysql.erl | 4 +++- apps/emqx_authn/src/simple_authn/emqx_authn_pgsql.erl | 2 +- apps/emqx_authn/src/simple_authn/emqx_authn_redis.erl | 2 +- apps/emqx_authn/test/emqx_authn_mysql_SUITE.erl | 4 ++-- apps/emqx_authn/test/emqx_authn_pgsql_SUITE.erl | 4 ++-- apps/emqx_authn/test/emqx_authn_redis_SUITE.erl | 2 +- 9 files changed, 14 insertions(+), 12 deletions(-) diff --git a/apps/emqx_authn/src/simple_authn/emqx_authn_http.erl b/apps/emqx_authn/src/simple_authn/emqx_authn_http.erl index faa06b71a..b6b68eab9 100644 --- a/apps/emqx_authn/src/simple_authn/emqx_authn_http.erl +++ b/apps/emqx_authn/src/simple_authn/emqx_authn_http.erl @@ -192,7 +192,7 @@ authenticate( } = State ) -> Request = generate_request(Credential, State), - Response = emqx_resource:query(ResourceId, {Method, Request, RequestTimeout}), + Response = emqx_resource:simple_sync_query(ResourceId, {Method, Request, RequestTimeout}), ?TRACE_AUTHN_PROVIDER("http_response", #{ request => request_for_log(Credential, State), response => response_for_log(Response), diff --git a/apps/emqx_authn/src/simple_authn/emqx_authn_jwt.erl b/apps/emqx_authn/src/simple_authn/emqx_authn_jwt.erl index 1c44b4d1f..852139875 100644 --- a/apps/emqx_authn/src/simple_authn/emqx_authn_jwt.erl +++ b/apps/emqx_authn/src/simple_authn/emqx_authn_jwt.erl @@ -187,7 +187,7 @@ update( #{use_jwks := true} = Config, #{jwk_resource := ResourceId} = State ) -> - case emqx_resource:query(ResourceId, {update, connector_opts(Config)}) of + case emqx_resource:simple_sync_query(ResourceId, {update, connector_opts(Config)}) of ok -> case maps:get(verify_claims, Config, undefined) of undefined -> @@ -229,7 +229,7 @@ authenticate( from := From } ) -> - case emqx_resource:query(ResourceId, get_jwks) of + case emqx_resource:simple_sync_query(ResourceId, get_jwks) of {error, Reason} -> ?TRACE_AUTHN_PROVIDER(error, "get_jwks_failed", #{ resource => ResourceId, diff --git a/apps/emqx_authn/src/simple_authn/emqx_authn_mongodb.erl b/apps/emqx_authn/src/simple_authn/emqx_authn_mongodb.erl index 3f140a8eb..bcdc7b0b1 100644 --- a/apps/emqx_authn/src/simple_authn/emqx_authn_mongodb.erl +++ b/apps/emqx_authn/src/simple_authn/emqx_authn_mongodb.erl @@ -167,7 +167,7 @@ authenticate( } = State ) -> Filter = emqx_authn_utils:render_deep(FilterTemplate, Credential), - case emqx_resource:query(ResourceId, {find_one, Collection, Filter, #{}}) of + case emqx_resource:simple_sync_query(ResourceId, {find_one, Collection, Filter, #{}}) of {ok, undefined} -> ignore; {error, Reason} -> diff --git a/apps/emqx_authn/src/simple_authn/emqx_authn_mysql.erl b/apps/emqx_authn/src/simple_authn/emqx_authn_mysql.erl index ffce42bb3..0e6eeb6af 100644 --- a/apps/emqx_authn/src/simple_authn/emqx_authn_mysql.erl +++ b/apps/emqx_authn/src/simple_authn/emqx_authn_mysql.erl @@ -118,7 +118,9 @@ authenticate( } ) -> Params = emqx_authn_utils:render_sql_params(TmplToken, Credential), - case emqx_resource:query(ResourceId, {prepared_query, ?PREPARE_KEY, Params, Timeout}) of + case + emqx_resource:simple_sync_query(ResourceId, {prepared_query, ?PREPARE_KEY, Params, Timeout}) + of {ok, _Columns, []} -> ignore; {ok, Columns, [Row | _]} -> diff --git a/apps/emqx_authn/src/simple_authn/emqx_authn_pgsql.erl b/apps/emqx_authn/src/simple_authn/emqx_authn_pgsql.erl index 2d7974301..3d9e1e08f 100644 --- a/apps/emqx_authn/src/simple_authn/emqx_authn_pgsql.erl +++ b/apps/emqx_authn/src/simple_authn/emqx_authn_pgsql.erl @@ -120,7 +120,7 @@ authenticate( } ) -> Params = emqx_authn_utils:render_sql_params(PlaceHolders, Credential), - case emqx_resource:query(ResourceId, {prepared_query, ResourceId, Params}) of + case emqx_resource:simple_sync_query(ResourceId, {prepared_query, ResourceId, Params}) of {ok, _Columns, []} -> ignore; {ok, Columns, [Row | _]} -> diff --git a/apps/emqx_authn/src/simple_authn/emqx_authn_redis.erl b/apps/emqx_authn/src/simple_authn/emqx_authn_redis.erl index 12b7422b5..8c9cb5333 100644 --- a/apps/emqx_authn/src/simple_authn/emqx_authn_redis.erl +++ b/apps/emqx_authn/src/simple_authn/emqx_authn_redis.erl @@ -139,7 +139,7 @@ authenticate( ) -> NKey = emqx_authn_utils:render_str(KeyTemplate, Credential), Command = [CommandName, NKey | Fields], - case emqx_resource:query(ResourceId, {cmd, Command}) of + case emqx_resource:simple_sync_query(ResourceId, {cmd, Command}) of {ok, []} -> ignore; {ok, Values} -> diff --git a/apps/emqx_authn/test/emqx_authn_mysql_SUITE.erl b/apps/emqx_authn/test/emqx_authn_mysql_SUITE.erl index 7681b6ee3..9d2c5cf63 100644 --- a/apps/emqx_authn/test/emqx_authn_mysql_SUITE.erl +++ b/apps/emqx_authn/test/emqx_authn_mysql_SUITE.erl @@ -516,13 +516,13 @@ init_seeds() -> ). q(Sql) -> - emqx_resource:query( + emqx_resource:simple_sync_query( ?MYSQL_RESOURCE, {sql, Sql} ). q(Sql, Params) -> - emqx_resource:query( + emqx_resource:simple_sync_query( ?MYSQL_RESOURCE, {sql, Sql, Params} ). diff --git a/apps/emqx_authn/test/emqx_authn_pgsql_SUITE.erl b/apps/emqx_authn/test/emqx_authn_pgsql_SUITE.erl index 66529525b..ff0bfaea7 100644 --- a/apps/emqx_authn/test/emqx_authn_pgsql_SUITE.erl +++ b/apps/emqx_authn/test/emqx_authn_pgsql_SUITE.erl @@ -594,13 +594,13 @@ create_user(Values) -> ok. q(Sql) -> - emqx_resource:query( + emqx_resource:simple_sync_query( ?PGSQL_RESOURCE, {query, Sql} ). q(Sql, Params) -> - emqx_resource:query( + emqx_resource:simple_sync_query( ?PGSQL_RESOURCE, {query, Sql, Params} ). diff --git a/apps/emqx_authn/test/emqx_authn_redis_SUITE.erl b/apps/emqx_authn/test/emqx_authn_redis_SUITE.erl index 1df1faa4c..4f25c8709 100644 --- a/apps/emqx_authn/test/emqx_authn_redis_SUITE.erl +++ b/apps/emqx_authn/test/emqx_authn_redis_SUITE.erl @@ -588,7 +588,7 @@ init_seeds() -> ). q(Command) -> - emqx_resource:query( + emqx_resource:simple_sync_query( ?REDIS_RESOURCE, {cmd, Command} ). From fff6bf921f067c31550de31e99312dd0aada702d Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Tue, 17 Jan 2023 20:01:45 +0100 Subject: [PATCH 2/2] refactor(authz): call emqx_resource:simple_sync_query there is no need to route the request through the buffer workers --- apps/emqx_authz/src/emqx_authz_http.erl | 2 +- apps/emqx_authz/src/emqx_authz_mongodb.erl | 2 +- apps/emqx_authz/src/emqx_authz_mysql.erl | 4 +++- apps/emqx_authz/src/emqx_authz_postgresql.erl | 4 +++- apps/emqx_authz/src/emqx_authz_redis.erl | 2 +- apps/emqx_authz/test/emqx_authz_mysql_SUITE.erl | 4 ++-- apps/emqx_authz/test/emqx_authz_postgresql_SUITE.erl | 4 ++-- apps/emqx_authz/test/emqx_authz_redis_SUITE.erl | 2 +- 8 files changed, 14 insertions(+), 10 deletions(-) diff --git a/apps/emqx_authz/src/emqx_authz_http.erl b/apps/emqx_authz/src/emqx_authz_http.erl index 4479d1483..852a667c8 100644 --- a/apps/emqx_authz/src/emqx_authz_http.erl +++ b/apps/emqx_authz/src/emqx_authz_http.erl @@ -82,7 +82,7 @@ authorize( } = Config ) -> Request = generate_request(PubSub, Topic, Client, Config), - case emqx_resource:query(ResourceID, {Method, Request, RequestTimeout}) of + case emqx_resource:simple_sync_query(ResourceID, {Method, Request, RequestTimeout}) of {ok, 204, _Headers} -> {matched, allow}; {ok, 200, Headers, Body} -> diff --git a/apps/emqx_authz/src/emqx_authz_mongodb.erl b/apps/emqx_authz/src/emqx_authz_mongodb.erl index 840ce8fb9..8d04a3229 100644 --- a/apps/emqx_authz/src/emqx_authz_mongodb.erl +++ b/apps/emqx_authz/src/emqx_authz_mongodb.erl @@ -79,7 +79,7 @@ authorize( RenderedFilter = emqx_authz_utils:render_deep(FilterTemplate, Client), Result = try - emqx_resource:query(ResourceID, {find, Collection, RenderedFilter, #{}}) + emqx_resource:simple_sync_query(ResourceID, {find, Collection, RenderedFilter, #{}}) catch error:Error -> {error, Error} end, diff --git a/apps/emqx_authz/src/emqx_authz_mysql.erl b/apps/emqx_authz/src/emqx_authz_mysql.erl index bd81a7398..768479e98 100644 --- a/apps/emqx_authz/src/emqx_authz_mysql.erl +++ b/apps/emqx_authz/src/emqx_authz_mysql.erl @@ -82,7 +82,9 @@ authorize( } ) -> RenderParams = emqx_authz_utils:render_sql_params(TmplToken, Client), - case emqx_resource:query(ResourceID, {prepared_query, ?PREPARE_KEY, RenderParams}) of + case + emqx_resource:simple_sync_query(ResourceID, {prepared_query, ?PREPARE_KEY, RenderParams}) + of {ok, _Columns, []} -> nomatch; {ok, Columns, Rows} -> diff --git a/apps/emqx_authz/src/emqx_authz_postgresql.erl b/apps/emqx_authz/src/emqx_authz_postgresql.erl index ae58efee1..05f2315a6 100644 --- a/apps/emqx_authz/src/emqx_authz_postgresql.erl +++ b/apps/emqx_authz/src/emqx_authz_postgresql.erl @@ -87,7 +87,9 @@ authorize( } ) -> RenderedParams = emqx_authz_utils:render_sql_params(Placeholders, Client), - case emqx_resource:query(ResourceID, {prepared_query, ResourceID, RenderedParams}) of + case + emqx_resource:simple_sync_query(ResourceID, {prepared_query, ResourceID, RenderedParams}) + of {ok, _Columns, []} -> nomatch; {ok, Columns, Rows} -> diff --git a/apps/emqx_authz/src/emqx_authz_redis.erl b/apps/emqx_authz/src/emqx_authz_redis.erl index 52469ad43..34c2038ab 100644 --- a/apps/emqx_authz/src/emqx_authz_redis.erl +++ b/apps/emqx_authz/src/emqx_authz_redis.erl @@ -78,7 +78,7 @@ authorize( } ) -> Cmd = emqx_authz_utils:render_deep(CmdTemplate, Client), - case emqx_resource:query(ResourceID, {cmd, Cmd}) of + case emqx_resource:simple_sync_query(ResourceID, {cmd, Cmd}) of {ok, []} -> nomatch; {ok, Rows} -> diff --git a/apps/emqx_authz/test/emqx_authz_mysql_SUITE.erl b/apps/emqx_authz/test/emqx_authz_mysql_SUITE.erl index 38c997f17..ad9a23377 100644 --- a/apps/emqx_authz/test/emqx_authz_mysql_SUITE.erl +++ b/apps/emqx_authz/test/emqx_authz_mysql_SUITE.erl @@ -321,13 +321,13 @@ raw_mysql_authz_config() -> }. q(Sql) -> - emqx_resource:query( + emqx_resource:simple_sync_query( ?MYSQL_RESOURCE, {sql, Sql} ). q(Sql, Params) -> - emqx_resource:query( + emqx_resource:simple_sync_query( ?MYSQL_RESOURCE, {sql, Sql, Params} ). diff --git a/apps/emqx_authz/test/emqx_authz_postgresql_SUITE.erl b/apps/emqx_authz/test/emqx_authz_postgresql_SUITE.erl index fbe17f92e..f17c2de1c 100644 --- a/apps/emqx_authz/test/emqx_authz_postgresql_SUITE.erl +++ b/apps/emqx_authz/test/emqx_authz_postgresql_SUITE.erl @@ -326,13 +326,13 @@ raw_pgsql_authz_config() -> }. q(Sql) -> - emqx_resource:query( + emqx_resource:simple_sync_query( ?PGSQL_RESOURCE, {query, Sql} ). insert(Sql, Params) -> - {ok, _} = emqx_resource:query( + {ok, _} = emqx_resource:simple_sync_query( ?PGSQL_RESOURCE, {query, Sql, Params} ), diff --git a/apps/emqx_authz/test/emqx_authz_redis_SUITE.erl b/apps/emqx_authz/test/emqx_authz_redis_SUITE.erl index ae734f20d..15b180c96 100644 --- a/apps/emqx_authz/test/emqx_authz_redis_SUITE.erl +++ b/apps/emqx_authz/test/emqx_authz_redis_SUITE.erl @@ -263,7 +263,7 @@ raw_redis_authz_config() -> }. q(Command) -> - emqx_resource:query( + emqx_resource:simple_sync_query( ?REDIS_RESOURCE, {cmd, Command} ).