[Tarantool-patches] [PATCH rfc v2] memtx: fix out of memory handling for rtree
Konstantin Osipov
kostja.osipov at gmail.com
Mon Dec 9 17:07:28 MSK 2019
* Olga Arkhangelskaia <arkholga at tarantool.org> [19/12/09 16:49]:
> When tarantool tries to recover rtree from a snapshot and memtx_memory value is
> lower than it has been when the snapshot was created, server suffers from
> segmentation fault. This happens because there is no out of memory error
> handling in rtree lib. In another words, we do not check the result of
> malloc operation.
> To prevent this behaviour we simply reserve memory before replace operation for
> rtree. And if there is not enough memory to be reserved - server will fail
> gently with the "Failed to allocate" error message.
It seems you're on track. You don't explain, however, why you had
to add an additional reserve() which is on the side of the main
execution flow (which is box_process1): during snapshot recovery
the secondary keys are built in batches, not using box_process1,
so the check sitting on the main execution track is not invoked.
This begs the question: shouldn't you add the check to
memtx_*_build_next() instead?
--
Konstantin Osipov, Moscow, Russia
More information about the Tarantool-patches
mailing list