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 3B87C46970E for ; Tue, 14 Jan 2020 00:31:27 +0300 (MSK) From: Ilya Kosarev Date: Tue, 14 Jan 2020 00:31:21 +0300 Message-Id: Subject: [Tarantool-patches] [PATCH v2 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 enlargement. 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. Ilya Kosarev (2): b-tree: return NULL on matras_alloc fail memtx: increase the memory quota if needed to truncate or delete src/box/blackhole.c | 1 + src/box/box.cc | 36 +++++++++++++++++++++++++++++++++++- src/box/engine.c | 11 +++++++++++ src/box/engine.h | 9 +++++++++ src/box/memtx_engine.c | 20 ++++++++++++++++++++ src/box/memtx_engine.h | 4 ++++ src/box/service_engine.c | 1 + src/box/sysview.c | 1 + src/box/vinyl.c | 1 + src/lib/salad/bps_tree.h | 7 +++++-- 10 files changed, 88 insertions(+), 3 deletions(-) -- 2.17.1