feat: add stop after render and after render trace to dynamo action
This commit is contained in:
parent
120b35ac75
commit
810aa68b02
|
@ -246,12 +246,17 @@ do_query(
|
||||||
table := Table,
|
table := Table,
|
||||||
templates := Templates
|
templates := Templates
|
||||||
} = ChannelState,
|
} = ChannelState,
|
||||||
|
LogMetaData = logger:get_process_metadata(),
|
||||||
|
TraceRenderedFuncContext = #{trace_ctx => LogMetaData, action_id => ChannelId},
|
||||||
|
TraceRenderedFunc = {fun trace_render_result/2, TraceRenderedFuncContext},
|
||||||
Result =
|
Result =
|
||||||
case ensuare_dynamo_keys(Query, ChannelState) of
|
case ensuare_dynamo_keys(Query, ChannelState) of
|
||||||
true ->
|
true ->
|
||||||
ecpool:pick_and_do(
|
ecpool:pick_and_do(
|
||||||
PoolName,
|
PoolName,
|
||||||
{emqx_bridge_dynamo_connector_client, query, [Table, QueryTuple, Templates]},
|
{emqx_bridge_dynamo_connector_client, query, [
|
||||||
|
Table, QueryTuple, Templates, TraceRenderedFunc
|
||||||
|
]},
|
||||||
no_handover
|
no_handover
|
||||||
);
|
);
|
||||||
_ ->
|
_ ->
|
||||||
|
@ -259,6 +264,8 @@ do_query(
|
||||||
end,
|
end,
|
||||||
|
|
||||||
case Result of
|
case Result of
|
||||||
|
{error, {unrecoverable_error, {action_stopped_after_template_rendering, _}}} = Error ->
|
||||||
|
Error;
|
||||||
{error, Reason} ->
|
{error, Reason} ->
|
||||||
?tp(
|
?tp(
|
||||||
dynamo_connector_query_return,
|
dynamo_connector_query_return,
|
||||||
|
@ -291,6 +298,22 @@ do_query(
|
||||||
Result
|
Result
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
trace_render_result(RenderResult, #{trace_ctx := LogMetaData, action_id := ActionID}) ->
|
||||||
|
OldMetaData =
|
||||||
|
case logger:get_process_metadata() of
|
||||||
|
undefined -> #{};
|
||||||
|
M -> M
|
||||||
|
end,
|
||||||
|
try
|
||||||
|
logger:set_process_metadata(LogMetaData),
|
||||||
|
emqx_trace:rendered_action_template(
|
||||||
|
ActionID,
|
||||||
|
RenderResult
|
||||||
|
)
|
||||||
|
after
|
||||||
|
logger:set_process_metadata(OldMetaData)
|
||||||
|
end.
|
||||||
|
|
||||||
get_channel_id([{ChannelId, _Req} | _]) ->
|
get_channel_id([{ChannelId, _Req} | _]) ->
|
||||||
ChannelId;
|
ChannelId;
|
||||||
get_channel_id({ChannelId, _Req}) ->
|
get_channel_id({ChannelId, _Req}) ->
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
-export([
|
-export([
|
||||||
start_link/1,
|
start_link/1,
|
||||||
is_connected/2,
|
is_connected/2,
|
||||||
query/4
|
query/5
|
||||||
]).
|
]).
|
||||||
|
|
||||||
%% gen_server callbacks
|
%% gen_server callbacks
|
||||||
|
@ -40,8 +40,8 @@ is_connected(Pid, Timeout) ->
|
||||||
{false, Error}
|
{false, Error}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
query(Pid, Table, Query, Templates) ->
|
query(Pid, Table, Query, Templates, TraceRenderedFunc) ->
|
||||||
gen_server:call(Pid, {query, Table, Query, Templates}, infinity).
|
gen_server:call(Pid, {query, Table, Query, Templates, TraceRenderedFunc}, infinity).
|
||||||
|
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
%% @doc
|
%% @doc
|
||||||
|
@ -77,14 +77,14 @@ handle_call(is_connected, _From, State) ->
|
||||||
{false, Error}
|
{false, Error}
|
||||||
end,
|
end,
|
||||||
{reply, IsConnected, State};
|
{reply, IsConnected, State};
|
||||||
handle_call({query, Table, Query, Templates}, _From, State) ->
|
handle_call({query, Table, Query, Templates, TraceRenderedFunc}, _From, State) ->
|
||||||
Result = do_query(Table, Query, Templates),
|
Result = do_query(Table, Query, Templates, TraceRenderedFunc),
|
||||||
{reply, Result, State};
|
{reply, Result, State};
|
||||||
handle_call(_Request, _From, State) ->
|
handle_call(_Request, _From, State) ->
|
||||||
{reply, ok, State}.
|
{reply, ok, State}.
|
||||||
|
|
||||||
handle_cast({query, Table, Query, Templates, {ReplyFun, [Context]}}, State) ->
|
handle_cast({query, Table, Query, Templates, {ReplyFun, [Context]}}, State) ->
|
||||||
Result = do_query(Table, Query, Templates),
|
Result = do_query(Table, Query, Templates, {fun(_, _) -> ok end, none}),
|
||||||
ReplyFun(Context, Result),
|
ReplyFun(Context, Result),
|
||||||
{noreply, State};
|
{noreply, State};
|
||||||
handle_cast(_Request, State) ->
|
handle_cast(_Request, State) ->
|
||||||
|
@ -102,11 +102,14 @@ code_change(_OldVsn, State, _Extra) ->
|
||||||
%%%===================================================================
|
%%%===================================================================
|
||||||
%%% Internal functions
|
%%% Internal functions
|
||||||
%%%===================================================================
|
%%%===================================================================
|
||||||
do_query(Table, Query0, Templates) ->
|
do_query(Table, Query0, Templates, {TraceRenderedFun, TraceRenderedCTX}) ->
|
||||||
try
|
try
|
||||||
Query = apply_template(Query0, Templates),
|
Query = apply_template(Query0, Templates),
|
||||||
|
TraceRenderedFun(#{table => Table, query => Query}, TraceRenderedCTX),
|
||||||
execute(Query, Table)
|
execute(Query, Table)
|
||||||
catch
|
catch
|
||||||
|
error:{unrecoverable_error, Reason} ->
|
||||||
|
{error, {unrecoverable_error, Reason}};
|
||||||
_Type:Reason ->
|
_Type:Reason ->
|
||||||
{error, {unrecoverable_error, {invalid_request, Reason}}}
|
{error, {unrecoverable_error, {invalid_request, Reason}}}
|
||||||
end.
|
end.
|
||||||
|
|
|
@ -309,7 +309,11 @@ with_egress_client(ActionID, ResourceId, Fun, Args) ->
|
||||||
).
|
).
|
||||||
|
|
||||||
trace_render_result(RenderResult, #{trace_ctx := LogMetaData, action_id := ActionID}) ->
|
trace_render_result(RenderResult, #{trace_ctx := LogMetaData, action_id := ActionID}) ->
|
||||||
OldMetaData = logger:get_process_metadata(),
|
OldMetaData =
|
||||||
|
case logger:get_process_metadata() of
|
||||||
|
undefined -> #{};
|
||||||
|
M -> M
|
||||||
|
end,
|
||||||
try
|
try
|
||||||
logger:set_process_metadata(LogMetaData),
|
logger:set_process_metadata(LogMetaData),
|
||||||
emqx_trace:rendered_action_template(
|
emqx_trace:rendered_action_template(
|
||||||
|
|
Loading…
Reference in New Issue