From 1363108678a1a8041b8d21f1db2f0406a222cdba Mon Sep 17 00:00:00 2001 From: Stefan Strigler Date: Wed, 28 Jun 2023 16:08:11 +0200 Subject: [PATCH] fix: fix simple_sync_query --- apps/emqx_resource/src/emqx_resource.erl | 2 +- apps/emqx_resource/src/emqx_resource_buffer_worker.erl | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/emqx_resource/src/emqx_resource.erl b/apps/emqx_resource/src/emqx_resource.erl index cec1a6240..120d7db17 100644 --- a/apps/emqx_resource/src/emqx_resource.erl +++ b/apps/emqx_resource/src/emqx_resource.erl @@ -290,7 +290,7 @@ query(ResId, Request, Opts) -> {simple_sync, _} -> %% 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); + emqx_resource_buffer_worker:simple_sync_query(ResId, Request, Opts); {sync, _} -> emqx_resource_buffer_worker:sync_query(ResId, Request, Opts); {async, _} -> diff --git a/apps/emqx_resource/src/emqx_resource_buffer_worker.erl b/apps/emqx_resource/src/emqx_resource_buffer_worker.erl index c7fd8a965..6824290b2 100644 --- a/apps/emqx_resource/src/emqx_resource_buffer_worker.erl +++ b/apps/emqx_resource/src/emqx_resource_buffer_worker.erl @@ -38,6 +38,7 @@ -export([ simple_sync_query/2, + simple_sync_query/3, simple_async_query/3 ]). @@ -133,6 +134,10 @@ async_query(Id, Request, Opts0) -> %% simple query the resource without batching and queuing. -spec simple_sync_query(id(), request()) -> term(). simple_sync_query(Id, Request) -> + simple_sync_query(Id, Request, #{}). + +-spec simple_sync_query(id(), request(), query_opts()) -> term(). +simple_sync_query(Id, Request, QueryOpts0) -> %% Note: since calling this function implies in bypassing the %% buffer workers, and each buffer worker index is used when %% collecting gauge metrics, we use this dummy index. If this @@ -141,12 +146,12 @@ simple_sync_query(Id, Request) -> %% `emqx_resource_metrics:*_shift/3'. ?tp(simple_sync_query, #{id => Id, request => Request}), Index = undefined, - QueryOpts = simple_query_opts(), + QueryOpts = maps:merge(simple_query_opts(), QueryOpts0), emqx_resource_metrics:matched_inc(Id), Ref = make_request_ref(), Result = call_query(force_sync, Id, Index, Ref, ?SIMPLE_QUERY(Request), QueryOpts), _ = handle_query_result(Id, Result, _HasBeenSent = false), - Result. + maybe_reply_to(Result, QueryOpts). %% simple async-query the resource without batching and queuing. -spec simple_async_query(id(), request(), query_opts()) -> term().