You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ch...@apache.org on 2023/01/17 17:41:29 UTC

[couchdb] 02/02: Add measures logging

This is an automated email from the ASF dual-hosted git repository.

chewbranca pushed a commit to branch add-report-logging
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit 9ce6bdc81a5958484e5dcd53e1ed9373d557faf0
Author: Russell Branca <ch...@apache.org>
AuthorDate: Tue Jan 17 09:41:14 2023 -0800

    Add measures logging
---
 src/couch_log/priv/stats_descriptions.cfg |  4 ++++
 src/couch_log/src/couch_log.erl           | 11 ++++++-----
 src/mango/src/mango_cursor_view.erl       |  1 +
 src/mango/src/mango_execution_stats.erl   | 11 +++++++++++
 4 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/src/couch_log/priv/stats_descriptions.cfg b/src/couch_log/priv/stats_descriptions.cfg
index 31e41614b..febb5e057 100644
--- a/src/couch_log/priv/stats_descriptions.cfg
+++ b/src/couch_log/priv/stats_descriptions.cfg
@@ -46,3 +46,7 @@
     {type, counter},
     {desc, <<"number of logged warning messages">>}
 ]}.
+{[couch_log, level, report], [
+    {type, counter},
+    {desc, <<"number of logged report messages">>}
+]}.
diff --git a/src/couch_log/src/couch_log.erl b/src/couch_log/src/couch_log.erl
index d519082ce..3d198994c 100644
--- a/src/couch_log/src/couch_log.erl
+++ b/src/couch_log/src/couch_log.erl
@@ -21,7 +21,7 @@
     critical/2,
     alert/2,
     emergency/2,
-    report/2,
+    report/4,
     set_level/1
 ]).
 
@@ -49,11 +49,12 @@ alert(Fmt, Args) -> log(alert, Fmt, Args).
 -spec emergency(string(), list()) -> ok.
 emergency(Fmt, Args) -> log(emergency, Fmt, Args).
 
--spec report(string(), map()) -> ok.
-report(ReportId, Meta) when is_map(Meta) ->
+-spec report(string(), string(), list(), map()) -> ok.
+report(ReportId, Fmt, Args, Meta) when is_map(Meta) ->
     couch_stats:increment_counter([couch_log, level, report]),
-    Entry = couch_log_formatter:format(report, self(), ReportId, "", [], Meta),
-    ok = couch_log_server:report(Entry).
+    Entry = couch_log_formatter:format(report, self(), ReportId, Fmt, Args, Meta),
+    %%ok = couch_log_server:report(Entry).
+    ok = couch_log_server:log(Entry).
 
 -spec set_level(atom() | string() | integer()) -> true.
 set_level(Level) ->
diff --git a/src/mango/src/mango_cursor_view.erl b/src/mango/src/mango_cursor_view.erl
index 9202ce071..9bca19cee 100644
--- a/src/mango/src/mango_cursor_view.erl
+++ b/src/mango/src/mango_cursor_view.erl
@@ -159,6 +159,7 @@ execute(#cursor{db = Db, index = Idx, execution_stats = Stats} = Cursor0, UserFu
                     Arg = {add_key, bookmark, NewBookmark},
                     {_Go, FinalUserAcc} = UserFun(Arg, LastCursor#cursor.user_acc),
                     Stats0 = LastCursor#cursor.execution_stats,
+                    mango_execution_stats:log_stats(Stats0),
                     FinalUserAcc0 = mango_execution_stats:maybe_add_stats(
                         Opts, UserFun, Stats0, FinalUserAcc
                     ),
diff --git a/src/mango/src/mango_execution_stats.erl b/src/mango/src/mango_execution_stats.erl
index 0db3edf5f..2752f5a71 100644
--- a/src/mango/src/mango_execution_stats.erl
+++ b/src/mango/src/mango_execution_stats.erl
@@ -21,6 +21,7 @@
     incr_results_returned/1,
     log_start/1,
     log_end/1,
+    log_stats/1,
     maybe_add_stats/4
 ]).
 
@@ -74,6 +75,9 @@ log_end(Stats) ->
 maybe_add_stats(Opts, UserFun, Stats0, UserAcc) ->
     Stats1 = log_end(Stats0),
     couch_stats:update_histogram([mango, query_time], Stats1#execution_stats.executionTimeMs),
+    %% TODO: validate rows/reads assignments
+    chttpd_stats:incr_rows(Stats1#execution_stats.totalDocsExamined),
+    chttpd_stats:incr_reads(Stats1#execution_stats.totalQuorumDocsExamined),
 
     case couch_util:get_value(execution_stats, Opts) of
         true ->
@@ -84,3 +88,10 @@ maybe_add_stats(Opts, UserFun, Stats0, UserAcc) ->
         _ ->
             UserAcc
     end.
+
+log_stats(Stats) ->
+    {JStats0} = to_json(Stats),
+    Nonce = list_to_binary(couch_log_util:get_msg_id()),
+    JStats = {[{<<"nonce">>, Nonce} | JStats0]},
+	%% TODO: switch to report
+    couch_log:report("FIXME-reportid", "[ASDFMARKER] GOT MANGO EXEC STATS: ~s", [binary_to_list(jiffy:encode(JStats))], #{}).