Size: a a a

2021 April 08

R

R-omk in Tarantool
" там бесконечный цикл"
источник

ST

Satbek Turganbayev in Tarantool
Файбер захватывает транзакционныц тред. Делайте fiber.yielf периодически, чтобы давать работать другим файберам
источник

АГ

Алексей Гевондян... in Tarantool
мм. понял в какую сторону копать, большое спасибо)
источник

АГ

Алексей Гевондян... in Tarantool
вообще по идее нужно что-то типа крона. как это по-грамотному сделать?
источник

YD

Yaroslav Dynnikov in Tarantool
Трясите @arturbrsg
источник

R

R-omk in Tarantool
прочитали 1000 товаров - поспали пару мс
источник

АГ

Алексей Гевондян... in Tarantool
а fiber.yield() вызвать годится вместо слипа?
источник

R

R-omk in Tarantool
лучше использвоать sleep(0)  и крутить настройку при необходимости
источник

АГ

Алексей Гевондян... in Tarantool
ок, понял идею, спасибо) в тарантуле многопоточности же нет, верно?
источник

NK

Nick Karlov in Tarantool
А ещё может быть вариант обновлять агрегаты сразу при вставке/обновлении товаров в одной транзакции
источник

NK

Nick Karlov in Tarantool
Есть кооперативная многозадачность в одном треде
источник

АГ

Алексей Гевондян... in Tarantool
если бы это было возможно, так бы и сделали, скорее всего) там сильно много всего придется переписывать, пока нереально.
источник

R

R-omk in Tarantool
т.е. сейчас получается что может быть такое что одному узлу уже прилетел apply  is master true    а второму еще не успел  is master - false  
так что ли?
источник

MA

Mons Anderson in Tarantool
для обхода ещё можете воспользоваться moonwalker
там внутрь всё уже зашито
источник

АГ

Алексей Гевондян... in Tarantool
ок, посмотрю что это, спасибо
источник

MA

Mons Anderson in Tarantool
http://github.com/tarantool/moonwalker
создавался во времена, когда итераторы ещё не были стабильными, но вполне неплохо себя зарекомендовал как инструмен для обхода спейсов (с целью массово обновить или что-то посчитать)
источник

АГ

Алексей Гевондян... in Tarantool
только у нас надо несколько спейсов обойти, там не так тривиально все, ну суть я понял - 1 поток - любой файбер, любая процедура его блокирует. надо обрабатывать данные частями, и файбер слипить, чтобы в это время другое успевало прожеваться.
источник

MA

Mons Anderson in Tarantool
Альтернативно, можно скопировать себе в проект вот этот кусочек кода (что-то мы никак его не дотащим в luafun) https://github.com/moonlibs/kit/blob/master/kit/1/6%2B.lua#L2-L19

это даст на любом итераторе :pairs() дополнительный метод :yield(N), которы будет раз в N итераций делать fiber.yield
источник

YD

Yaroslav Dynnikov in Tarantool
Консистентный промоут гарантирует, что is_master true не прилетит раньше времени. По крайней мере внутри одного репликасета. Между репликасетами такой слой синхронизации не натянут. Про это и тикет который я упоминал
источник

R

R-omk in Tarantool
я про один репликасет говорю
источник