fix(resource): create `simple_async_internal_buffer` query mode for bridges with internal buffering

Since authn/authz backends also use simple async/sync queries, we may want to avoid them
calling the connector when it's not connected.
This commit is contained in:
Thales Macedo Garitezi 2023-10-09 10:50:01 -03:00
parent 79cf0a2ced
commit eebfb44f72
3 changed files with 10 additions and 2 deletions

View File

@ -34,7 +34,7 @@
query_mode(#{kafka := #{query_mode := sync}}) ->
simple_sync_internal_buffer;
query_mode(_) ->
simple_async.
simple_async_internal_buffer.
callback_mode() -> async_if_possible.

View File

@ -311,7 +311,15 @@ query(ResId, Request, Opts) ->
%% TODO(5.1.1): pass Resource instead of ResId to simple APIs
%% so the buffer worker does not need to lookup the cache again
emqx_resource_buffer_worker:simple_sync_query(ResId, Request, Opts);
{simple_async_internal_buffer, _} ->
%% This is for bridges/connectors that have internal buffering, such
%% as Kafka and Pulsar producers.
%% TODO(5.1.1): pass Resource instead of ResId to simple APIs
%% so the buffer worker does not need to lookup the cache again
emqx_resource_buffer_worker:simple_async_query(ResId, Request, Opts);
{simple_sync_internal_buffer, _} ->
%% This is for bridges/connectors that have internal buffering, such
%% as Kafka and Pulsar producers.
%% TODO(5.1.1): pass Resource instead of ResId to simple APIs
%% so the buffer worker does not need to lookup the cache again
emqx_resource_buffer_worker:simple_sync_internal_buffer_query(

View File

@ -1088,7 +1088,7 @@ call_query(QM, Id, Index, Ref, Query, QueryOpts) ->
end.
do_call_query(QM, Id, Index, Ref, Query, QueryOpts, #{query_mode := ResQM} = Resource) when
ResQM =:= simple_async; ResQM =:= simple_sync
ResQM =:= simple_sync_internal_buffer; ResQM =:= simple_async_internal_buffer
->
%% The connector supports buffer, send even in disconnected state
#{mod := Mod, state := ResSt, callback_mode := CBM} = Resource,