Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
In TSocket.java, the connect() logic uses the socket timeout value (for reads/writes) as the connection timeout, as well:
public void open() throws TTransportException { if (isOpen()) { throw new TTransportException(TTransportException.ALREADY_OPEN, "Socket already connected."); } if (host_.length() == 0) { throw new TTransportException(TTransportException.NOT_OPEN, "Cannot open null host."); } if (port_ <= 0) { throw new TTransportException(TTransportException.NOT_OPEN, "Cannot open without port."); } if (socket_ == null) { initSocket(); } try { socket_.connect(new InetSocketAddress(host_, port_), timeout_); <--- this value should be a separately defined inputStream_ = new BufferedInputStream(socket_.getInputStream(), 1024);
In many applications, the duration of time one is willing to wait before establishing a connection is not the same as the duration of time one is willing to wait before timing out on a read.
For example, I may want to time out on establishing a connection after 1 second but am willing to wait 10 seconds for long reads to complete.
Please create a separate value that can be passed into the constructor, thanks
Attachments
Issue Links
- contains
-
THRIFT-902 socket and connect timeout in TSocket should be distinguished
- Closed