[Tarantool-patches] [PATCH v3 4/4] cfg: configure crash report sending
Cyrill Gorcunov
gorcunov at gmail.com
Fri Dec 4 18:30:03 MSK 2020
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 <gorcunov at gmail.com>
@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
More information about the Tarantool-patches
mailing list