You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by da...@apache.org on 2019/10/24 18:13:19 UTC

[couchdb] 03/06: Reduce logging calls in couch_server

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

davisp pushed a commit to branch optimize-couch-server
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit 38128622f653142860c12dc2d9906bf0a9ca4c6d
Author: Paul J. Davis <pa...@gmail.com>
AuthorDate: Tue Sep 18 15:39:34 2018 -0500

    Reduce logging calls in couch_server
    
    Even when disabled these logs can take a non-trivial amount of
    reductions which can add extra suspensions to couch_server's main loop.
---
 src/couch/src/couch_server.erl | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/src/couch/src/couch_server.erl b/src/couch/src/couch_server.erl
index e42f103..dea950e 100644
--- a/src/couch/src/couch_server.erl
+++ b/src/couch/src/couch_server.erl
@@ -366,7 +366,13 @@ open_async(Server, From, DbName, {Module, Filepath}, Options) ->
                 ok
         end,
         gen_server:call(Parent, {open_result, T0, DbName, Res}, infinity),
-        unlink(Parent)
+        unlink(Parent),
+        case Res of
+            {ok, _} ->
+                ok;
+            Error ->
+                couch_log:info("open_result error ~p for ~s", [Error, DbName])
+        end
     end),
     ReqType = case lists:member(create, Options) of
         true -> create;
@@ -452,7 +458,6 @@ handle_call({open_result, _T0, DbName, Error}, {Opener, _}, Server) ->
             {reply, ok, Server};
         [#entry{pid = Opener, req_type = ReqType, waiters = Waiters} = Entry] ->
             [gen_server:reply(Waiter, Error) || Waiter <- Waiters],
-            couch_log:info("open_result error ~p for ~s", [Error, DbName]),
             true = ets:delete(couch_dbs, DbName),
             true = ets:delete(couch_dbs_pid_to_name, Opener),
             NewServer = case ReqType of
@@ -485,7 +490,8 @@ handle_call({open, DbName, Options}, From, Server) ->
         end;
     [#entry{waiters = Waiters} = Entry] when is_list(Waiters) ->
         true = ets:insert(couch_dbs, Entry#entry{waiters = [From | Waiters]}),
-        if length(Waiters) =< 10 -> ok; true ->
+        NumWaiters = length(Waiters),
+        if NumWaiters =< 10 orelse NumWaiters rem 10 /= 0 -> ok; true ->
             Fmt = "~b clients waiting to open db ~s",
             couch_log:info(Fmt, [length(Waiters), DbName])
         end,
@@ -625,7 +631,12 @@ handle_info({'EXIT', Pid, Reason}, Server) ->
                 "must be built with Erlang OTP R13B04 or higher.", [DbName]),
             couch_log:error(Msg, [])
         end,
-        couch_log:info("db ~s died with reason ~p", [DbName, Reason]),
+        % We kill databases on purpose so there's no reason
+        % to log that fact. So we restrict logging to "interesting"
+        % reasons.
+        if Reason == normal orelse Reason == killed -> ok; true ->
+            couch_log:info("db ~s died with reason ~p", [DbName, Reason])
+        end,
         if not is_list(Waiters) -> ok; true ->
             [gen_server:reply(Waiter, Reason) || Waiter <- Waiters]
         end,