<HTML><BODY><div><div>As far as i see, memtx reserves extents using specific pool and<br>mempool_alloc. We will need to implement additional feature to reserve<br>slabs in memtx arena and provide them specifically for truncation<br>needs. However, after that we will encounter the necessity to calculate<br>how much space we need to reserve for truncation tuples. I guess we<br>might want to reserve a truncation buf for each created space and<br>re-reserve it on each truncation, although such logic seems<br>overcomplicated.<br>Furthermore, the problem with space:delete() might happen exactly when<br>we are trying to reserve a slab to guarantee successful statement-level<br>rollback. This can't be fixed using reservation tech.</div><blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;">Четверг, 6 февраля 2020, 19:26 +03:00 от Konstantin Osipov <kostja.osipov@gmail.com>:<br> <div id=""><div class="js-helper js-readmsg-msg"><style type="text/css"></style><div><div id="style_15810063760944548305_BODY">* Ilya Kosarev <<a href="/compose?To=i.kosarev@tarantool.org">i.kosarev@tarantool.org</a>> [20/02/06 19:15]:<div class="mail-quote-collapse">><br>> From memtx_tuple_new() we call smalloc(). In case it is calling<br>> mempool_alloc(), we are passing the pool from memtx->alloc, chosen<br>> depending on it's size. Later this tuple may be deleted. Then smfree()<br>> is called, which uses mempool_find() to acquire the pool we want to<br>> free.<br>> In case we are using some other specific pool, current mempool_find()<br>> won't be able to find it. This means we need to process this case<br>> explicitly and it seems to add noticeable unjustified complexity to the<br>> code.</div><br>Why do you need to use a special pool? Can't you reserve a single<br>slab in memtx_arena, just like memtx reserves extents now, and<br>allow use of this slab for any pool *only* when processing truncate?<br><br>--<br>Konstantin Osipov, Moscow, Russia<br><a href="https://scylladb.com" target="_blank">https://scylladb.com</a></div></div></div></div></blockquote> <div> </div><div data-signature-widget="container"><div data-signature-widget="content"><div>--<br>Ilya Kosarev</div></div></div><div> </div></div></BODY></HTML>