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

Здравствуйте. Есть словарь, созданный вот так: CREATE DICTIONARY EXTERNAL_DICTS.film_weekends ON CLUSTER

data0_cluster
(
nation_id UInt16,
pu_id UInt64,
start_wend_id UInt32,
first_wend_id UInt32,
second_wend_id UInt32
)
PRIMARY KEY nation_id, pu_id
SOURCE(CLICKHOUSE(
host 'localhost'
port 9000
user 'default'
password 'ххх'
db 'cub7'
table 'v$film_weekends'
))
LAYOUT(COMPLEX_KEY_HASHED())
LIFETIME(MIN 500 MAX 700);

При этом в логе постоянно возникает ошибка на всех нодах:
<Error> ExternalDictionariesLoader: Could not update external dictionary 'EXTERNAL_DICTS.film_weekends', leaving the previous version, next update is scheduled at 2022-02-15 11:53:07: Code: 393. DB::Exception: There is no query or query context has expired. (THERE_IS_NO_QUERY)
И в system.dictionaries:
Code: 393. DB::Exception: There is no query or query context has expired. (THERE_IS_NO_QUERY) (version 21.10.6.2 (official build))
Но, если ему сказать system reload dictionary EXTERNAL_DICTS.film_weekends, то ошибки нет, словарь обновляется.
Как с этим бороться?

13 ответов

33 просмотра
Николай-Чернов Автор вопроса

v$film_weekends - это вью.

привет. Удалось разобраться? Столкнулся с аналогичной проблемой

Николай-Чернов Автор вопроса
Sergey Churin
привет. Удалось разобраться? Столкнулся с аналогич...

Ох, как давно это было. Сейчас уже не могу точно вспомнить как решилось... Возможно, просто обновлением КХ... Но до какой версии уже тоже не помню.

Slach [altinity]
у вас source тоже clickhouse?

Да. source clickhouse, table тоже view, внутри самой view запрос с использованием mysql(). И в самом словаре, и в mysql() для подключения используются named_collections. system reload dictionary работает.

Sergey Churin
Да. source clickhouse, table тоже view, внутри сам...

игла в яйце, яйцо в еже, йож в утке ... утка офигевает =) нужен полный стектрейс из логов чтобы порпобовать понять что происходит

Sergey Churin
привет. Удалось разобраться? Столкнулся с аналогич...

Аналогичная проблема была с view в словаре. Отказались от словарей в пользу обычных таблиц

Slach [altinity]
игла в яйце, яйцо в еже, йож в утке ... утка офиге...

Да, проблема возникает, если во view есть обращение к mysql(). Но не сразу. Несколько раз обновляется нормально. https://pastila.nl/?00803883/89e4febe2282bfd4fec906a2a61bd009

Sergey Churin
Да, проблема возникает, если во view есть обращени...

единственное что странное вижу откуда в stacktrace у вас DB::JoinedTables::getLeftTableStorage() если у вас там Join нигде и в помине нет? а только GROUP BY

Slach [altinity]
единственное что странное вижу откуда в stacktrace...

Меня это тоже смутило. Сейчас утром на свежую голову перепроверил. И group by убрал еще. Все тоже самое: https://pastila.nl/?00e2dd31/5268cd8131c81ea2341edd079569b455 Еще момент: если после создания словаря не делать system reload dictionary, то судя по system.dictionaries он сам по себе не обновляется, но и ошибок нет (ждал несколько периодов обновления), то есть как-будто не встает в расписание вообще (или так и должно быть?). Если сделать dictGet() к такому необновленному словарю, то данные возвращаются, и в system.dictionaries появляется время обновления. Сначала без ошибки, и через пару обновлений опять ошибка вылезает. Вот на двух нодах сделал dictGet() в разное время: https://pastila.nl/?10538c84/6922a0cd791cdd6b8d1b3ce4137b2bf5

Sergey Churin
Меня это тоже смутило. Сейчас утром на свежую голо...

делайте воспроизводимый пример на docker-compose и добавляйте issue на github явно какая то бага в комбинации view и engine=MySQL() попробуйте view вообще убрать? просто словарь который SOURCE(CLICKHOUSE()) а таблица Engine=MySQL()

Slach [altinity]
делайте воспроизводимый пример на docker-compose и...

Что не подумал об этом, спасибо. Пока несколько обновлений сработало, как с таблицей Engine=MySQL(), так и с вьюхой, которая смотрит на таблицу с Engine=MySQL()

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта