[tarantool-patches] Re: [PATCH v4 05/20] refactoring: clear privilege managing triggers from exceptions

Sergey Ostanevich sergos at tarantool.org
Fri Oct 18 17:21:24 MSK 2019


Hi!

On 23 Sep 18:56, Ilya Kosarev wrote:
> modify_priv, revoke_priv & on_replace_dd_priv triggers are
> cleared from exceptions. A list of functions: priv_def_check,
> priv_def_create_from_tuple, user_grant_priv, user_reload_privs,
> rebuild_effective_grants, grant_revoke, role_check, role_grant,
> role_revoke, priv_grant, access_check_ddl & txn_alter_trigger_new
> were also refactored to achieve it. Their usages are updated.
> user_find_xc is removed as far as it is not needed anymore.
> 
> Part of #4247
> ---
>  src/box/alter.cc | 334 ++++++++++++++++++++++++++++++++++-------------
>  src/box/user.cc  |  79 +++++++----
>  src/box/user.h   |  20 +--
>  3 files changed, 303 insertions(+), 130 deletions(-)
> 
> diff --git a/src/box/alter.cc b/src/box/alter.cc
> index d4cb9e8d8..85304c47d 100644

[...]

> @@ -708,8 +710,15 @@ public:
>  static struct trigger *
>  txn_alter_trigger_new(trigger_f run, void *data)
>  {
> +	size_t size = sizeof(struct trigger);
>  	struct trigger *trigger = (struct trigger *)
> -		region_calloc_object_xc(&in_txn()->region, struct trigger);
> +		region_aligned_alloc(&in_txn()->region, size,
> +				     alignof(struct trigger));
> +	if (trigger == NULL) {
> +		diag_set(OutOfMemory, size, "region", "new slab");
> +		return NULL;
> +	}
> +	trigger = (struct trigger *)memset(trigger, 0, size);
>  	trigger->run = run;
>  	trigger->data = data;
>  	trigger->destroy = NULL;

After memset of the whole struct there's no need in NULL for the field.
Although, I believe contemporary compiller will expand the memset and remove this.

Otherwise LGTM.

Sergos





More information about the Tarantool-patches mailing list