[Tarantool-patches] [PATCH v4 0/4] Safe truncation and deletion
Ilya Kosarev
i.kosarev at tarantool.org
Fri Feb 14 22:39:42 MSK 2020
space:truncate() and space:delete() could fail on memory allocations
when reaching memtx_memory limit. As far as it is quite an ill
behaviour, it is fixed in this patchset through memtx quota strictness
adjustment. Now it can be overused if needed.
Also possible bps_tree_create_leaf NULL dereference issue is fixed.
Branch: https://github.com/tarantool/tarantool/tree/i.kosarev/gh-3807-safe-alloc-on-truncation
Issue: https://github.com/tarantool/tarantool/issues/3807
Changes in v2:
Approach changed completely: now we are not trying to allocate
service tuples in some safe way, but increasing memtx quota so
that space:truncate() and space:delete() won't fail on allocation.
Changes in v3:
Now we are not increasing memtx quota. Instead we just set a flag to
allow quota overuse for space:truncate() and space:delete().
Changes in v4:
improved quota on/off flag style
took into account fail cases for box_upsert in space_truncate
now we are switching the quota off for deletion only in case there is
OutOfMemory error in diag
removed extra checks
added tests
Ilya Kosarev (4):
small: bump small version
b-tree: return NULL on matras_alloc fail
memtx: allow quota overuse for truncation and deletion
test: add tests for truncation and deletion
src/box/box.cc | 27 ++++++-
src/box/memtx_space.c | 33 ++++++--
src/lib/core/errinj.h | 1 +
src/lib/salad/bps_tree.h | 22 +++++-
src/lib/small | 2 +-
test/box/errinj.result | 1 +
test/engine/engine.cfg | 6 ++
test/engine/low_memory.lua | 8 ++
test/engine/stress_delete.result | 111 +++++++++++++++++++++++++++
test/engine/stress_delete.test.lua | 55 +++++++++++++
test/engine/stress_truncate.result | 103 +++++++++++++++++++++++++
test/engine/stress_truncate.test.lua | 52 +++++++++++++
12 files changed, 408 insertions(+), 13 deletions(-)
create mode 100644 test/engine/low_memory.lua
create mode 100644 test/engine/stress_delete.result
create mode 100644 test/engine/stress_delete.test.lua
create mode 100644 test/engine/stress_truncate.result
create mode 100644 test/engine/stress_truncate.test.lua
--
2.17.1
More information about the Tarantool-patches
mailing list