Skip to content

[3pt] feedback: Решение конфликтов репликации | Tarantool #2478

@TarantoolBot

Description

@TarantoolBot

Product: Tarantool
Root document: https://www.tarantool.io/en/doc/latest/book/replication/repl_problem_solving/#replacing-the-same-primary-key
SME: @ alyapunov

Details

Feedback from a user:

<…>ы получить доступ к создаваемому спейсу. В результате код будет |выглядеть следующим образом|:

https://www.tarantool.io/en/doc/latest/book/replication/repl_problem_solving/#replacing-the-same-primary-key

Добрый день, в документации приведен пример установки треггера для резолва master-master. Если я не ошибаюсь, тригер в таком случае будет выпонятся для загружаемых из WAL записей.
Я отслеживал box.info.status чтобы этого избежать.

local function loading_before_replace(old, new)
    if box.info.status == "loading" then
        return
    end
    box.space.my_space_name:before_replace(before_replace, loading_before_replace)
    return before_replace(old,new)
end

Возможно будет полезно кому-то.


** Questions to and comments from @ alyapunov **

  • Триггер выполняется для загружаемых из WAL записей?
    Это зависит от того, что в "my_trigger", могу предположить.
    Когда загружается WAL (речь ведь идет про recovery, когда Тарантул перезапущен), memtx находится в частично рабочем состоянии. Это неизбежно - без полностью загруженных данных нет полной картины состояния БД. В частности все selectы для определенности возвращают пустоту. Судя по всем такой хитрый триггер просто не будет работать как ожидается.
    Собственно, это всегда надо иметь ввиду при использовании on_schema_init.

  • Почему выполнять триггер для записей из WAL может быть плохо?

Это скорее всего просто бессмысленно - если данные есть в WAL, то триггер по ним уже отработал в тот момент, когда эти данные попадали в WAL. Второй раз не нужно.

ToDo

Metadata

Metadata

Assignees

No one assigned

    Labels

    add details[nature] More details needed, some info missing. Documentation is incomplete.replication[area] Related to Replication

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions