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 2024/02/16 01:01:53 UTC

(couchdb) 01/01: WIP: include dbname in mango exec stats

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

chewbranca pushed a commit to branch add-dbname-to-mango-exec-stats
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit f4490cc6c96db6c27eac56800161e5a05093b122
Author: Russell Branca <ch...@apache.org>
AuthorDate: Thu Feb 15 17:00:51 2024 -0800

    WIP: include dbname in mango exec stats
---
 src/mango/src/mango_cursor_nouveau.erl  |  5 +++--
 src/mango/src/mango_cursor_text.erl     |  5 +++--
 src/mango/src/mango_cursor_view.erl     | 15 ++++++++++-----
 src/mango/src/mango_execution_stats.erl | 11 +++++++----
 src/mango/src/mango_execution_stats.hrl |  3 ++-
 5 files changed, 25 insertions(+), 14 deletions(-)

diff --git a/src/mango/src/mango_cursor_nouveau.erl b/src/mango/src/mango_cursor_nouveau.erl
index 5471ea46a..7caf8c427 100644
--- a/src/mango/src/mango_cursor_nouveau.erl
+++ b/src/mango/src/mango_cursor_nouveau.erl
@@ -86,6 +86,7 @@ execute(Cursor, UserFun, UserAcc) ->
         opts = Opts,
         execution_stats = Stats
     } = Cursor,
+    DbName = couch_db:name(Db),
     Query = mango_selector_text:convert(Selector),
     QueryArgs = #{
         query => Query,
@@ -94,7 +95,7 @@ execute(Cursor, UserFun, UserAcc) ->
     },
     CAcc = #cacc{
         selector = Selector,
-        dbname = couch_db:name(Db),
+        dbname = DbName,
         ddocid = ddocid(Idx),
         idx_name = mango_idx:name(Idx),
         bookmark = get_bookmark(Opts),
@@ -104,7 +105,7 @@ execute(Cursor, UserFun, UserAcc) ->
         user_fun = UserFun,
         user_acc = UserAcc,
         fields = Cursor#cursor.fields,
-        execution_stats = mango_execution_stats:log_start(Stats),
+        execution_stats = mango_execution_stats:log_start(Stats, DbName),
         documents_seen = sets:new([{version, 2}])
     },
     try
diff --git a/src/mango/src/mango_cursor_text.erl b/src/mango/src/mango_cursor_text.erl
index ee1d962f7..404cc1726 100644
--- a/src/mango/src/mango_cursor_text.erl
+++ b/src/mango/src/mango_cursor_text.erl
@@ -90,6 +90,7 @@ execute(Cursor, UserFun, UserAcc) ->
         opts = Opts,
         execution_stats = Stats
     } = Cursor,
+    DbName = couch_db:name(Db),
     Query = mango_selector_text:convert(Selector),
     QueryArgs = #index_query_args{
         q = Query,
@@ -99,7 +100,7 @@ execute(Cursor, UserFun, UserAcc) ->
     },
     CAcc = #cacc{
         selector = Selector,
-        dbname = couch_db:name(Db),
+        dbname = DbName,
         ddocid = ddocid(Idx),
         idx_name = mango_idx:name(Idx),
         bookmark = get_bookmark(Opts),
@@ -109,7 +110,7 @@ execute(Cursor, UserFun, UserAcc) ->
         user_fun = UserFun,
         user_acc = UserAcc,
         fields = Cursor#cursor.fields,
-        execution_stats = mango_execution_stats:log_start(Stats),
+        execution_stats = mango_execution_stats:log_start(Stats, DbName),
         documents_seen = sets:new([{version, 2}])
     },
     try
