Skip to content

Add test with ERR_INJs for reproducing dirty reads #26

@ligurio

Description

@ligurio

tarantool/tarantool#5208 (comment)

Fault injection на dirty read попробовать в тестах Jepsen.

  1. Обязательно Debug сборка Тарантул.
  2. В отдельном файбере ставим ERRINJ_WAL_DELAY и за ним запись в спейс - этот файбер повиснет после добавления записи
  3. В исходном файбере читаем то, что вставляли в п.2
  4. В исходном файбере (последовательно) выставляем ERRINJ_WAL_WRITE_DISK и снимаем ERRINJ_WAL_DELAY - получаем откат и п.3 становится грязным чтением

пример (сорри за лапидарность):

box.cfg{} box.schema.create_space('t'):create_index('p')
f1=require('fiber').new(function() box.error.injection.set('ERRINJ_WAL_DELAY', true) box.space.t:insert{3} end)
box.space.t:select{}
---
- - [3]
...
box.error.injection.set('ERRINJ_WAL_WRITE_DISK', true)
box.error.injection.set('ERRINJ_WAL_DELAY', false)
box.space.t:select{}
---
- []
...

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions