ClickHouse / ClickHouse/clickhouse-cpp
Client not always throws an exception on server error during insert
- Lenguaje dominante
- C
- Estrellas
- 382
- Forks
- 209
- Merge medio
- 2 d 19 h
- PR fusionados (30 d)
- 14
Descripción
Hello!
I have a `C++` code, which processes some data and repeatedly inserts the results to a clickhouse table. I have discovered that in some cases when insertion fails server-side, the client doesn't throw any exception and silently returns the control (inserts are made synchronously).
The latest server-side error, which haven't been handled by the `C++` client, was caused by insufficient disk space, the stack trace is below:
```
0. DB::Exception::Exception(DB::Exception::MessageMasked&&, int, bool) @ 0x000000000e348c95 in /usr/bin/clickhouse
1. ? @ 0x000000001307a856 in /usr/bin/clickhouse
2. DB::MergeTreeData::reserveSpacePreferringTTLRules(std::shared_ptr const&, unsigned long, DB::MergeTreeDataPartTTLInfos const&, long, unsigned long, bool, std::shared_ptr) const @ 0x0000000014850dbb in /usr/bin/clickhouse
3. DB::MergeTreeDataWriter::writeTempPartImpl(DB::BlockWithPartition&, std::shared_ptr const&, std::shared_ptr, long, bool) @ 0x00000000149f61c6 in /usr/bin/clickhouse
4. DB::MergeTreeSink::consume(DB::Chunk) @ 0x0000000014b818fc in /usr/bin/clickhouse
5. DB::SinkToStorage::onConsume(DB::Chunk) @ 0x0000000014ff6566 in /usr/bin/clickhouse
6. ? @ 0x0000000014f3dbeb in /usr/bin/clickhouse
7. ? @ 0x0000000014f3d91c in /usr/bin/clickhouse
8. DB::ExceptionKeepingTransform::work() @ 0x0000000014f3d1d8 in /usr/bin/clickhouse
9. DB::ExecutionThreadContext::executeTask() @ 0x0000000014d37d89 in /usr/bin/clickhouse
10. DB::PipelineExecutor::executeStepImpl(unsigned long, std::atomic*) @ 0x0000000014d2ea10 in /usr/bin/clickhouse
11. DB::PipelineExecutor::executeStep(std::atomic*) @ 0x0000000014d2e1c8 in /usr/bin/clickhouse
12. DB::PushingPipelineExecutor::push(DB::Chunk) @ 0x0000000014d40d15 in /usr/bin/clickhouse
13. DB::PushingPipelineExecutor::push(DB::Block) @ 0x0000000014d40f06 in /usr/bin/clickhouse
14. DB::TCPHandler::processInsertQuery() @ 0x0000000014cdd32a in /usr/bin/clickhouse
15. DB::TCPHandler::runImpl() @ 0x0000000014cd4760 in /usr/bin/clickhouse
16. DB::TCPHandler::run() @ 0x0000000014cea079 in /usr/bin/clickhouse
17. Poco::Net::TCPServerConnection::start() @ 0x0000000017c2fe34 in /usr/bin/clickhouse
18. Poco::Net::TCPServerDispatcher::run() @ 0x0000000017c31051 in /usr/bin/clickhouse
19. Poco::PooledThread::run() @ 0x0000000017dadd07 in /usr/bin/clickhouse
20. Poco::ThreadImpl::runnableEntry(void*) @ 0x0000000017dab73c in /usr/bin/clickhouse
21. start_thread @ 0x0000000000007fa3 in /usr/lib/x86_64-linux-gnu/libpthread-2.28.so
22. __clone @ 0x00000000000f906f in /usr/lib/x86_64-linux-gnu/libc-2.28.so
```
Is it possible to enable client-side exceptions on any server-side exception?
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Línea de trabajo
Empieza reproduciendo un fallo de inserción síncrona usando el escenario del lado del servidor de espacio insuficiente descrito en el issue, y luego rastrea cómo el cliente C++ gestiona la respuesta del servidor. Se considera terminado cuando las excepciones de inserción del lado del servidor se transmiten al llamador en lugar de devolverse silenciosamente; añade o ejecuta una prueba de regresión si la configuración de pruebas existente admite este caso.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- cpp
- Área
- databases
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100