ClickHouse / ClickHouse/clickhouse-cpp

Client not always throws an exception on server error during insert

Aperta
#406 1 commento 1 reazione 0 assegnatari Vedi su GitHub
bug need-info
Lingua principale
C
Stelle
382
Fork
209
Merge medio
1g 22h
PR unite (30g)
13

Descrizione

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?

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Inizia riproducendo un errore di inserimento sincrono usando lo scenario lato server di spazio su disco insufficiente descritto nell’issue, quindi traccia il modo in cui il client C++ gestisce la risposta del server. Il lavoro è completo quando le eccezioni di inserimento lato server vengono trasmesse al chiamante invece di essere restituite silenziosamente; aggiungi o esegui un test di regressione se la configurazione di test esistente supporta questo caso.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
cpp
Ambito
databases
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.