ClickHouse: Remote JDBC bridge connection issue (timeout)

Describe the bug or unexpected behaviour Trying to access JDBC bridge deployed on a remote host almost always produces the following error:

Code: 410, e.displayText() = DB::Exception: jdbc-bridge is not running. Please, start it manually

Could be related to #8723

The reason Communication with JDBC bridge is implemented using ReadWriteBufferFromHTTP class without providing HTTP timeouts from configuration, e.g.:

ReadWriteBufferFromHTTP buf(uri, Poco::Net::HTTPRequest::HTTP_POST, nullptr);

In such case class’es constructor automatically provides default value for timeouts parameter with all values equal to zero and these values are passed to Poco HTTPSession, replacing Poco’s default values. This leads to TimeoutException in SocketImpl::connect method:

  if (!poll(timeout, SELECT_READ | SELECT_WRITE | SELECT_ERROR))
    throw Poco::TimeoutException("connect timed out", address.toString());

The proposition Provide timeouts to all JDBC bridge related usages.

XDBCBridgeHelper.h - getIdentifierQuotingStyle

ReadWriteBufferFromHTTP buf(uri, Poco::Net::HTTPRequest::HTTP_POST, nullptr, ConnectionTimeouts::getHTTPTimeouts(context));

XDBCBridgeHelper.h - checkBridgeIsRunning

ReadWriteBufferFromHTTP buf(ping_url, Poco::Net::HTTPRequest::HTTP_GET, nullptr, ConnectionTimeouts::getHTTPTimeouts(context));

ITableFunctionXDBC.cpp - ITableFunctionXDBC::executeImpl

ReadWriteBufferFromHTTP buf(columns_info_uri, Poco::Net::HTTPRequest::HTTP_POST, nullptr, ConnectionTimeouts::getHTTPTimeouts(context));

Nice to have Exception logging in XDBCBridgeHelper.h - checkBridgeIsRunning

        try
        {
            ReadWriteBufferFromHTTP buf(ping_url, Poco::Net::HTTPRequest::HTTP_GET, nullptr);
            return checkString(XDBCBridgeHelper::PING_OK_ANSWER, buf);
        }
        catch (...)
        {
---> logging here could save a lot of time in some cases
            return false;
        }

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Reactions: 2
  • Comments: 15 (12 by maintainers)

Most upvoted comments