Tarantool development patches archive
 help / color / mirror / Atom feed
From: Alexander Turenko <alexander.turenko@tarantool.org>
To: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
Cc: tarantool-patches@dev.tarantool.org
Subject: Re: [Tarantool-patches] [PATCH v2 1/5] error: Add a Lua backtrace to error
Date: Thu, 16 Apr 2020 04:11:18 +0300	[thread overview]
Message-ID: <20200416011118.3jbhcdtqpqr7lwit@tkn_work_nb> (raw)
In-Reply-To: <831ae724-0d73-916b-0fad-dd52ce967664@tarantool.org>

> >> 2) What to do with stacked errors? Currently only the first
> >> error in the stack gets a traceback, because luaT_pusherror() is
> >> called only on the top error in the stack. Consider this test:
> >>
> >>      box.cfg{}
> >>      lua_code = [[function(tuple)
> >>                      local json = require('json')
> >>                      return json.encode(tuple)
> >>                   end]]
> >>      box.schema.func.create('runtimeerror', {body = lua_code, is_deterministic = true, is_sandboxed = true})
> >>      s = box.schema.space.create('withdata')
> >>      pk = s:create_index('pk')
> >>      idx = s:create_index('idx', {func = box.func.runtimeerror.id, parts = {{1, 'string'}}})
> >>
> >>      function test_func() return pcall(s.insert, s, {1}) end
> >>      box.error.cfg{traceback_enable = true}
> >>      ok, err = test_func()
> >>
> >>
> >>      tarantool> err:unpack()
> >>      ---
> >>      - traceback: "stack traceback:\n\t[C]: at 0x010014d1b0\n\t[C]: in function 'test_func'\n\t[string
> >>          \"ok, err = test_func()\"]:1: in main chunk\n\t[C]: in function 'pcall'\n\tbuiltin/box/console.lua:382:
> >>          in function 'eval'\n\tbuiltin/box/console.lua:676: in function 'repl'\n\tbuiltin/box/console.lua:725:
> >>          in function <builtin/box/console.lua:713>"
> >>      ... <snipped>

BTW, can we call :split('\n') for .traceback field in at least
__serialize? The cited output is hard to read. Alternative: place two
newlines in row somewhere to force yaml serializer to use multiline
string format.

> >>
> >>      tarantool> err.prev:unpack()
> >>      ---
> >>      - type: LuajitError
> >>        message: '[string "return function(tuple)..."]:2: attempt to call global ''require''
> >>          (a nil value)'
> >>      ... <snipped>
> >>
> >> The second error does not have a traceback at all.
> > (I added Turenko to To)
> > I have two variants:
> > - Leave as is and to document such behavior
> > - Add the same traceback to all errors in the stack
> > Alexander what do you think?

The first approach look inconsistent. A user may want to get a cause of
a topmost error and pass it somewhere. The function, where the error
will be processed (say, serialized), don't know whether a traceback
should be grabbed from some other error object (and how to find it).

> 
> There is a third option - leave traceback out of this patchset for
> a next release. Because they are clearly underdesigned. But on the
> other hand it is not something critical. After all, we just can say,
> that a traceback can be present, or can be not, and its content is
> just a string, which can't be assumed to have any special format.
> 
> That would allow us to add/remove them and change their format anytime.

Are there other problems with traceback?

BTW, how traceback is linked with .trace?

Generally I'm for decomposing problems. Leonid, you may just keep the
feature at top patches of your series. If it'll look ready, it will
land. Otherwise, only first part will land.

I think that it is okay to implement marshalling over net.box first.

WBR, Alexander Turenko.

  reply	other threads:[~2020-04-16  1:11 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-10  8:10 [Tarantool-patches] [PATCH v2 0/5] Extending error functionality Leonid Vasiliev
2020-04-10  8:10 ` [Tarantool-patches] [PATCH v2 1/5] error: Add a Lua backtrace to error Leonid Vasiliev
2020-04-14  1:11   ` Vladislav Shpilevoy
2020-04-15  9:25     ` lvasiliev
2020-04-16  0:00       ` Vladislav Shpilevoy
2020-04-16  1:11         ` Alexander Turenko [this message]
2020-04-16  8:58           ` lvasiliev
2020-04-16  9:30             ` Alexander Turenko
2020-04-16 12:27               ` lvasiliev
2020-04-16 12:45                 ` Alexander Turenko
2020-04-16 17:48                   ` lvasiliev
2020-04-16  8:40         ` lvasiliev
2020-04-16  9:04           ` lvasiliev
2020-04-10  8:10 ` [Tarantool-patches] [PATCH v2 2/5] error: Add the custom error type Leonid Vasiliev
2020-04-14  1:11   ` Vladislav Shpilevoy
2020-04-15  9:25     ` lvasiliev
2020-04-16  0:02       ` Vladislav Shpilevoy
2020-04-16  9:18         ` lvasiliev
2020-04-16 21:03           ` Vladislav Shpilevoy
2020-04-10  8:10 ` [Tarantool-patches] [PATCH v2 3/5] error: Increase the number of fields transmitted through IPROTO Leonid Vasiliev
2020-04-14  1:12   ` Vladislav Shpilevoy
2020-04-15  9:25     ` lvasiliev
2020-04-16  0:02       ` Vladislav Shpilevoy
2020-04-10  8:10 ` [Tarantool-patches] [PATCH v2 4/5] iproto: Add session settings for IPROTO Leonid Vasiliev
2020-04-14  1:12   ` Vladislav Shpilevoy
2020-04-15  9:26     ` lvasiliev
2020-04-16  0:06       ` Vladislav Shpilevoy
2020-04-16  9:36         ` lvasiliev
2020-04-16 21:04           ` Vladislav Shpilevoy
2020-04-10  8:10 ` [Tarantool-patches] [PATCH v2 5/5] iproto: Update error MsgPack encoding Leonid Vasiliev
2020-04-14  1:12   ` Vladislav Shpilevoy
2020-04-15  9:25     ` lvasiliev
2020-04-16  0:11       ` Vladislav Shpilevoy
2020-04-16 10:04         ` lvasiliev
2020-04-16 21:06           ` Vladislav Shpilevoy
2020-04-14  1:10 ` [Tarantool-patches] [PATCH v2 0/5] Extending error functionality Vladislav Shpilevoy
2020-04-15  9:48   ` lvasiliev

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=20200416011118.3jbhcdtqpqr7lwit@tkn_work_nb \
    --to=alexander.turenko@tarantool.org \
    --cc=tarantool-patches@dev.tarantool.org \
    --cc=v.shpilevoy@tarantool.org \
    --subject='Re: [Tarantool-patches] [PATCH v2 1/5] error: Add a Lua backtrace to error' \
    /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