mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-27 18:12:02 +00:00
dbms: fixed error with distributed queries [#CONV-2944].
This commit is contained in:
parent
29e136cf3d
commit
b541a9b90f
@ -260,7 +260,7 @@ Connection::Packet Connection::receivePacket()
|
||||
default:
|
||||
/// Закроем соединение, чтобы не было рассинхронизации.
|
||||
disconnect();
|
||||
throw Exception("Unknown packet from server" + getServerAddress(), ErrorCodes::UNKNOWN_PACKET_FROM_SERVER);
|
||||
throw Exception("Unknown packet from server " + getServerAddress(), ErrorCodes::UNKNOWN_PACKET_FROM_SERVER);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -57,8 +57,6 @@ void TCPHandler::runImpl()
|
||||
|
||||
sendHello();
|
||||
|
||||
bool network_error = false;
|
||||
|
||||
while (1)
|
||||
{
|
||||
/// Ждём пакета от клиента. При этом, каждые POLL_INTERVAL сек. проверяем, не требуется ли завершить работу.
|
||||
@ -66,7 +64,7 @@ void TCPHandler::runImpl()
|
||||
;
|
||||
|
||||
/// Если требуется завершить работу, или клиент отсоединился.
|
||||
if (Daemon::instance().isCancelled() || network_error || in->eof())
|
||||
if (Daemon::instance().isCancelled() || in->eof())
|
||||
break;
|
||||
|
||||
Stopwatch watch;
|
||||
@ -112,7 +110,12 @@ void TCPHandler::runImpl()
|
||||
}
|
||||
catch (const Poco::Net::NetException & e)
|
||||
{
|
||||
network_error = true;
|
||||
/** Сюда мы можем попадать, если была ошибка в соединении с клиентом,
|
||||
* или в соединении с удалённым сервером, который использовался для обработки запроса.
|
||||
* Здесь не получается отличить эти два случая.
|
||||
* Хотя в одном из них, мы должны отправить эксепшен клиенту, а в другом - не можем.
|
||||
* Будем пытаться отправить эксепшен клиенту в любом случае - см. ниже.
|
||||
*/
|
||||
LOG_ERROR(log, "Poco::Net::NetException. Code: " << ErrorCodes::POCO_EXCEPTION << ", e.code() = " << e.code()
|
||||
<< ", e.displayText() = " << e.displayText() << ", e.what() = " << e.what());
|
||||
exception = new Exception(e.displayText(), e.code());
|
||||
@ -134,14 +137,18 @@ void TCPHandler::runImpl()
|
||||
exception = new Exception("Unknown exception", ErrorCodes::UNKNOWN_EXCEPTION);
|
||||
}
|
||||
|
||||
bool network_error = false;
|
||||
|
||||
try
|
||||
{
|
||||
if (exception && !network_error)
|
||||
if (exception)
|
||||
sendException(*exception);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
/** Не удалось отправить информацию об эксепшене клиенту. */
|
||||
network_error = true;
|
||||
LOG_WARNING(log, "Client has gone away.");
|
||||
}
|
||||
|
||||
try
|
||||
@ -161,6 +168,9 @@ void TCPHandler::runImpl()
|
||||
|
||||
LOG_INFO(log, std::fixed << std::setprecision(3)
|
||||
<< "Processed in " << watch.elapsedSeconds() << " sec.");
|
||||
|
||||
if (network_error)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user