From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpng2.m.smailru.net (smtpng2.m.smailru.net [94.100.179.3]) (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 DEC6F46970E for ; Mon, 20 Jan 2020 21:13:26 +0300 (MSK) From: Ilya Kosarev Date: Mon, 20 Jan 2020 21:13:18 +0300 Message-Id: Subject: [Tarantool-patches] [PATCH v3 0/2] Safe truncation and deletion List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: tarantool-patches@dev.tarantool.org Cc: v.shpilevoy@tarantool.org 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(). Ilya Kosarev (2): b-tree: return NULL on matras_alloc fail memtx: allow quota overuse for truncation and deletion src/box/box.cc | 5 +++++ src/box/memtx_engine.c | 9 +++++++++ src/box/memtx_engine.h | 3 +++ src/box/memtx_space.c | 13 +++++++++---- src/lib/salad/bps_tree.h | 7 +++++-- src/lib/small | 2 +- 6 files changed, 32 insertions(+), 7 deletions(-) -- 2.17.1