тарантула, настроенные в режиме мастер-мастер.
replication_connect_quorum = 0
2) новые объекты с некоторым object-id могут создаваться через любой из мастеров
3) на каждой инстанции запущен fiber, который удаляет старые объекты исходя из времени их последнего обновления
Кейс:
1) Связь между инстанциями нарушилась и репликация временно приостановилась
2) Объекты устарели одновременно на обоих инстанциях и fiber их удалил одновременно
3) В момент сразу после удаления на одну из инстанций пришел запрос - о объект с тем-же object-id был создан заново
Вопрос:
Что будет после восстановления связности?
1) Конфликт (как разрешать? ввести поле - таймстамп - и последнее событие должно перевесить?)
2) Объект будет создан на обоих инстанциях
3) Объект будет удален на обоих инстанциях
Задача сделать поведение 2 (то есть объект должен быть создан на обоих инстанциях) и не произошло такого, чтобы объект создался на одной из инстанций, а потом по репликации заново удалился (после восстановления связности)
Привет! Будет (4): объект будет создан на одной из нод, и удалён после создания на другой. Разрешать каким-нибудь before_replace триггером. Например, по таймстампу, да. А в момент удаления объекта оставлять на его месте tombstone с таймстампом. Со временем старые tombstone можно удалять, чтобы они не копились вечно для удалённых объектов
Обсуждают сегодня