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

Не получается выполнить SQL запрос на всех шардах с целью

сделать выборку данных
Запущен Tarantool Cartridge. Используются роли 'cartridge.roles.crud-router' и 'cartridge.roles.crud-storage'
Пример с выполнением запроса на всех шардах взят отсюда: https://www.tarantool.io/ru/doc/latest/reference/reference_rock/vshard/vshard_api/#lua-function.vshard.router.routeall

На роли, унаследованной от 'crud-router' добавляю такое тело функции для выполнения SQL запроса
---
local shards, error = vshard_router.routeall()

log.warn('query: ' .. query)
for id, replicaset in pairs(shards) do
log.warn('calling: ' .. id)
local set_result, error = replicaset:call('box.execute', {query})
log.warn('called ' .. id)

if (result == nil) then
result = set_result
else
utils.table.add(result.rows, set_result.rows)
end
end
---

Вот что выводится в логе после вызова данной функции:
---
cartridge_002.router | 2022-02-02 19:02:53.388 [3796] main/195/http/10.0.2.2:59501 router.lua:123 W> query:
cartridge_002.router | SELECT "spaceA"."name",
cartridge_002.router | "spaceB"."name"
cartridge_002.router | FROM "spaceA" INNER JOIN "spaceB" ON "spaceA"."spaceB_id" = "spaceB"."id"
cartridge_002.router | LIMIT 10
cartridge_002.router | 2022-02-02 19:02:53.388 [3796] main/195/http/10.0.2.2:59501 router.lua:125 W> calling: 152ad4e8-e9d2-45c4-aea1-80877e88f457
cartridge_002.router | 2022-02-02 19:02:53.889 [3796] main/195/http/10.0.2.2:59501 replicaset.lua:362 E> Exception during calling 'box.execute' on 'localhost:3302(admin@localhost:3302)': Timeout exceeded
cartridge_002.router | 2022-02-02 19:02:53.890 [3796] main/195/http/10.0.2.2:59501 router.lua:127 W> called 152ad4e8-e9d2-45c4-aea1-80877e88f457
cartridge_002.s2-master | 2022-02-02 19:02:56.088 [3812] main/104/membership.main I> Could not reach node: localhost:3302 - suspect
cartridge_002.router | 2022-02-02 19:02:56.636 [3796] main/104/membership.main I> Could not reach node: localhost:3302 - suspect
cartridge_002.s1-replica | 2022-02-02 19:02:56.733 [3805] relay/127.0.0.1:43546/101/main coio.cc:340 !> SystemError timed out: Connection timed out
cartridge_002.s1-replica | 2022-02-02 19:02:56.733 [3805] relay/127.0.0.1:43546/101/main C> exiting the relay loop
cartridge_002.s1-replica | 2022-02-02 19:02:57.066 [3805] main/104/membership.main I> Could not reach node: localhost:3302 - suspect
cartridge_002.s1-master | 2022-02-02 19:02:57.177 [3799] main/134/applier/admin@localhost:3303 I> can't read row
cartridge_002.s1-master | 2022-02-02 19:02:57.178 [3799] main/134/applier/admin@localhost:3303 coio.cc:340 !> SystemError timed out: Connection timed out
cartridge_002.s1-master | 2022-02-02 19:02:57.178 [3799] main/134/applier/admin@localhost:3303 I> will retry every 1.00 second
cartridge_002.s1-master | 2022-02-02 19:02:57.181 [3799] main/106/membership.handle I> Refuting the rumor that we are suspect
---

с первого же опрошенного репликасета (s1-master) сразу вылетает "Exception during calling 'box.execute': Timeout exceeded" и затем остальные образцы не могут до него достучатся. Так происходит каждый раз при вызове данной функции.

Если это решение в корне не правильное, возникает вопрос: Какой стандартный метод существует для вызова SQL запросов на Cartridge кластере?

1 ответов

26 просмотров

а вручную на ноде SQL запрос за сколько выполняется? Если руками подключиться и там запустить?

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта