From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lj1-f173.google.com (mail-lj1-f173.google.com [209.85.208.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id E571F45C30A for ; Fri, 4 Dec 2020 18:30:56 +0300 (MSK) Received: by mail-lj1-f173.google.com with SMTP id f24so7026219ljk.13 for ; Fri, 04 Dec 2020 07:30:56 -0800 (PST) From: Cyrill Gorcunov Date: Fri, 4 Dec 2020 18:30:03 +0300 Message-Id: <20201204153003.175555-5-gorcunov@gmail.com> In-Reply-To: <20201204153003.175555-1-gorcunov@gmail.com> References: <20201204153003.175555-1-gorcunov@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [Tarantool-patches] [PATCH v3 4/4] cfg: configure crash report sending List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: tml Cc: Mons Anderson , Vladislav Shpilevoy Introcude a new option to box.cfg{} to control sending of a crash report. There is no simple way to test all this because it involves subsequent runs of tarantool. I've been using one terminal with tarantool running inside as > box.cfg{feedback_host="127.0.0.1:1500"} another terminal to listen for incoming data > while true ; do nc -l -p 1500 -c 'echo -e "HTTP/1.1 200 OK\n\n $(date)"'; done and one another to kill main tarantool instance > kill -11 `pidof tarantool` If we run as > box.cfg{feedback_host="127.0.0.1:1500", feedback_no_crashinfo=true} then the crash report will not be sent. Closes #5261 Signed-off-by: Cyrill Gorcunov @TarantoolBot document Title: Configuration reference Header: Feedback For better analisys of program crashes the information associated with the crash such as - utsname (similar to `uname -a` output except the network name) - build information - reason for a crash - call backtrace is sent to the feedback server. To disable it set `feedback_no_crashinfo` to `false`. --- src/box/lua/feedback_daemon.lua | 7 +++++++ src/box/lua/load_cfg.lua | 3 +++ src/lib/core/errstat.c | 2 +- test/box/admin.result | 2 ++ test/box/cfg.result | 4 ++++ 5 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/box/lua/feedback_daemon.lua b/src/box/lua/feedback_daemon.lua index 1d39012ed..613d2864c 100644 --- a/src/box/lua/feedback_daemon.lua +++ b/src/box/lua/feedback_daemon.lua @@ -1,6 +1,7 @@ -- feedback_daemon.lua (internal file) -- local log = require('log') +local ffi = require('ffi') local json = require('json') local fiber = require('fiber') local http = require('http.client') @@ -360,12 +361,18 @@ local function reload(self) self:start() end +ffi.cdef[[ +void +cfg_errstat_set_params(void); +]] + setmetatable(daemon, { __index = { set_feedback_params = function() daemon.enabled = box.cfg.feedback_enabled daemon.host = box.cfg.feedback_host daemon.interval = box.cfg.feedback_interval + ffi.C.cfg_errstat_set_params() reload(daemon) return end, diff --git a/src/box/lua/load_cfg.lua b/src/box/lua/load_cfg.lua index 770442052..1878c31bd 100644 --- a/src/box/lua/load_cfg.lua +++ b/src/box/lua/load_cfg.lua @@ -99,6 +99,7 @@ local default_cfg = { replication_skip_conflict = false, replication_anon = false, feedback_enabled = true, + feedback_no_crashinfo = false, feedback_host = "https://feedback.tarantool.io", feedback_interval = 3600, net_msg_max = 768, @@ -179,6 +180,7 @@ local template_cfg = { replication_skip_conflict = 'boolean', replication_anon = 'boolean', feedback_enabled = ifdef_feedback('boolean'), + feedback_no_crashinfo = ifdef_feedback('boolean'), feedback_host = ifdef_feedback('string'), feedback_interval = ifdef_feedback('number'), net_msg_max = 'number', @@ -277,6 +279,7 @@ local dynamic_cfg = { checkpoint_wal_threshold = private.cfg_set_checkpoint_wal_threshold, worker_pool_threads = private.cfg_set_worker_pool_threads, feedback_enabled = ifdef_feedback_set_params, + feedback_no_crashinfo = ifdef_feedback_set_params, feedback_host = ifdef_feedback_set_params, feedback_interval = ifdef_feedback_set_params, -- do nothing, affects new replicas, which query this value on start diff --git a/src/lib/core/errstat.c b/src/lib/core/errstat.c index 992bc426a..8664908f6 100644 --- a/src/lib/core/errstat.c +++ b/src/lib/core/errstat.c @@ -23,7 +23,7 @@ #define pr_panic(fmt, ...) panic(pr_fmt(fmt), ##__VA_ARGS__) static struct errstat glob_errstat; -static bool cfg_send_crash = false; +static bool cfg_send_crash = true; /* * We don't need it to be optimized but rather a compact form. diff --git a/test/box/admin.result b/test/box/admin.result index 8c5626c36..b8fa68749 100644 --- a/test/box/admin.result +++ b/test/box/admin.result @@ -47,6 +47,8 @@ cfg_filter(box.cfg) - https://feedback.tarantool.io - - feedback_interval - 3600 + - - feedback_no_crashinfo + - false - - force_recovery - false - - hot_standby diff --git a/test/box/cfg.result b/test/box/cfg.result index 5ca6ce72b..68c45b4cc 100644 --- a/test/box/cfg.result +++ b/test/box/cfg.result @@ -35,6 +35,8 @@ cfg_filter(box.cfg) | - https://feedback.tarantool.io | - - feedback_interval | - 3600 + | - - feedback_no_crashinfo + | - false | - - force_recovery | - false | - - hot_standby @@ -148,6 +150,8 @@ cfg_filter(box.cfg) | - https://feedback.tarantool.io | - - feedback_interval | - 3600 + | - - feedback_no_crashinfo + | - false | - - force_recovery | - false | - - hot_standby -- 2.26.2