dbms: development [#CONV-2944].

This commit is contained in:
Alexey Milovidov 2012-10-20 06:40:55 +00:00
parent e35138b09d
commit 3f62b5bb2e
3 changed files with 16 additions and 3 deletions

View File

@ -102,6 +102,8 @@ public:
finish = true;
cancel();
// TODO: может быть, здесь может возникнуть блокировка, если очередь переполнена, и какой-нибудь из потоков попытается положить в неё блок.
for (ThreadsData::iterator it = threads_data.begin(); it != threads_data.end(); ++it)
it->thread->join();

View File

@ -22,6 +22,9 @@ void Connection::connect()
{
try
{
if (connected)
disconnect();
LOG_TRACE(log, "Connecting");
socket.connect(Poco::Net::SocketAddress(host, port), connect_timeout);
@ -161,9 +164,6 @@ bool Connection::ping()
}
catch (const Poco::Exception & e)
{
/// Закроем соединение, чтобы не было рассинхронизации.
disconnect();
LOG_TRACE(log, e.displayText());
return false;
}

View File

@ -166,7 +166,10 @@ void TCPHandler::processOrdinaryQuery()
break;
}
else if (isQueryCancelled())
{
async_in.cancel();
break;
}
}
sendData(block);
@ -263,6 +266,14 @@ bool TCPHandler::receivePacket()
out->next();
break;
case Protocol::Client::Cancel:
/// Если пришёл запоздавший пакет Cancel, то игнорируем его.
break;
case Protocol::Client::Hello:
throw Exception("Unexpected packet " + String(Protocol::Client::toString(Protocol::Client::Enum(packet_type))) + " received from client",
ErrorCodes::UNEXPECTED_PACKET_FROM_CLIENT);
default:
throw Exception("Unknown packet from client", ErrorCodes::UNKNOWN_PACKET_FROM_CLIENT);
}