diff --git a/src/mango/src/mango_cursor_view.erl b/src/mango/src/mango_cursor_view.erl
index b103d869d..3e67bbbf2 100644
--- a/src/mango/src/mango_cursor_view.erl
+++ b/src/mango/src/mango_cursor_view.erl
@@ -211,10 +211,11 @@ base_args(#cursor{index = Idx, selector = Selector, fields = Fields} = Cursor) -
     UserAccumulator :: any(),
     Result :: {ok, UserAccumulator} | {error, any()}.
 execute(#cursor{db = Db, index = Idx, execution_stats = Stats} = Cursor0, UserFun, UserAcc) ->
+    DbName = couch_db:name(Db),
     Cursor = Cursor0#cursor{
         user_fun = UserFun,
         user_acc = UserAcc,
-        execution_stats = mango_execution_stats:log_start(Stats)
+        execution_stats = mango_execution_stats:log_start(Stats, DbName)
     },
     case Cursor#cursor.ranges of
         [empty] ->
@@ -993,7 +994,8 @@ execute_test_() ->
         fun() ->
             meck:new(foo, [non_strict]),
             meck:new(fabric),
-            meck:new(chttpd_stats)
+            meck:new(chttpd_stats),
+            meck:expect(couch_db, name, fun(A) when is_atom(A) -> atom_to_binary(A) end)
         end,
         fun(_) -> meck:unload() end,
         [
@@ -1174,6 +1176,7 @@ t_execute_ok_query_view(_) ->
 
 t_execute_ok_all_docs_with_execution_stats(_) ->
     Bookmark = bookmark,
+    DbName = db,
     TotalKeysExamined = 33,
     TotalDocsExamined = 12,
     TotalQuorumDocsExamined = 0,
@@ -1184,7 +1187,8 @@ t_execute_ok_all_docs_with_execution_stats(_) ->
             totalDocsExamined = TotalDocsExamined,
             totalQuorumDocsExamined = TotalQuorumDocsExamined,
             resultsReturned = ResultsReturned,
-            executionStartTime = {0, 0, 0}
+            executionStartTime = {0, 0, 0},
+            dbname = DbName
         },
     Stats =
         {[
@@ -1192,7 +1196,8 @@ t_execute_ok_all_docs_with_execution_stats(_) ->
             {total_docs_examined, TotalDocsExamined},
             {total_quorum_docs_examined, TotalQuorumDocsExamined},
             {results_returned, ResultsReturned},
-            {execution_time_ms, '_'}
+            {execution_time_ms, '_'},
+            {dbname, DbName}
         ]},
     UserFnDefinition =
         [
@@ -1209,7 +1214,7 @@ t_execute_ok_all_docs_with_execution_stats(_) ->
     Cursor =
         #cursor{
             index = Index,
-            db = db,
+            db = DbName,
             selector = Selector,
             fields = Fields,
             ranges = [{'$gte', start_key, '$lte', end_key}],
diff --git a/src/mango/src/mango_execution_stats.erl b/src/mango/src/mango_execution_stats.erl
index dce7c087b..11336132d 100644
--- a/src/mango/src/mango_execution_stats.erl
+++ b/src/mango/src/mango_execution_stats.erl
@@ -21,7 +21,7 @@
     incr_docs_examined/2,
     incr_quorum_docs_examined/1,
     incr_results_returned/1,
-    log_start/1,
+    log_start/2,
     log_end/1,
     log_stats/1,
     maybe_add_stats/4,
@@ -42,7 +42,8 @@ to_json(Stats) ->
         {total_docs_examined, Stats#execution_stats.totalDocsExamined},
         {total_quorum_docs_examined, Stats#execution_stats.totalQuorumDocsExamined},
         {results_returned, Stats#execution_stats.resultsReturned},
-        {execution_time_ms, Stats#execution_stats.executionTimeMs}
+        {execution_time_ms, Stats#execution_stats.executionTimeMs},
+        {dbname, Stats#execution_stats.dbname}
     ]}.
 
 to_map(Stats) ->
@@ -51,6 +52,7 @@ to_map(Stats) ->
         total_docs_examined => Stats#execution_stats.totalDocsExamined,
         total_quorum_docs_examined => Stats#execution_stats.totalQuorumDocsExamined,
         results_returned => Stats#execution_stats.resultsReturned,
+        dbname => Stats#execution_stats.dbname,
         execution_time_ms => Stats#execution_stats.executionTimeMs
     }.
 
@@ -81,9 +83,10 @@ incr_results_returned(Stats) ->
         resultsReturned = Stats#execution_stats.resultsReturned + 1
     }.
 
-log_start(Stats) ->
+log_start(Stats, DbName) ->
     Stats#execution_stats{
-        executionStartTime = os:timestamp()
+        executionStartTime = os:timestamp(),
+        dbname = DbName
     }.
 
 log_end(Stats) ->
diff --git a/src/mango/src/mango_execution_stats.hrl b/src/mango/src/mango_execution_stats.hrl
index ea5ed5ee8..302460c26 100644
--- a/src/mango/src/mango_execution_stats.hrl
+++ b/src/mango/src/mango_execution_stats.hrl
@@ -16,5 +16,6 @@
     totalQuorumDocsExamined = 0,
     resultsReturned = 0,
     executionStartTime,
-    executionTimeMs
+    executionTimeMs,
+    dbname
 }).