[patches] [PATCH 4/4] vinyl: on space alter update key definitions in indexes

Vladimir Davydov vdavydov.dev at gmail.com
Mon Mar 12 16:03:16 MSK 2018


On Mon, Mar 12, 2018 at 12:53:36AM +0300, Vladislav Shpilevoy wrote:
> Vinyl alter can change comparators, for example, by removal of a
> space format and making some fields optional. This alter is
> allowed on a non-empty space even, because optionality of a
> field is not persisted. But index key definitions can not be
> updated in place, since they are used in multiple threads (vinyl
> workers). So it is necessary to get new key definitions from a
> new index definition, and leave old ones to be deleted by
> existing worker tasks, when they will be finished.

I don't think that workers alone are worth introducing key_def reference
counting - we can just copy key_def for them, it is a slow path after
all.

Anyway, this isn't enough. Apart from worker threads, there are also
reader fibers, which access key_def too. Referencing key_def for them is
likely to turn the code into even a bigger mess than it is with this
patch...

IMO we should simply disable this feature for vinyl for now - I don't
think anybody will give a damn.

> 
> Index is not the only place storing key definition pointers:
> there are also mems, ranges, cache - all these structures must be
> updated too.
> 
> Closes #3229



More information about the Tarantool-patches mailing list