You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ja...@apache.org on 2022/03/29 21:50:50 UTC
[couchdb] branch 3.x updated (7d0f3db -> 5edab62)
This is an automated email from the ASF dual-hosted git repository.
jaydoane pushed a change to branch 3.x
in repository https://gitbox.apache.org/repos/asf/couchdb.git.
from 7d0f3db Handle `not_found` lookups removing ddoc cache key
new be072eb Convert notice to warning for exceptions
new 5edab62 Implement configurable compaction log levels
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
rel/overlay/etc/default.ini | 6 ++++++
src/couch/src/couch_bt_engine.erl | 7 ++++++-
src/couch/src/couch_db_updater.erl | 7 ++++++-
src/smoosh/src/smoosh_channel.erl | 32 ++++++++++++++++++++++----------
src/smoosh/src/smoosh_priority_queue.erl | 6 ++++--
src/smoosh/src/smoosh_server.erl | 14 +++++++++-----
src/smoosh/src/smoosh_utils.erl | 7 ++++++-
7 files changed, 59 insertions(+), 20 deletions(-)
[couchdb] 01/02: Convert notice to warning for exceptions
Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
jaydoane pushed a commit to branch 3.x
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit be072ebf0eb8b01e21dde9164bf64583ff424a22
Author: Jay Doane <ja...@apache.org>
AuthorDate: Mon Mar 28 17:07:48 2022 -0700
Convert notice to warning for exceptions
These entries are logged because of exceptions, and so should be
at least warning level.
---
src/smoosh/src/smoosh_channel.erl | 2 +-
src/smoosh/src/smoosh_server.erl | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/smoosh/src/smoosh_channel.erl b/src/smoosh/src/smoosh_channel.erl
index 85b345b..2f4c7bf 100644
--- a/src/smoosh/src/smoosh_channel.erl
+++ b/src/smoosh/src/smoosh_channel.erl
@@ -434,7 +434,7 @@ maybe_start_compaction(State) ->
maybe_start_compaction(State2#state{waiting = Q})
catch
Class:Exception ->
- couch_log:notice(
+ couch_log:warning(
"~s: ~p ~p for ~s",
[
State#state.name,
diff --git a/src/smoosh/src/smoosh_server.erl b/src/smoosh/src/smoosh_server.erl
index e9823c3..cfde748 100644
--- a/src/smoosh/src/smoosh_server.erl
+++ b/src/smoosh/src/smoosh_server.erl
@@ -294,7 +294,7 @@ enqueue_request(State, Object) ->
end
catch
?STACKTRACE(Class, Exception, Stack)
- couch_log:notice("~s: ~p ~p for ~s : ~p",
+ couch_log:warning("~s: ~p ~p for ~s : ~p",
[?MODULE, Class, Exception,
smoosh_utils:stringify(Object), Stack])
end.
[couchdb] 02/02: Implement configurable compaction log levels
Posted by ja...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
jaydoane pushed a commit to branch 3.x
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit 5edab6273855e597d11a93645cf62a01d24fbe8d
Author: Jay Doane <ja...@apache.org>
AuthorDate: Sun Mar 27 17:01:29 2022 -0700
Implement configurable compaction log levels
Create new config options in `couchdb` and `smoosh` sections to enable
finer control of compaction logging levels.
---
rel/overlay/etc/default.ini | 6 ++++++
src/couch/src/couch_bt_engine.erl | 7 ++++++-
src/couch/src/couch_db_updater.erl | 7 ++++++-
src/smoosh/src/smoosh_channel.erl | 30 +++++++++++++++++++++---------
src/smoosh/src/smoosh_priority_queue.erl | 6 ++++--
src/smoosh/src/smoosh_server.erl | 12 ++++++++----
src/smoosh/src/smoosh_utils.erl | 7 ++++++-
7 files changed, 57 insertions(+), 18 deletions(-)
diff --git a/rel/overlay/etc/default.ini b/rel/overlay/etc/default.ini
index 5def66c..7535501 100644
--- a/rel/overlay/etc/default.ini
+++ b/rel/overlay/etc/default.ini
@@ -84,6 +84,9 @@ view_index_dir = {{view_index_dir}}
; to request attachment data before returning a response to the client.
;attachment_writer_timeout = 300000
+; Sets the log level for informational compaction related entries.
+;compaction_log_level = info
+
[purge]
; Allowed maximum number of documents in one purge request
;max_document_id_number = 100
@@ -647,6 +650,9 @@ partitioned||* = true
; Directory to store the state of smoosh
state_dir = {{state_dir}}
+; Sets the log level for informational compaction related entries.
+;compaction_log_level = notice
+
[ioq]
; The maximum number of concurrent in-flight IO requests that
;concurrency = 10
diff --git a/src/couch/src/couch_bt_engine.erl b/src/couch/src/couch_bt_engine.erl
index 42dbed2..ca0828b 100644
--- a/src/couch/src/couch_bt_engine.erl
+++ b/src/couch/src/couch_bt_engine.erl
@@ -644,7 +644,12 @@ finish_compaction(OldState, DbName, Options, CompactFilePath) ->
true ->
finish_compaction_int(OldState, NewState1);
false ->
- couch_log:info(
+ Level = list_to_existing_atom(
+ config:get(
+ "couchdb", "compaction_log_level", "info"
+ )
+ ),
+ couch_log:Level(
"Compaction file still behind main file "
"(update seq=~p. compact update seq=~p). Retrying.",
[OldSeq, NewSeq]
diff --git a/src/couch/src/couch_db_updater.erl b/src/couch/src/couch_db_updater.erl
index 710b705..17a1e91 100644
--- a/src/couch/src/couch_db_updater.erl
+++ b/src/couch/src/couch_db_updater.erl
@@ -139,7 +139,12 @@ handle_cast(start_compact, Db) ->
% type to compact to with a new copy compactor.
UpdateSeq = couch_db_engine:get_update_seq(Db),
Args = [Db#db.name, UpdateSeq],
- couch_log:info("Starting compaction for db \"~s\" at ~p", Args),
+ Level = list_to_existing_atom(
+ config:get(
+ "couchdb", "compaction_log_level", "info"
+ )
+ ),
+ couch_log:Level("Starting compaction for db \"~s\" at ~p", Args),
{ok, Db2} = couch_db_engine:start_compaction(Db),
ok = couch_server:db_updated(Db2),
{noreply, Db2, idle_limit()};
diff --git a/src/smoosh/src/smoosh_channel.erl b/src/smoosh/src/smoosh_channel.erl
index 2f4c7bf..da8bacf 100644
--- a/src/smoosh/src/smoosh_channel.erl
+++ b/src/smoosh/src/smoosh_channel.erl
@@ -148,7 +148,8 @@ handle_cast({enqueue, _Object, 0}, #state{} = State) ->
handle_cast({enqueue, Object, Priority}, #state{activated = true} = State) ->
{noreply, maybe_start_compaction(add_to_queue(Object, Priority, State))};
handle_cast({enqueue, Object, Priority}, #state{activated = false, requests = Requests} = State0) ->
- couch_log:notice(
+ Level = smoosh_utils:log_level("compaction_log_level", "notice"),
+ couch_log:Level(
"~p Channel is not activated yet. Adding ~p to requests with priority ~p.", [
?MODULE,
Object,
@@ -197,7 +198,8 @@ handle_info({'DOWN', Ref, _, Job, Reason}, State) ->
handle_info({Ref, {ok, Pid}}, State) when is_reference(Ref) ->
case lists:keytake(Ref, 1, State#state.starting) of
{value, {_, Key}, Starting1} ->
- couch_log:notice(
+ Level = smoosh_utils:log_level("compaction_log_level", "notice"),
+ couch_log:Level(
"~s: Started compaction for ~s",
[State#state.name, smoosh_utils:stringify(Key)]
),
@@ -252,7 +254,8 @@ handle_info(start_recovery, #state{name = Name, waiting = Waiting0} = State0) ->
RecActive
),
State1 = maybe_start_compaction(State0#state{paused = false, waiting = Waiting1}),
- couch_log:notice(
+ Level = smoosh_utils:log_level("compaction_log_level", "notice"),
+ couch_log:Level(
"~p Previously active compaction jobs (if any) have been successfully recovered and restarted.",
[?MODULE]
),
@@ -289,7 +292,8 @@ do_recover(FilePath) ->
<<Vsn, Binary/binary>> = Content,
try parse_state(Vsn, ?VSN, Binary) of
Term ->
- couch_log:notice(
+ Level = smoosh_utils:log_level("compaction_log_level", "notice"),
+ couch_log:Level(
"~p Successfully restored state file ~s", [?MODULE, FilePath]
),
{ok, Term}
@@ -302,7 +306,8 @@ do_recover(FilePath) ->
error
end;
{error, enoent} ->
- couch_log:notice(
+ Level = smoosh_utils:log_level("compaction_log_level", "notice"),
+ couch_log:Level(
"~p (~p) State file ~s does not exist. Not restoring.", [?MODULE, enoent, FilePath]
),
error;
@@ -353,7 +358,8 @@ add_to_queue(Key, Priority, State) ->
State;
false ->
Capacity = list_to_integer(smoosh_utils:get(State#state.name, "capacity", "9999")),
- couch_log:notice(
+ Level = smoosh_utils:log_level("compaction_log_level", "notice"),
+ couch_log:Level(
"~s: adding ~p to internal compactor queue with priority ~p",
[State#state.name, Key, Priority]
),
@@ -425,7 +431,11 @@ maybe_start_compaction(State) ->
false ->
State;
State1 ->
- couch_log:notice(
+ Level = smoosh_utils:log_level(
+ "compaction_log_level",
+ "notice"
+ ),
+ couch_log:Level(
"~s: Starting compaction for ~s (priority ~p)",
[State#state.name, smoosh_utils:stringify(Key), Priority]
),
@@ -498,7 +508,8 @@ start_compact(State, Db) ->
State#state{starting = [{Ref, Key} | State#state.starting]};
% Compaction is already running, so monitor existing compaction pid.
CPid ->
- couch_log:notice(
+ Level = smoosh_utils:log_level("compaction_log_level", "notice"),
+ couch_log:Level(
"Db ~s continuing compaction",
[smoosh_utils:stringify(Key)]
),
@@ -520,7 +531,8 @@ maybe_remonitor_cpid(State, DbName, Reason) when is_binary(DbName) ->
{ok, _} = timer:apply_after(5000, smoosh_server, enqueue, [DbName]),
State;
CPid ->
- couch_log:notice(
+ Level = smoosh_utils:log_level("compaction_log_level", "notice"),
+ couch_log:Level(
"~s compaction already running. Re-monitor Pid ~p",
[smoosh_utils:stringify(DbName), CPid]
),
diff --git a/src/smoosh/src/smoosh_priority_queue.erl b/src/smoosh/src/smoosh_priority_queue.erl
index 83c9366..000297a 100644
--- a/src/smoosh/src/smoosh_priority_queue.erl
+++ b/src/smoosh/src/smoosh_priority_queue.erl
@@ -144,7 +144,8 @@ do_recover(FilePath) ->
<<Vsn, Binary/binary>> = Content,
try parse_queue(Vsn, ?VSN, Binary) of
Bin ->
- couch_log:notice(
+ Level = smoosh_utils:log_level("compaction_log_level", "notice"),
+ couch_log:Level(
"~p Successfully restored state file ~s", [?MODULE, FilePath]
),
{ok, Bin}
@@ -157,7 +158,8 @@ do_recover(FilePath) ->
error
end;
{error, enoent} ->
- couch_log:notice(
+ Level = smoosh_utils:log_level("compaction_log_level", "notice"),
+ couch_log:Level(
"~p (~p) Queue file ~s does not exist. Not restoring.", [?MODULE, enoent, FilePath]
),
error;
diff --git a/src/smoosh/src/smoosh_server.erl b/src/smoosh/src/smoosh_server.erl
index cfde748..f0260e9 100644
--- a/src/smoosh/src/smoosh_server.erl
+++ b/src/smoosh/src/smoosh_server.erl
@@ -173,7 +173,8 @@ handle_call({enqueue, Object}, _From, State) ->
handle_call(suspend, _From, State) ->
ets:foldl(
fun(#channel{name = Name, pid = P}, _) ->
- couch_log:notice("Suspending ~p", [Name]),
+ Level = smoosh_utils:log_level("compaction_log_level", "notice"),
+ couch_log:Level("Suspending ~p", [Name]),
smoosh_channel:suspend(P)
end,
0,
@@ -183,7 +184,8 @@ handle_call(suspend, _From, State) ->
handle_call(resume, _From, State) ->
ets:foldl(
fun(#channel{name = Name, pid = P}, _) ->
- couch_log:notice("Resuming ~p", [Name]),
+ Level = smoosh_utils:log_level("compaction_log_level", "notice"),
+ couch_log:Level("Resuming ~p", [Name]),
smoosh_channel:resume(P)
end,
0,
@@ -222,11 +224,13 @@ handle_cast({enqueue, Object}, State) ->
end.
handle_info({'EXIT', Pid, Reason}, #state{event_listener = Pid} = State) ->
- couch_log:notice("update notifier died ~p", [Reason]),
+ Level = smoosh_utils:log_level("compaction_log_level", "notice"),
+ couch_log:Level("update notifier died ~p", [Reason]),
{ok, Pid1} = start_event_listener(),
{noreply, State#state{event_listener = Pid1}};
handle_info({'EXIT', Pid, Reason}, State) ->
- couch_log:notice("~p ~p died ~p", [?MODULE, Pid, Reason]),
+ Level = smoosh_utils:log_level("compaction_log_level", "notice"),
+ couch_log:Level("~p ~p died ~p", [?MODULE, Pid, Reason]),
case ets:match_object(State#state.tab, #channel{pid = Pid, _ = '_'}) of
[#channel{name = Name}] ->
ets:delete(State#state.tab, Name);
diff --git a/src/smoosh/src/smoosh_utils.erl b/src/smoosh/src/smoosh_utils.erl
index 625a9e4..72be585 100644
--- a/src/smoosh/src/smoosh_utils.erl
+++ b/src/smoosh/src/smoosh_utils.erl
@@ -15,6 +15,7 @@
-export([get/2, get/3, group_pid/1, split/1, stringify/1, ignore_db/1]).
-export([in_allowed_window/1, write_to_file/3]).
+-export([log_level/2]).
group_pid({Shard, GroupId}) ->
case couch_view_group:open_db_group(Shard, GroupId) of
@@ -87,7 +88,8 @@ throw_on_error(Args, {error, Reason}) ->
throw({error, {Reason, Args}}).
write_to_file(Content, FileName, VSN) ->
- couch_log:notice("~p Writing state to state file ~s", [?MODULE, FileName]),
+ Level = log_level("compaction_log_level", "notice"),
+ couch_log:Level("~p Writing state ~s", [?MODULE, FileName]),
OnDisk = <<VSN, (erlang:term_to_binary(Content, [compressed, {minor_version, 1}]))/binary>>,
TmpFileName = FileName ++ ".tmp",
try
@@ -116,3 +118,6 @@ parse_time(String, Default) ->
couch_log:error("Malformed compaction schedule configuration: ~s", [String]),
Default
end.
+
+log_level(Key, Default) when is_list(Key), is_list(Default) ->
+ list_to_existing_atom(config:get("smoosh", Key, Default)).