215 похожих чатов

@Korablev77 нужная пояснительная бригада... Разве on_schema_init

не должен ВСЕГДА вызываться до окончания поднятия снапшота (тоесть перед началом), или триггер вызывается несколько раз ?

https://github.com/tarantool/tarantool/commit/3bc4a156e937102f23e2157ef88aa6c007759005#diff-bdd09286e91e43faaa5d3069d0ca967e302b2b32af52d9e3083c3386e98b2860R35

16 ответов

13 просмотров

проблема была в том что индексы например еще не построены

да, но как он бы об этом узнал?

а он не прилег, просто у него теперь в спейсе куча дубликатов

R-omk- Автор вопроса

ну а зачем он туда писал их ... я не пойму в чем проблема то , не хочешь дублей - не пиши их туда

еще раз, есть бизнес-триггер. он разгребает то что приезжает по репликации например и что-то довставляет. его навешивали в on_schema_init чтобы когда репликация поедет он уже был. теперь понятно?

R-omk- Автор вопроса

это я хорошо понимаю , дело в том что on_schema_init срабатывает (во всяком случае раньше) ДО того как данные начнут загружаться из снапшота (тоесть это сильно раньше чем в приницпе до репликации дело доходит), так вот в этот момент уже можно менять схему или таплы... тоесть is_recovery_finished() никак не может быть == TRUE поскольку дело еще даже не дошло до поднятия снапшота с диска и xlog ... а то что я вижу на приведенном скриншоте полностью рушит мое представление о мире

R-omk- Автор вопроса

https://www.tarantool.io/en/doc/latest/reference/reference_lua/box_ctl/#lua-function.box.ctl.on_schema_init

R-omk- Автор вопроса

кажется все это вообще не решает то что описано в 5 пункте https://github.com/tarantool/tarantool/issues/5304#issuecomment-694085235 тут либо вообще нужно запрещать изменять любые данные в спейсах отличных от текущего тапла либо индексы в temporary и local должны к этому времени существовать... is_recovery_finished никак не может помочь в этом вопросе.... —- как я понимаю изначально ктото пытался сделать такую штуку чтобы при поднятии из снапшота создавалось некое представление во временном спейсе, это довольно логично для различных оптимизаций (например материализатор счетчиков ), но индексов в спейсе нет и таплы просто вставлялись как есть вместо агрегации (суммирования в случае со счетчиками), @a_lyapunov, обрати внимание, твой тикет

я подозреваю, что это бага, но бага в тесте

R-omk- Автор вопроса

допустим, тест я вообще плохо понял... я описал пример с материализацией счетчиков , когда они при поднятии снапшота считаются, такое вообще возможно после такого коммита?

Емнип там всё просто. если хочешь считать счетчики в temp спейсе - то делать этого было невозможно ранее и невоможно сейчас. Но сейчас есть еще та самая функция, чтобы проверить - можно уже или еще нет. Если хочешь считать счетчики в lua - пожалуйста. это можно было и можно сейчас. ничего проверять не нужно.

R-omk- Автор вопроса

тоесть выходит что из триггеров все равно нельзя писать в другие спейсы (во время бустрапа), тогда твой пример непонятен, или имеется ввиду что после коммита пример просто будет валиться с ошибкой вместо того чтобы дубли создавать в спейсах... ... тогда и в тесте проверку нужно делать внутри on replace а не в on schema init

да, нельзя. да, ты прав, должна быть внутри on_replace. эта проблема только в тесте, я проверил.

R-omk- Автор вопроса

тогда нужен еще какой нибудь триггер который в момент is_recovery_finished происходит, и до запуска репликации

звучит норм

on_recovery_finished видимо

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Сonst magicTgHTML = (text, entities) => { let processedText = text; let offsetShift = 0; entities.forEach(entity => { const { offset, length, type, url, ...
Андрей
1
Вопрос по WIN32: Насколько я понимаю то все функции win32 привязаны к объектам операционной системы. Например консоль, файл, кисть, окна итд. Следовательно функции win32 упра...
Tommy Vercetti
6
Hello, can I install macOS and run flutter on a virtual machine? Is it possible to print for iphone?
Mazones
11
кто-то пользуется компонентами rx ? как их лучше ставить, через OPM? (lazarus)
Iluha Companets
15
Дороу! У кого-нибудь есть в загашнике проверенная функция экранирования, аналог re.escape в Python? Из доки: » Escape all the characters in pattern except ASCII letters and n...
Daniil Smolyakov
9
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
В смысле более затратная? Общая стоимость владения лошадью меньше, чем автомобиля. В среднем.
Sergej R
10
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Карта сайта