mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-24 08:32:02 +00:00
Handle Protocol::Server::Log in the RemoteQueryExecutor::finish()
Even when finish() is called, there can be no EndOfStream sent, so it is 100% correct to handle Log packages there. W/o fix in RemoteQueryExecutor: Code: 100, e.displayText() = DB::Exception: Unknown packet 10 from one of the following replicas: : While executing Remote (version 20.8.1.1) (from [::1]:56960) (in query: select * from remote('127.{2,3}', system.numbers) where number = 10 limit 1; ), Stack trace (when copying this message, always include the lines below): 0. Common/StackTrace.cpp:291: StackTrace::tryCapture() @ 0x28b80a 1. Common/StackTrace.cpp:256: StackTrace::StackTrace() @ 0x28b6ab 2. Common/Exception.cpp:42: DB::Exception::Exception(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int) @ 0x2481ba 3. Common/Exception.h:28: DB::Exception::Exception<>() @ 0x334d48 4. DataStreams/RemoteQueryExecutor.cpp:288: DB::RemoteQueryExecutor::finish() @ 0x330314 5. Processors/Sources/RemoteSource.cpp:46: DB::RemoteSource::generate() @ 0x6fce5
This commit is contained in:
parent
ad7379a37e
commit
2e933a94a6
@ -271,6 +271,12 @@ void RemoteQueryExecutor::finish()
|
||||
finished = true;
|
||||
break;
|
||||
|
||||
case Protocol::Server::Log:
|
||||
/// Pass logs from remote server to client
|
||||
if (auto log_queue = CurrentThread::getInternalTextLogsQueue())
|
||||
log_queue->pushBlock(std::move(packet.block));
|
||||
break;
|
||||
|
||||
case Protocol::Server::Exception:
|
||||
got_exception_from_replica = true;
|
||||
packet.exception->rethrow();
|
||||
|
0
tests/queries/0_stateless/01451_dist_logs.reference
Normal file
0
tests/queries/0_stateless/01451_dist_logs.reference
Normal file
12
tests/queries/0_stateless/01451_dist_logs.sh
Executable file
12
tests/queries/0_stateless/01451_dist_logs.sh
Executable file
@ -0,0 +1,12 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
CLICKHOUSE_CLIENT_SERVER_LOGS_LEVEL=trace
|
||||
CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
||||
. "$CURDIR"/../shell_config.sh
|
||||
|
||||
# triggered not for the first query
|
||||
yes "select * from remote('127.{2,3}', system.numbers) where number = 10 limit 1;" 2>/dev/null | {
|
||||
head -n20 | ${CLICKHOUSE_CLIENT} -n 2>&1 >/dev/null | grep 'DB::Exception: '
|
||||
}
|
||||
# grep above will fail during diff with .reference
|
||||
exit 0
|
Loading…
Reference in New Issue
Block a user