Skip to content

Commit abc338f

Browse files
committed
Add get_audit_count/1, get_audit_count_reset/1
1 parent d36f1a8 commit abc338f

2 files changed

Lines changed: 37 additions & 1 deletion

File tree

src/elysium_buffering_audit.erl

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@
1515
-module(elysium_buffering_audit).
1616
-author('jay@duomark.com').
1717

18+
%% External API for audit reporting.
19+
-export([get_audit_count/1,
20+
get_audit_count_reset/1]).
21+
22+
%% Exported functions for audit counting behaviours.
1823
-export([
1924
audit_count_init/2,
2025
audit_count/3,
@@ -107,6 +112,37 @@ count(Audit_Name, Audit_Key, Counter_Pos) ->
107112
ets:update_counter(Audit_Name, Audit_Key, {Counter_Pos, 1}).
108113

109114

115+
-spec get_audit_count (config_type()) -> proplists:proplist().
116+
-spec get_audit_count_reset (config_type()) -> proplists:proplist().
117+
118+
get_audit_count(Config) ->
119+
Count_Flds = count_fields(),
120+
Count_Ops = [{Pos, 0} || {_Label, Pos} <- Count_Flds],
121+
return_counts_proplist(Config, Count_Flds, Count_Ops).
122+
123+
get_audit_count_reset(Config) ->
124+
Count_Flds = count_fields(),
125+
Count_Ops = [{Pos, 0, 0, 0} || {_Label, Pos} <- Count_Flds],
126+
return_counts_proplist(Config, Count_Flds, Count_Ops).
127+
128+
return_counts_proplist(Config, Count_Flds, Count_Ops) ->
129+
{_Buffering, BS_Module} = elysium_connection:get_buffer_strategy_module(Config),
130+
Audit_Key = {BS_Module, counts},
131+
Audit_Name = elysium_config:audit_ets_name(Config),
132+
Raw_Counts = ets:update_counter(Audit_Name, Audit_Key, Count_Ops),
133+
lists:zipwith(fun({Label, _Pos}, Count) -> {Label, Count} end, Count_Flds, Raw_Counts).
134+
135+
count_fields() ->
136+
[{pending_dead, #elysium_audit_counts.pending_dead},
137+
{pending_timeouts, #elysium_audit_counts.pending_timeouts},
138+
{session_dead, #elysium_audit_counts.session_dead},
139+
{session_decay, #elysium_audit_counts.session_decay},
140+
{session_timeouts, #elysium_audit_counts.session_timeouts},
141+
{session_wrong, #elysium_audit_counts.session_wrong},
142+
{worker_errors, #elysium_audit_counts.worker_errors},
143+
{worker_timeouts, #elysium_audit_counts.worker_timeouts}].
144+
145+
110146
%%%-----------------------------------------------------------------------
111147
%%% Audit counts for each connection
112148
%%%-----------------------------------------------------------------------

src/elysium_config.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ load_balancer_queue ({vbisect, Bindict}) -> {ok, Bin_Value} = vbisect:
223223
binary_to_atom(Bin_Value, utf8).
224224

225225
-spec connection_buffering_strategy (config_type()) -> elysium_connection:buffering().
226-
%% @doc Get the configured name of the ets table used for auditing internals.
226+
%% @doc Get the configured name of the buffering strategy.
227227
connection_buffering_strategy ({config_mod, Config_Module}) -> Config_Module:cassandra_connection_bs();
228228
connection_buffering_strategy ({vbisect, Bindict}) -> {ok, Bin_Value} = vbisect:find(<<"cassandra_connection_bs">>, Bindict),
229229
binary_to_atom(Bin_Value, utf8).

0 commit comments

Comments
 (0)