From: Ilya Konyukhov <runsfor@gmail.com> To: tarantool-patches@dev.tarantool.org Cc: v.shpilevoy@tarantool.org, alexander.turenko@tarantool.org Subject: [Tarantool-patches] [PATCH 1/2] feedback: determine runtime platform info Date: Fri, 5 Jun 2020 11:35:42 +0300 [thread overview] Message-ID: <d3de1c532af7b0b4ef107955a8b7f8cf1c363675.1591345474.git.runsfor@gmail.com> (raw) In-Reply-To: <cover.1591345474.git.runsfor@gmail.com> This patch detect which platform instance is running on. It uses luajit `jit` module to get OS name and architecture. Se more in [docs page](https://luajit.org/ext_jit.html). Also it tries to figure out whether instance is running inside docker container or not. It's difficult know accurately but one of the most stable and simple ways at the same time is to look in [`/proc/1/cgroup`](https://stackoverflow.com/a/20012536/1881632) file. Closes #3608 Related to #4943 --- cmake/os.cmake | 2 +- src/box/lua/feedback_daemon.lua | 29 ++++++++++++++++++++++++++- test/box-tap/feedback_daemon.test.lua | 3 +-- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/cmake/os.cmake b/cmake/os.cmake index 905be61df..462bdccc3 100644 --- a/cmake/os.cmake +++ b/cmake/os.cmake @@ -78,7 +78,7 @@ elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") # # Default build type is None, which uses depends by Apple -# command line tools. Also supportting install with MacPorts. +# command line tools. Also supporting install with MacPorts. # if (NOT DARWIN_BUILD_TYPE) set(DARWIN_BUILD_TYPE None CACHE STRING diff --git a/src/box/lua/feedback_daemon.lua b/src/box/lua/feedback_daemon.lua index 95130d696..2ce49fb22 100644 --- a/src/box/lua/feedback_daemon.lua +++ b/src/box/lua/feedback_daemon.lua @@ -26,13 +26,40 @@ local function get_fiber_id(f) return fid end -local function fill_in_feedback(feedback) +local function detect_docker_environment() + local fh = fio.open('/proc/1/cgroup', {'O_RDONLY'}) + if not fh then return false end + + -- fh:read() doesn't read empty files + local big_enough_chunk = 4096 + local ok = fh:read(big_enough_chunk) + fh:close() + if not ok then return false end + + if not string.find(ok, 'docker') then return false end + + return true +end + +local function fill_in_base_info(feedback) if box.info.status ~= "running" then return nil, "not running" end feedback.tarantool_version = box.info.version feedback.server_id = box.info.uuid feedback.cluster_id = box.info.cluster.uuid +end + +local function fill_in_platform_info(feedback) + feedback.os = jit.os + feedback.arch = jit.arch + feedback.is_docker = detect_docker_environment() +end + +local function fill_in_feedback(feedback) + fill_in_base_info(feedback) + fill_in_platform_info(feedback) + return feedback end diff --git a/test/box-tap/feedback_daemon.test.lua b/test/box-tap/feedback_daemon.test.lua index d4adb71f1..c36b2a694 100755 --- a/test/box-tap/feedback_daemon.test.lua +++ b/test/box-tap/feedback_daemon.test.lua @@ -131,5 +131,4 @@ daemon.start() daemon.send_test() daemon.stop() -test:check() -os.exit(0) +os.exit(test:check() and 0 or 1) -- 2.24.3 (Apple Git-128)
next prev parent reply other threads:[~2020-06-05 8:37 UTC|newest] Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-06-05 8:35 [Tarantool-patches] [PATCH 0/2] Extend feedback module report Ilya Konyukhov 2020-06-05 8:35 ` Ilya Konyukhov [this message] 2020-06-07 16:45 ` [Tarantool-patches] [PATCH 1/2] feedback: determine runtime platform info Vladislav Shpilevoy 2020-06-09 23:05 ` Илья Конюхов 2020-06-11 19:32 ` Vladislav Shpilevoy 2020-07-01 0:16 ` Alexander Turenko 2020-07-05 2:14 ` Alexander Turenko 2020-06-05 8:35 ` [Tarantool-patches] [PATCH 2/2] feedback: collect db engines and index features Ilya Konyukhov 2020-06-07 16:45 ` Vladislav Shpilevoy 2020-06-09 23:06 ` Илья Конюхов 2020-06-11 19:32 ` Vladislav Shpilevoy 2020-06-17 8:59 ` Илья Конюхов 2020-06-17 22:53 ` Vladislav Shpilevoy 2020-06-18 15:42 ` Илья Конюхов 2020-06-18 23:02 ` Vladislav Shpilevoy 2020-06-19 14:01 ` Илья Конюхов 2020-06-19 23:49 ` Vladislav Shpilevoy 2020-06-22 8:55 ` Илья Конюхов 2020-07-01 0:15 ` Alexander Turenko 2020-07-03 12:05 ` Илья Конюхов 2020-07-05 2:10 ` Alexander Turenko 2020-06-23 21:23 ` [Tarantool-patches] [PATCH 0/2] Extend feedback module report Vladislav Shpilevoy 2020-07-13 13:47 ` Kirill Yukhin
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=d3de1c532af7b0b4ef107955a8b7f8cf1c363675.1591345474.git.runsfor@gmail.com \ --to=runsfor@gmail.com \ --cc=alexander.turenko@tarantool.org \ --cc=tarantool-patches@dev.tarantool.org \ --cc=v.shpilevoy@tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH 1/2] feedback: determine runtime platform info' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox