From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp32.i.mail.ru (smtp32.i.mail.ru [94.100.177.92]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 759104696C3 for ; Thu, 2 Apr 2020 17:15:46 +0300 (MSK) Date: Thu, 2 Apr 2020 14:15:45 +0000 From: Nikita Pettik Message-ID: <20200402141545.GB30923@tarantool.org> References: <2d0316df-dda7-6438-d8cb-c7fd6290d830@tarantool.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <2d0316df-dda7-6438-d8cb-c7fd6290d830@tarantool.org> Subject: Re: [Tarantool-patches] [PATCH] box: always promote error created via box.error() to diag List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Vladislav Shpilevoy Cc: tarantool-patches@dev.tarantool.org On 02 Apr 02:37, Vladislav Shpilevoy wrote: > Thanks for the patch! > > On 01/04/2020 17:52, Nikita Pettik wrote: > > Note that it is vital that box.error() now promotes error to diag, since > > otherwise user is unable to set to diag custom error, which in turn is > > Why unable? I thought we have box.error.set(). You can always do > > box.error.set(error_object) > box.error() Lol. It was me who introduced box.error.set() a week ago and I've already forgotten about it. *Facepalm* Dropped corresponding paragraph from commit message. Also @ChangeLog (2.4): * box.error() now can accept error object as an argument. Behaviour is the same as for 'code + reason' pair of arguments: error is set to Tarantool's diagnostic area and is thrown. > This is equivalent of > > box.error(error_object) > > which you are doing in this patch. > > But I am not against this patch. It is a nice sugar, when you need to > both set + throw. It is LGTM except the commit message due to comments > above. > > > Closes #4829 > > > > @TarantoolBot document > > Title: always promote error created via box.error() to diag > > > > box.error() is able to accept two types of argument: either pair of code > > + reason (box.error{code = 555, reason = 'Arbitrary message'}) or error > > object (box.error(err)). In the first case error is promoted to > > diagnostic area, meanwhile in the latter - it is not: > > ``` > > e1 = box.error.new({code = 111, reason = "cause"}) > > box.error({code = 111, reason = "err"}) > > - error: err > > box.error.last() > > - err > > box.error(e1) > > - error: cause > > box.error.last() > > - err > > ``` > > From now box.error(e1) sets error to diagnostic area as well: > > ``` > > box.error(e1) > > - error: cause > > box.error.last() > > - cause > > ``` > > ---