This is an automated email from the ASF dual-hosted git repository. iilyak pushed a commit to branch couch-stats-resource-tracker-v3-rebase-http-2 in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit af513df187f9eae129956c0180d529bf8b4eb745 Author: ILYA Khlopotov <[email protected]> AuthorDate: Wed Jun 25 08:11:42 2025 -0700 Move rctx_record_info/0 to csrt_entry --- src/couch_stats/src/csrt_entry.erl | 19 ++++++++++++++++++- src/couch_stats/src/csrt_logger.erl | 6 +++--- src/couch_stats/src/csrt_util.erl | 18 +----------------- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/couch_stats/src/csrt_entry.erl b/src/couch_stats/src/csrt_entry.erl index fae6da351..b92217f41 100644 --- a/src/couch_stats/src/csrt_entry.erl +++ b/src/couch_stats/src/csrt_entry.erl @@ -18,7 +18,8 @@ -export([ value/2, key/1, - from_map/1 + from_map/1, + record_info/0 ]). -spec value(rctx_field(), #rctx{}) -> any(). @@ -137,3 +138,19 @@ set_field(ioq_calls, Val, Rctx) -> set_field(_, _, Rctx) -> %% Unknown key, could throw but just move on Rctx. + +-spec record_info() -> + #{ + fields => [rctx_field()], + size => pos_integer(), + field_idx => #{rctx_field() => pos_integer()} + }. +record_info() -> + Fields = record_info(fields, rctx), + Size = record_info(size, rctx), + Idx = maps:from_list(lists:zip(Fields, lists:seq(1, length(Fields)))), + #{ + fields => Fields, + field_idx => Idx, + size => Size + }. diff --git a/src/couch_stats/src/csrt_logger.erl b/src/couch_stats/src/csrt_logger.erl index b7d69356f..c0ec76d18 100644 --- a/src/couch_stats/src/csrt_logger.erl +++ b/src/couch_stats/src/csrt_logger.erl @@ -417,14 +417,14 @@ matcher_on_ioq_calls(Threshold) when %%-spec matcher_for_rctx_field(Field :: rctx_field()) -> ets:match_spec(). %%matcher_for_rctx_field() -> -%% #{size := Size0, fields := Fields} = csrt_util:rctx_record_info(), +%% #{size := Size0, fields := Fields} = csrt_entry:record_info(), %% %% Subtract 1 as record_info size includes tuple record name -%% %% erlang:list_to_tuple([rctx | lists:duplicate(maps:get(size, csrt_util:rctx_record_info()), '_')]) +%% %% erlang:list_to_tuple([rctx | lists:duplicate(maps:get(size, csrt_entry:record_info()), '_')]) %% Size = Size - 1, -spec pid_ref_matchspec(AttrName :: rctx_field()) -> matcher() | throw(any()). pid_ref_matchspec(AttrName) -> - #{field_idx := FieldIdx} = csrt_util:rctx_record_info(), + #{field_idx := FieldIdx} = csrt_entry:record_info(), RctxMatch0 = #rctx{_ = '_'}, RctxMatch1 = setelement(maps:get(pid_ref, FieldIdx) + 1, RctxMatch0, '$1'), RctxMatch = setelement(maps:get(AttrName, FieldIdx) + 1, RctxMatch1, '$2'), diff --git a/src/couch_stats/src/csrt_util.erl b/src/couch_stats/src/csrt_util.erl index f0a5ff4c5..cc4efb856 100644 --- a/src/couch_stats/src/csrt_util.erl +++ b/src/couch_stats/src/csrt_util.erl @@ -359,22 +359,6 @@ fabric_conf_key(Key) -> %% Double underscore to separate Mod and Func "fabric_rpc__" ++ atom_to_list(Key). --spec rctx_record_info() -> - #{ - fields => [rctx_field()], - size => pos_integer(), - field_idx => #{rctx_field() => pos_integer()} - }. -rctx_record_info() -> - Fields = record_info(fields, rctx), - Size = record_info(size, rctx), - Idx = maps:from_list(lists:zip(Fields, lists:seq(1, length(Fields)))), - #{ - fields => Fields, - field_idx => Idx, - size => Size - }. - -ifdef(TEST). -include_lib("couch/include/couch_eunit.hrl"). @@ -432,7 +416,7 @@ t_should_not_track_init_p(_) -> t_should_extract_fields_properly(_) -> Rctx = #rctx{}, - #{fields := Fields} = rctx_record_info(), + #{fields := Fields} = csrt_entry:record_info(), %% field/2 throws on invalid fields, assert that the function succeeded TestField = fun(Field) -> try
