Overview
Contains multiple Smart Services for interacting with a remote file server via SFTP, FTP, or SCP. Using these services, an Appian application can be configured to send and receive files, folders, and metadata in a process. Features support for zlib compression.
Key Features & Functionality
Smart Services included:
All smart services in the package use Secure Credentials Store.
Hi,
We are getting an unexpected error when using the Send File Over SFTP smart service (using a private key). We have a requirement to send some files to an external SFTP server and for some of them it works fine and almost instantly (small files), but when using bigger files (the file size can vary from some KB to even MB in some cases) the node will take way more time to complete (some minutes, regardless of the file size) and report the FAILED flag with the following error: "java.io.IOException: inputstream is closed". This is not something that happens randomly, it always fails for those files. The external SFTP server is not managed by us, but their IT team told us logs show that the connection is being closed abruptly.
This issue only happens with this smart service, the rest of them works fine against that server.
Log trace:
2022-04-27 14:47:42 INFO [Appian Work Item - 510542 - execution01 : UnattendedJavaActivityRequest] com.appiancorp.a2.vpn.VPNTunnelNameService.lookupAllHostAddr VPN dns lookup result (private server IP) 2022-04-27 14:52:46,850 [Appian Work Item - 510542 - execution01 : UnattendedJavaActivityRequest] ERROR com.appian.ps.plugins.sftpsmartservices.SendFileOverSFTP - Error transferring file to SFTP server 4: java.io.IOException: inputstream is closed at com.jcraft.jsch.ChannelSftp._put(ChannelSftp.java:697) at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:540) at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:492) at com.appian.ps.plugins.sftpsmartservices.SendFileOverSFTP.run(SendFileOverSFTP.java:150) at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.lambda$call$0(DefaultActivityExecutor.java:136) at com.appiancorp.plugins.PluginUsageLogger.runWithPluginInformation(PluginUsageLogger.java:52) at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:136) at com.appiancorp.process.runtime.framework.DefaultActivityExecutor$1.call(DefaultActivityExecutor.java:130) at com.appiancorp.common.ContextClassLoaderSwitcher.runInContext(ContextClassLoaderSwitcher.java:27) at com.appiancorp.process.runtime.framework.DefaultActivityExecutor.execute(DefaultActivityExecutor.java:130) at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute(UnattendedJavaActivityRequest.java:88) at com.appiancorp.process.engine.UnattendedJavaActivityRequestResponseCreator.getJavaActivityResultResponse(UnattendedJavaActivityRequestResponseCreator.java:21) at com.appiancorp.process.engine.UnattendedJavaActivityRequest.getJavaActivityResultResponse(UnattendedJavaActivityRequest.java:67) at com.appiancorp.process.engine.UnattendedJavaActivityRequest.execute0(UnattendedJavaActivityRequest.java:55) at com.appiancorp.common.persistence.data.AppianDataUserContextProvider.executeWithConsistentDataReads(AppianDataUserContextProvider.java:116) at com.appiancorp.process.engine.ProcessContinuationRequest.executeOuter(ProcessContinuationRequest.java:68) at com.appiancorp.process.engine.ContinuationRequest.execute(ContinuationRequest.java:124) at com.appiancorp.process.workpoller.UnattendedRequestHandlerBean.onMessage(UnattendedRequestHandlerBean.java:36) at com.appiancorp.process.workpoller.WorkItem.run(WorkItem.java:94) at org.springframework.jca.work.SimpleTaskWorkManager$DelegatingWorkAdapter.run(SimpleTaskWorkManager.java:239) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750) Caused by: java.io.IOException: inputstream is closed at com.jcraft.jsch.ChannelSftp.fill(ChannelSftp.java:2911) at com.jcraft.jsch.ChannelSftp.header(ChannelSftp.java:2935) at com.jcraft.jsch.ChannelSftp.checkStatus(ChannelSftp.java:2473) at com.jcraft.jsch.ChannelSftp._put(ChannelSftp.java:686) ... 22 more
Hi Ivan,
We have been experiencing similar issues regarding small files being transferred, and if we have larger files, long wait times before "input stream is closed" errors being returned. Did you happen to find a solution to this?
Thank you kindly for your help in advanced.