From: Sergey Kaplun via Tarantool-patches <tarantool-patches@dev.tarantool.org> To: Maxim Kokryashkin <max.kokryashkin@gmail.com> Cc: tarantool-patches@dev.tarantool.org Subject: Re: [Tarantool-patches] [PATCH luajit v2 6/6] profilers: print user-friendly errors Date: Tue, 12 Dec 2023 14:51:43 +0300 [thread overview] Message-ID: <ZXhJT45dup15Pzhk@root> (raw) In-Reply-To: <4fb82034fcac21359f79b81cc6643054fc432be3.1701888856.git.m.kokryashkin@tarantool.org> Hi, Maxim! Thanks for the fixes! Please consider my comments below. On 06.12.23, Maxim Kokryashkin wrote: <snipped> > --- > Makefile.original | 2 +- > .../gh-5688-tool-cli-flag.test.lua | 4 +- > ...17-profile-parsers-error-handling.test.lua | 90 +++++++++++++++++++ > tools/CMakeLists.txt | 4 + > tools/memprof.lua | 11 +-- > tools/sysprof.lua | 10 +-- > tools/sysprof/parse.lua | 2 +- > tools/utils/safe_event_reader.lua | 34 +++++++ > tools/utils/symtab.lua | 2 +- > 9 files changed, 144 insertions(+), 15 deletions(-) > create mode 100644 test/tarantool-tests/gh-9217-profile-parsers-error-handling.test.lua > create mode 100644 tools/utils/safe_event_reader.lua I suggest renaming to the <evread.lua> so it will be match <bufread.lua>. > > diff --git a/Makefile.original b/Makefile.original > index 2a56d648..1ef6fbe6 100644 > --- a/Makefile.original > +++ b/Makefile.original <snipped> > diff --git a/test/tarantool-tests/gh-5688-tool-cli-flag.test.lua b/test/tarantool-tests/gh-5688-tool-cli-flag.test.lua > index 75293f11..ec958031 100644 > --- a/test/tarantool-tests/gh-5688-tool-cli-flag.test.lua > +++ b/test/tarantool-tests/gh-5688-tool-cli-flag.test.lua > @@ -42,7 +42,7 @@ local SMOKE_CMD_SET = { > local MEMPROF_CMD_SET = { > { > cmd = MEMPROF_PARSER .. BAD_PATH, > - like = 'fopen, errno: 2', > + like = 'Failed to open', > }, > { > cmd = MEMPROF_PARSER .. TMP_BINFILE_MEMPROF, > @@ -61,7 +61,7 @@ local MEMPROF_CMD_SET = { > local SYSPROF_CMD_SET = { > { > cmd = SYSPROF_PARSER .. BAD_PATH, > - like = 'fopen, errno: 2', > + like = 'Failed to open', > }, > { > cmd = SYSPROF_PARSER .. TMP_BINFILE_SYSPROF, After adding the original error message, these changes appear not to be necessary. We can still add matching with updated error messages to the `fopen()` error too. Like the following: | like = 'Failed to open.*fopen, errno: 2' > diff --git a/test/tarantool-tests/gh-9217-profile-parsers-error-handling.test.lua b/test/tarantool-tests/gh-9217-profile-parsers-error-handling.test.lua > new file mode 100644 > index 00000000..c2e0f0a6 > --- /dev/null > +++ b/test/tarantool-tests/gh-9217-profile-parsers-error-handling.test.lua <snipped> > diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt > index a4adc15b..7f728787 100644 > --- a/tools/CMakeLists.txt > +++ b/tools/CMakeLists.txt <snipped> > diff --git a/tools/memprof.lua b/tools/memprof.lua > index 537cb869..d491b3dc 100644 > --- a/tools/memprof.lua > +++ b/tools/memprof.lua <snipped> > diff --git a/tools/sysprof.lua b/tools/sysprof.lua > index 8449b23f..9c0c23c9 100644 > --- a/tools/sysprof.lua > +++ b/tools/sysprof.lua <snipped> > diff --git a/tools/utils/safe_event_reader.lua b/tools/utils/safe_event_reader.lua > new file mode 100644 > index 00000000..39246a9d > --- /dev/null > +++ b/tools/utils/safe_event_reader.lua > @@ -0,0 +1,34 @@ > +local bufread = require('utils.bufread') > +local symtab = require('utils.symtab') > + > +local function make_error_handler(fmt, inputfile) > + return function(err) > + io.stderr:write(string.format(fmt, inputfile)) > + io.stderr:write(string.format('\nOriginal error: %s', err)) Typo: s/%s/%s\n/ > + os.exit(1, true) > + end For now the output is the following: | 14:09:05 jobs:0 burii@root:~/reviews/luajit/refactor-profilers$ | >>> LUA_PATH="src/?.lua;tools/?.lua;;" src/luajit -ts /tmp/memprof.bin | Failed to parse profile data from /tmp/memprof.bin. | Original error: tools/sysprof/parse.lua:240: Bad LJP format prologue: ljm14:30:50 jobs:0 burii@root:~/reviews/luajit/refactor-profilers$[1] | >>> I suppose the following format is more readable: | Failed to parse profile data from /tmp/memprof.bin: | tools/sysprof/parse.lua:240: Bad LJP format prologue: ljm The ident level is one tab. > +end > + > +local function safe_event_reader(parser, inputfile) > + local _, reader = xpcall( > + bufread.new, > + make_error_handler('Failed to open %s.', inputfile), > + inputfile > + ) > + > + local _, symbols = xpcall( > + symtab.parse, > + make_error_handler('Failed to parse symtab from %s.', inputfile), > + reader > + ) > + > + local _, events = xpcall( > + parser, > + make_error_handler('Failed to parse profile data from %s.', inputfile), > + reader, > + symbols > + ) > + return events, symbols > +end > + > +return safe_event_reader Nit: If we return this function at once, do we need to name it? Feel free to ignore. > diff --git a/tools/utils/symtab.lua b/tools/utils/symtab.lua > index 0c878e7a..c4aefef7 100644 > --- a/tools/utils/symtab.lua > +++ b/tools/utils/symtab.lua <snipped> > -- > 2.43.0 > -- Best regards, Sergey Kaplun
next prev parent reply other threads:[~2023-12-12 11:56 UTC|newest] Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-12-06 18:55 [Tarantool-patches] [PATCH luajit v2 0/6] profilers: refactor parsers Maxim Kokryashkin via Tarantool-patches 2023-12-06 18:55 ` [Tarantool-patches] [PATCH luajit v2 1/6] build: purge sysprof.collapse module Maxim Kokryashkin via Tarantool-patches 2023-12-12 10:18 ` Sergey Kaplun via Tarantool-patches 2023-12-19 12:20 ` Sergey Bronnikov via Tarantool-patches 2023-12-06 18:55 ` [Tarantool-patches] [PATCH luajit v2 2/6] build: fix tool components handling Maxim Kokryashkin via Tarantool-patches 2023-12-12 10:32 ` Sergey Kaplun via Tarantool-patches 2023-12-12 12:53 ` Maxim Kokryashkin via Tarantool-patches 2023-12-12 12:51 ` Sergey Kaplun via Tarantool-patches 2023-12-19 13:56 ` Sergey Bronnikov via Tarantool-patches 2023-12-06 18:55 ` [Tarantool-patches] [PATCH luajit v2 3/6] memprof: refactor `heap_chunk` data structure Maxim Kokryashkin via Tarantool-patches 2023-12-12 10:34 ` Sergey Kaplun via Tarantool-patches 2023-12-19 14:00 ` Sergey Bronnikov via Tarantool-patches 2023-12-06 18:55 ` [Tarantool-patches] [PATCH luajit v2 4/6] memprof: remove unused arguments Maxim Kokryashkin via Tarantool-patches 2023-12-12 10:44 ` Sergey Kaplun via Tarantool-patches 2023-12-19 14:01 ` Sergey Bronnikov via Tarantool-patches 2023-12-06 18:55 ` [Tarantool-patches] [PATCH luajit v2 5/6] memprof: introduce the `--human-readable` option Maxim Kokryashkin via Tarantool-patches 2023-12-12 10:54 ` Sergey Kaplun via Tarantool-patches 2023-12-20 12:24 ` Sergey Bronnikov via Tarantool-patches 2023-12-06 18:55 ` [Tarantool-patches] [PATCH luajit v2 6/6] profilers: print user-friendly errors Maxim Kokryashkin via Tarantool-patches 2023-12-12 11:51 ` Sergey Kaplun via Tarantool-patches [this message] 2023-12-12 12:54 ` Maxim Kokryashkin via Tarantool-patches 2023-12-12 12:54 ` Sergey Kaplun via Tarantool-patches 2023-12-29 12:27 ` Sergey Bronnikov via Tarantool-patches 2024-01-09 13:54 ` Maxim Kokryashkin via Tarantool-patches 2024-01-16 9:48 ` Sergey Bronnikov via Tarantool-patches
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=ZXhJT45dup15Pzhk@root \ --to=tarantool-patches@dev.tarantool.org \ --cc=max.kokryashkin@gmail.com \ --cc=skaplun@tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH luajit v2 6/6] profilers: print user-friendly errors' \ /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