Stephan Siano created CAMEL-8757:
------------------------------------
Summary: SO_TIMEOUT not really set on SFTP connections
Key: CAMEL-8757
URL: https://issues.apache.org/jira/browse/CAMEL-8757
Project: Camel
Issue Type: Bug
Components: camel-ftp
Affects Versions: 2.15.2, 2.14.2, 2.16.0
Reporter: Stephan Siano
The documentation for the soTimeout parameter in the camel-ftp option says:
FTP and FTPS Only: Camel 2.4: Is the SocketOptions.SO_TIMEOUT value in millis.
Note SFTP will automatic use the connectTimeout as the soTimeout.
The last statement is unfortunately not entirely true. JSCH's
Session.connect(int connectTimeout) method will initially set the SO_TIMEOUT of
the underlying socket to connectTimeout, however once the connection phase is
finished, it will change this value to the provided timeout value.
We have an incredibly broken SFTP server. On that connections sometimes hang
after the connect phase, which causes polling consumer endpoints to hang in a
Socket.read() forever (which means that they stop polling).
IMO the fix for that is twofold:
1. I attach a (trivial one-line) fix for the camel-ftp component, which will
set the soTimeout parameter to the timeout parameter of the JSCH session.
2. Someone with the access rights should modify the camel-ftp documentation
3. It might make sense to set the default for the soTimeout parameter to
something more sane than 0 (forever) but I don't do that in the patch (as it
may change the existing behaviour).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)