You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Gary D. Gregory (Jira)" <ji...@apache.org> on 2022/04/20 23:16:00 UTC

[jira] [Commented] (VFS-778) SftpFileSystem returning null channel

    [ https://issues.apache.org/jira/browse/VFS-778?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17525346#comment-17525346 ] 

Gary D. Gregory commented on VFS-778:
-------------------------------------

Ping?

> SftpFileSystem returning null channel
> -------------------------------------
>
>                 Key: VFS-778
>                 URL: https://issues.apache.org/jira/browse/VFS-778
>             Project: Commons VFS
>          Issue Type: Bug
>    Affects Versions: 2.4.1, 2.5.0, 2.6.0
>            Reporter: Manish Bansal
>            Priority: Major
>              Labels: pull-request-available
>
> I tested v2.4.1 jar with 8 threads. The purpose was to upload 1.3TB of data on FTP via sftp protocol. There were 850 folders with varying sizes from 10 MB to 25GB. After the job was finished, It was observed that 50 folders failed to upload due to null pointer exception as below.
> {code:java}
> java.lang.NullPointerException: null
>         at org.apache.commons.vfs2.provider.sftp.SftpFileObject.doGetOutputStream(SftpFileObject.java:475)
>         at org.apache.commons.vfs2.provider.AbstractFileObject.getOutputStream(AbstractFileObject.java:1239)
>         at org.apache.commons.vfs2.provider.DefaultFileContent.buildOutputStream(DefaultFileContent.java:518)
>         at org.apache.commons.vfs2.provider.DefaultFileContent.getOutputStream(DefaultFileContent.java:404)
>         at org.apache.commons.vfs2.provider.DefaultFileContent.getOutputStream(DefaultFileContent.java:392)
>         at org.apache.commons.vfs2.provider.DefaultFileContent.write(DefaultFileContent.java:753)
>         at org.apache.commons.vfs2.provider.DefaultFileContent.write(DefaultFileContent.java:771)
>         at org.apache.commons.vfs2.FileUtil.copyContent(FileUtil.java:37)
>         at org.apache.commons.vfs2.provider.AbstractFileObject.copyFrom(AbstractFileObject.java:295)
>         at com.infy.task.helper.FTPUploader.uploadToFTP(FTPUploader.java:173)
>         at com.infy.task.helper.FTPUploader.upload(FTPUploader.java:90)
>         at com.infy.task.AssetDownloadAndUploadTask.run(AssetDownloadAndUploadTask.java:57)
>         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>         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:748)
> {code}
> Further, I have analysed the code, it is very highly likely that it will return null due to below piece of code.
> {code:java}
> protected ChannelSftp getChannel() throws IOException {
>         try {
>             // Use the pooled channel, or create a new one
>             ChannelSftp channel = null;
>             if (idleChannel != null) {
>                 synchronized (this) {
>             // What will happen if my code comes here and idleChannel is null
>                     if (idleChannel != null) {
>                         channel = idleChannel;
>                         idleChannel = null;
>                     }
>                 }
>             } else {
>                   channel= .. //create channel
>             }
>             // some more code
>             return channel;
> }
> {code}



--
This message was sent by Atlassian Jira
(v8.20.7#820007)