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 ответов

31 просмотр

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
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
Карта сайта