ClickHouse / clickhouse-odbc

ODBC driver for ClickHouse
https://clickhouse.tech
Apache License 2.0
239 stars 84 forks source link

Tableau + ODBC: Session is locked by a concurrent client. #423

Open sablastik opened 1 year ago

sablastik commented 1 year ago

При работе в режиме Live-подключения (запросы к КХ генерит сам табло сервер) иногда сталкиваемся с ошибкой: Code: 373. DB::Exception: Session is locked by a concurrent client. (SESSION_IS_LOCKED) (version 23.3.2.37 (official build))

Помогает обновление страницы, т.е. сессия протухает и потом запрос таки выполнятеся. Для JDBC-драйвера в Tableau есть прям отдельная галочка Set Session ID.

image

Возможно ли каким-то образом также задавать уникальный Session ID при использовании ODBC-драйвера?

mshustov commented 11 months ago

@sablastik what version of the ODBC driver do you use?

Spar9a commented 10 months ago

@mshustov Hi!

Have the same problem with the next version 1.2.1.20220905

Enmk commented 9 months ago

Related: https://github.com/ClickHouse/ClickHouse/issues/54952, https://github.com/ClickHouse/clickhouse-odbc/issues/429

kumarprafful commented 4 months ago

facing same issue with Power BI. Any update on this issue?

mshustov commented 4 months ago

@kumarprafful, do you use https://github.com/ClickHouse/power-bi-clickhouse? Would you mind opening an issue at https://github.com/ClickHouse/power-bi-clickhouse?

kumarprafful commented 4 months ago

no i am not using the power-bi-clickhouse. I am using clickhouse-odbc itself for the connection

OlegGalizin commented 1 week ago

Code: 373. DB::Exception: Session clickhouse_odbc_11645998850861136856 is locked by a concurrent client. (SESSION_IS_LOCKED) (version 24.7.1.2195 (official build))

Открываем первый stmt с длинной выборкой (16 тыс записей). Выполняеи толко один fetch. Открываем второй stmt с такой же выборкой и получаем вот эту ошибку. Вероятно происходит следующее: сервер начинает обработку запроса и выбирает некое количество данных однако не все. Запоминает что в данной сессии не все было выбрано. Потом происходит другой запрос в той же сессии, но первый еще не завершен до конца. Возникает ошибка. Вероятно драйверу нужно дочитывать все данные до конца. Возможно в момент запуска второго запроса по тому же соединению.

лог сервера log.zip

Еще можно для каждого stmt открывать новую сессию, если не до конца получены данные в предыдущих. Все это конечно при условии что мое предположение верно - сервер так ведет себя по причине незавершения обработки данных. Могут быть также проблемы с синхронизацией на сервере. Несколько нитей выполняют запрос. Они уже отослали все данные клиенту, он их обработал и послал новый запрос. А предыдущий запрос еще выполняется. Второй вариант тоже не исключен. Запуск производился на локальной машине.