softlayer / swftp

An FTP and SFTP interface for OpenStack Object Storage (swift).
Other
57 stars 25 forks source link

Connecting to swftp server using ssh ftp throws session is down error when using JSch library #44

Open sarathambadas opened 8 years ago

sarathambadas commented 8 years ago

Hi I am connecting to swftp using ssh ftp from a java program using JCch libraries. It works for some time and after that it throws session is down error. The SFTP server is running on softlayer

Caused by: com.jcraft.jsch.JSchException: session is down at com.jcraft.jsch.Channel.sendChannelOpen(Channel.java:728) at com.jcraft.jsch.Channel.connect(Channel.java:151) at com.jcraft.jsch.Channel.connect(Channel.java:145) at com.approuter.module.ftp.protocol.SftpConnectionImpl.(SftpConnectionImpl.java:108) ... 23 more

We try to reestablish a new session by cleaning of the resources (calling disconnect) but still face the same error even after retrying many number of times. Again suddenly it starts working after couple of hours. Another thing is when this error occurs, it affects other clients as well who use the same credentials.

Can we know what is happening on the server side and how sessions are handled? Is it possible to reuse a session once it gets corrupt/invalid. All channels returned by this session fail to work.

has anybody seen this issue?

Thanks Sarath

briancline commented 6 years ago

I can't say I've seen this issue first-hand or heard of it from others, however I also have not tried connecting to a SwFTP instance using the JSch library, either.

If you're using a number of simultaneous connections with the same credentials, you might be reaching the per-user connection limit that's configurable with the sessions_per_user in swftp.conf. The default is 10, although you can configure a higher limit.

Would you mind sharing some sample code that we can use to try and reproduce the issue?

jbhattac commented 1 month ago

@briancline I am having the same issue as well.

Caused by: com.jcraft.jsch.JSchException: session is down
2024-06-05 09:28:55 
    at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
2024-06-05 09:28:55 
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[na:na]
2024-06-05 09:28:55 
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[na:na]
2024-06-05 09:28:55 
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) ~[na:na]
2024-06-05 09:28:55 
    at java.base/java.util.concurrent.FutureTask.runAndReset(Unknown Source) ~[na:na]
2024-06-05 09:28:55 
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[na:na]
2024-06-05 09:28:55 
    at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-6.0.13.jar:6.0.13]
2024-06-05 09:28:55 
    at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:84) ~[spring-context-6.0.13.jar:6.0.13]
2024-06-05 09:28:55 
    at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na]
2024-06-05 09:28:55 
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
2024-06-05 09:28:55 
    at jdk.internal.reflect.GeneratedMethodAccessor34.invoke(Unknown Source) ~[na:na]

I observed from the Jsch logs that I am getting the following error even though I am disconnecting the connection.

: Caught an exception, leaving main loop due to SSH_MSG_DISCONNECT: 12 Maximum connections for host/user reached en-US

Code to disconnect the connection and that method is called from finally.

 private void disconnectSftp(ChannelSftp channelSftp){
        channelSftp.exit();
    }

My question is disconnecting for the channel not good enough, or we still do have to discoonect from the session explicitly.