Size: a a a

2021 May 05

EB

Evgenii Blokhin in Tarantool
При этом на роутере ошибок нет:
localhost:3301> vshard.router.info()
---
- replicasets:
   67646361-faa3-4110-a33f-c266672a2a2f:
     replica: &0
       network_timeout: 0.5
       status: available
       uri: sharding@
       uuid: d56a822e-a801-4ad5-be10-c7ecc13f6702
     bucket:
       available_rw: 90000
     uuid: 67646361-faa3-4110-a33f-c266672a2a2f
     master: *0
   3cffd4d2-1f64-420b-a610-330c7fc482cf:
     replica: &1
       network_timeout: 0.5
       status: available
       uri: sharding@
       uuid: 0783419b-c7db-45d7-a43b-e25a1722244d
     bucket:
       available_rw: 90000
     uuid: 3cffd4d2-1f64-420b-a610-330c7fc482cf
     master: *1
 bucket:
   unreachable: 0
   available_ro: 0
   unknown: 0
   available_rw: 180000
 status: 0
 alerts: []
...
источник

SD

Stanislav Dubrovsky in Tarantool
после того как я в свою схему на луа добавил поле bucket_id и сделал на нем индекс — заработало
источник

V

Vladimir in Tarantool
Понял, явно пропишу все эти шаги в мануал по spring-data. Мы сейчас как раз готовим quickstart.
источник

SF

Sergey Fedorov in Tarantool
Поскажите, как в Queue отключить сессии для тасков и не потерять обновления? Я понимаю, что это звучит дико и неразумно, но у меня, похоже, нет более подходящего выхода. Разве только отказаться от Queue и надстроить над спейсами его  некое подобие.

Контекст такой: очередь используется не только для классических тасков, а для обмена информацией между разными аппликухами. Это данные для обработки, команды для управления удаленными микросервисами, статусные сообщения (живое/залипло), сообщения проверки синхронизации данных между нодами и так далее. Прекрасно работает, нет причин менять кроме проблем в саппорте.

Эти аппликухи из разных миров: где-то NodeJS, отдельные сервисы на Crystal, приложение на Rails и так далее.

Боль в том, что этот зоопарк общается с TNT по бинарному протоколу и при каждом обновлении языка или мажорном обновлении TNT уходит много времени на адаптацию драйверов (когда-то давно я совершил ошибку: устал ждать апдейтов и форкнул их в закрытую репку, а потом перекроил под себя) и просто утомительно саппортить это.

Поскольку RPS в этих случае не особенно критично, то светом в конце тоннеля мне представляется переход на HTTP с унифицированным API. Я начал писать прослойку поверх Queue, но влетел в проблему с "Task was not taken", решил ее костылем (сохраняю id сессии файбера и при работе с таском применяю: https://github.com/tnt-qube/qube/blob/d73a17232febe4e832032b5e34997a280c7d42e1/lib/shipper.lua#L65, но в дальнейшем грядет еще куча коннектов от других консьюмеров, причем некоторые из коннектов не персистентные,  как управлять ими в массе я пока совершенно не понимаю и отключение сессий видится мне неплохим вариантом решения проблемы, но как я не пытался организовать это из внешнего модуля в Lua — не получается: то ли руки кривые, то ли опыта в Lua мало, а вставать на кривую дорожку с собственным форком не хочется.
источник

MA

Mons Anderson in Tarantool
Недавно в queue вкатили изменение, которое позволяет перенести привязку тасков к сессиям на внешние идентификаторы.
источник

SF

Sergey Fedorov in Tarantool
Уже в мастере?
источник

MA

Mons Anderson in Tarantool
AFAIR да
источник

SF

Sergey Fedorov in Tarantool
Если я правильно понял, то на on_connect применяем одну и ту же сессию и тогда не будет разброса, но как быть в случае файберов? (я могу наврать, попозже проверю), но они вроде бы не триггерят on_connection... Хотя можно просто продублировать эту логику.
источник

SF

Sergey Fedorov in Tarantool
Спасибо!
источник

MA

Mons Anderson in Tarantool
Вливалось вот этим RP'ом
https://github.com/tarantool/queue/pull/139
там можно посмотреть детали
источник

SF

Sergey Fedorov in Tarantool
Супер! То, что нужно 👍
источник
2021 May 06

A

Amigo in Tarantool
Добрый день!
Вопрос по поводу sql, если вытаскивать sql протоколом то тип поля integer возвращается совсем не корректно, при этом если вытащить обычным binary протоколом то все норм, я что то не так делаю ?

пример:
format = {
       {name = 'id', type = 'integer'},
}

если делать по select:{index} то все норм,
если через sql 'select * where id = 5435345', то в поле id возвращается отрицательное число как правило между -30  и -16

при этом что странно в условии where он понимает и вытаскивает где id = 5435345, то есть корректно

клиенты на tarantool/node-tarantool-driver, и  tarantool-php/client
источник

EL

Eugene Leonovich in Tarantool
в каком клиенте возвращается отрицательное число и какая у вас ос?
источник

A

Amigo in Tarantool
На php и nodejs тоже самое, linux
источник

С

Скерис in Tarantool
Добрый день. такой вопрос - пытаюсь написать собственный модуль по документации https://www.tarantool.io/ru/doc/latest/book/app_server/creating_app/

сделал файл mymodule.lua.  положил в package.path. проверил наличие по package.loaded['mymodule'] и require('mymodule') - модуль подгрузился.

но ниже применяю mymodule.myfun()  и ничего не происходит. и если делаю local mm = require('mymodule') print(mm) выводит null.
источник

С

Скерис in Tarantool
в чём может быть проблема?
источник

BG

Bit Gorbovsky in Tarantool
А можете привести текст модуля? Хотя бы в сокращённом варианте
источник

С

Скерис in Tarantool
local exports = {}
exports.myfun = function(input_string)
  print('Hello', input_string)
end
return exports
источник

С

Скерис in Tarantool
прямиком из документации
источник

BG

Bit Gorbovsky in Tarantool
А
источник