From e66b6eb2f683b07fb1f5e0a933205290e017085f Mon Sep 17 00:00:00 2001 From: Georgy Kirichenko <georgy@tarantool.org> Date: Fri, 7 Jun 2019 15:29:09 +0300 Subject: [PATCH] ddl: place alter structures onto a txn memory region As alter schema triggers lifecycle is bound with a transaction so corresponding structures should be placed onto a txn memory region instead of a fiber gc space. Prerequisites: #1254 --- src/box/alter.cc | 8 ++++---- src/box/vinyl.c | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/box/alter.cc b/src/box/alter.cc index 3d44362bad..718d002934 100644 --- a/src/box/alter.cc +++ b/src/box/alter.cc @@ -658,7 +658,7 @@ class AlterSpaceOp { void *operator new(size_t size) { - return region_aligned_calloc_xc(&fiber()->gc, size, + return region_aligned_calloc_xc(&in_txn()->region, size, alignof(uint64_t)); } void operator delete(void * /* ptr */) {} @@ -672,7 +672,7 @@ static struct trigger * txn_alter_trigger_new(trigger_f run, void *data) { struct trigger *trigger = (struct trigger *) - region_calloc_object_xc(&fiber()->gc, struct trigger); + region_calloc_object_xc(&in_txn()->region, struct trigger); trigger->run = run; trigger->data = data; trigger->destroy = NULL; @@ -708,7 +708,7 @@ static struct alter_space * alter_space_new(struct space *old_space) { struct alter_space *alter = - region_calloc_object_xc(&fiber()->gc, struct alter_space); + region_calloc_object_xc(&in_txn()->region, struct alter_space); rlist_create(&alter->ops); alter->old_space = old_space; alter->space_def = space_def_dup_xc(alter->old_space->def); @@ -3358,7 +3358,7 @@ on_replace_dd_sequence(struct trigger * /* trigger */, void *event) struct tuple *new_tuple = stmt->new_tuple; struct alter_sequence *alter = - region_calloc_object_xc(&fiber()->gc, struct alter_sequence); + region_calloc_object_xc(&txn->region, struct alter_sequence); struct sequence_def *new_def = NULL; auto def_guard = make_scoped_guard([=] { free(new_def); }); diff --git a/src/box/vinyl.c b/src/box/vinyl.c index 0c80496d9d..ecf1975230 100644 --- a/src/box/vinyl.c +++ b/src/box/vinyl.c @@ -4624,7 +4624,7 @@ vy_deferred_delete_on_replace(struct trigger *trigger, void *event) * which will propagate the WAL row LSN to * the LSM tree. */ - struct trigger *on_commit = region_alloc(&fiber()->gc, + struct trigger *on_commit = region_alloc(&txn->region, sizeof(*on_commit)); if (on_commit == NULL) { diag_set(OutOfMemory, sizeof(*on_commit), @@ -4632,7 +4632,7 @@ vy_deferred_delete_on_replace(struct trigger *trigger, void *event) rc = -1; break; } - struct trigger *on_rollback = region_alloc(&fiber()->gc, + struct trigger *on_rollback = region_alloc(&txn->region, sizeof(*on_commit)); if (on_rollback == NULL) { diag_set(OutOfMemory, sizeof(*on_commit), -- GitLab