From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpng1.m.smailru.net (smtpng1.m.smailru.net [94.100.181.251]) (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 927B74696C3 for ; Sat, 18 Apr 2020 23:40:00 +0300 (MSK) References: From: Vladislav Shpilevoy Message-ID: Date: Sat, 18 Apr 2020 22:39:59 +0200 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [Tarantool-patches] [PATCH V5 5/6] error: update constructors of some errors List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Leonid Vasiliev , alexander.turenko@tarantool.org Cc: tarantool-patches@dev.tarantool.org Thanks for the patch! On 18/04/2020 17:29, Leonid Vasiliev wrote: > We want to have a transparent marshalling through net.box > for errors. To do this, we need to recreate the error > on the client side with the same parameters as on the server. > For convenience, we update AccessDeniedError constructor > which has points to static strings and add the XlogGapError I force pushed 'points' -> 'pointers'. > constructor that does not require vclock. > > Needed for #4398 > --- > src/box/error.cc | 25 ++++++++++++++----------- > src/box/error.h | 11 ++++++++--- > 2 files changed, 22 insertions(+), 14 deletions(-) > > diff --git a/src/box/error.cc b/src/box/error.cc > index 277727d..0d2ba83 100644 > --- a/src/box/error.cc > +++ b/src/box/error.cc > @@ -283,23 +290,19 @@ AccessDeniedError::AccessDeniedError(const char *file, unsigned int line, > const char *access_type, > const char *object_type, > const char *object_name, > - const char *user_name) > + const char *user_name, > + bool run_trigers) > :ClientError(&type_AccessDeniedError, file, line, ER_ACCESS_DENIED) > { > error_format_msg(this, tnt_errcode_desc(m_errcode), > access_type, object_type, object_name, user_name); > > struct on_access_denied_ctx ctx = {access_type, object_type, object_name}; > - trigger_run(&on_access_denied, (void *) &ctx); > - /* > - * We want to use ctx parameters as error parameters > - * later, so we have to alloc space for it. > - * As m_access_type and m_object_type are constant > - * literals they are statically allocated. We must copy > - * only m_object_name. > - */ > - m_object_type = object_type; > - m_access_type = access_type; > + /* Don't run the triggers when create after marshaling through net */ I force pushed the following diff: ==================== diff --git a/src/box/error.cc b/src/box/error.cc index 0d2ba83b7..c3c2af3ab 100644 --- a/src/box/error.cc +++ b/src/box/error.cc @@ -298,7 +298,10 @@ AccessDeniedError::AccessDeniedError(const char *file, unsigned int line, access_type, object_type, object_name, user_name); struct on_access_denied_ctx ctx = {access_type, object_type, object_name}; - /* Don't run the triggers when create after marshaling through net */ + /* + * Don't run the triggers when create after marshaling + * through network. + */ if (run_trigers) trigger_run(&on_access_denied, (void *) &ctx); m_object_type = strdup(object_type); ====================