Size: a a a

2021 May 14

AL

Aleksandr Lyapunov in Tarantool
Это похоже, да. Только у нас это получается автоматически.
Что касается "в моем случаем вообще без копирования получается" - тут я не уверен. Я полагаю, что go в момент отправки такого запроса внутренне (но в юзер спейсе) положит его в свой буфер. Потому как на какждый запрос дергать сисколл (типа write) может быть дорого, а до сисколла этот буфер может перезатереть другая корутина..
источник

R

R-omk in Tarantool
да , тут происходит одно копирование,   из   мелких буферов запросов в один болльшой сетевой,  который флашится по лимитам
источник

EL

Eugene Leonovich in Tarantool
> остается только в начало такого буфера указать длину сообщения  предварительно в хвост буфера заэнкодить тело,

там же не только длина тела и тело меняется, но еще и sync id в заголовке iproto, или вы без него?
источник

R

R-omk in Tarantool
ведь буферы запросы - они переменной длинны все равно,   и из них копируется ровно то что нужно
источник

AL

Aleksandr Lyapunov in Tarantool
вот вот. наш коннектор по сути делает то же самое
источник

R

R-omk in Tarantool
все так,  но мы просто вшили что syncid  - это uint фиксированного размера - в итоге оно не волияет на общую длинну заголовка,  она всегда фиксирована
источник

R

R-omk in Tarantool
и то же самое, мы зафиксировали uint для длинны тела,  т.е.  мы просто забиваем на возможность  msgp  кодировать меньшие числа  подругому, мы зразу берем по максималке
источник

EL

Eugene Leonovich in Tarantool
угу, емнип, в самом протоколе зафиксированно 5 байт на длину тела, даже если оно пустое
источник

EL

Eugene Leonovich in Tarantool
в заголовке еще есть schema version, как вы с ним поступаете?
источник

EL

Eugene Leonovich in Tarantool
в принципе такие оптимизации можно и к телу применять, например, для DELETE мы знаем что это мапа из 3 элементов, все ключи (и первые два значения) которой можно кодировать в максимальный uint. Наверное, это то, про что говорил @a_lyapunov . @Romkart вы так с телом не делаете?
источник

PP

Piu Piu in Tarantool
> docker exec -t -i profiles console
> Connection is not established
это вот почему не подключится?
источник

PP

Piu Piu in Tarantool
не понимаю магию)
один экземпляр работает, но если мастер-мастер то нет, может кто нибудь подсказать настройки для мастер-мастер докера (не docker-compose)?
источник

NS

Nikita Sapogov in Tarantool
Вопрос, а есть ли возможность подключится при помощи консоли, без выдачи прав execute на universe? Если не указать этих прав, то получается такая картина:
> console = require(‘console’)
> console.connect(‘user:user@localhost:3301’)
>
> Execute access to universe '' is denied for user ‘user’
>
источник

DS

Dmitry Sharonov in Tarantool
нет
источник

AK

Alexey Kuzin in Tarantool
Это вообще странное поле, при боевом функционировании кластера изменение схемы происходит очень редко, поэтому имхо его можно безболезненно игнорировать, тем более что протокол это позволяет
источник

AK

Alexey Kuzin in Tarantool
С другой стороны, правильная работа с изменением схемы довольно сильно усложняет код коннектора
источник

AK

Alexey Kuzin in Tarantool
А также есть "паразитные" изменения схемы, при которых чиселка обновляется, а фактически изменения не происходит
источник

EL

Eugene Leonovich in Tarantool
> имхо его можно безболезненно игнорировать
да, я так и делаю сейчас
источник

NS

Nikita Sapogov in Tarantool
тогда другой вопрос, если я хочу вызвать функцию, которую зарегистровал при помощи box.schema.func.create, и дал права execute на вызов этой функции для пользователя user, какими средставми я могу ее вызывать и получить результат, учитывая что тарантул удаленный
источник

AK

Alexey Kuzin in Tarantool
из тарантула через нетбокс, из любого коннектора который поддерживает вызов функций, например cartridge-java
источник