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

Tim Rademacher commented on VFS-113:
------------------------------------

Hi, I experienced some errors while testing the new functionality:

org.apache.commons.vfs.FileSystemException: Could not copy "sftp://[EMAIL 
PROTECTED]/blabla.txt" to "sftp://[EMAIL PROTECTED]/archive/blabla.txt".
        at 
org.apache.commons.vfs.provider.AbstractFileObject.copyFrom(AbstractFileObject.java:919)
        at 
org.apache.commons.vfs.provider.AbstractFileObject.moveTo(AbstractFileObject.java:981)
        at 
de.inka.service.file.InkaFileSystemConnection.move(InkaFileSystemConnection.java:463)
        ... 11 more
Caused by: org.apache.commons.vfs.FileSystemException: Could not close the 
input stream for file "sftp://[EMAIL 
PROTECTED]/data_santiago/zdm/java_jobs/dvoimport/test/PositionenInka3_1015.asc".
        at 
org.apache.commons.vfs.provider.DefaultFileContent$FileContentInputStream.close(DefaultFileContent.java:525)
        at org.apache.commons.vfs.FileUtil.writeContent(FileUtil.java:87)
        at org.apache.commons.vfs.FileUtil.copyContent(FileUtil.java:103)
        at 
org.apache.commons.vfs.provider.AbstractFileObject.copyFrom(AbstractFileObject.java:910)
        ... 13 more
Caused by: java.io.IOException: error
        at com.jcraft.jsch.ChannelSftp$2.close(ChannelSftp.java:1178)
        at java.io.BufferedInputStream.close(Unknown Source)
        at 
org.apache.commons.vfs.util.MonitorInputStream.close(MonitorInputStream.java:115)
        at java.io.BufferedInputStream.close(Unknown Source)
        at 
org.apache.commons.vfs.util.MonitorInputStream.close(MonitorInputStream.java:115)
        at 
org.apache.commons.vfs.provider.DefaultFileContent$FileContentInputStream.close(DefaultFileContent.java:521)
        ... 16 more

or

java.lang.NullPointerException
        at com.jcraft.jsch.ChannelSftp.fill(ChannelSftp.java:2153)
        at com.jcraft.jsch.ChannelSftp.header(ChannelSftp.java:2179)
        at com.jcraft.jsch.ChannelSftp.access$7(ChannelSftp.java:2177)
        at com.jcraft.jsch.ChannelSftp$2.read(ChannelSftp.java:1100)
        at java.io.BufferedInputStream.read1(Unknown Source)
        at java.io.BufferedInputStream.read(Unknown Source)
        at 
org.apache.commons.vfs.util.MonitorInputStream.read(MonitorInputStream.java:88)
        at java.io.BufferedInputStream.read1(Unknown Source)
        at java.io.BufferedInputStream.read(Unknown Source)
        at 
org.apache.commons.vfs.util.MonitorInputStream.read(MonitorInputStream.java:88)
        at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(Unknown Source)
        at sun.nio.cs.StreamDecoder$CharsetSD.implRead(Unknown Source)
        at sun.nio.cs.StreamDecoder.read(Unknown Source)
        at java.io.InputStreamReader.read(Unknown Source)
        at com.Ostermiller.util.CSVLexer.zzRefill(CSVLexer.java:605)
        at com.Ostermiller.util.CSVLexer.getNextToken(CSVLexer.java:789)
        at com.Ostermiller.util.CSVParser.getLine(CSVParser.java:335)
        at 
com.Ostermiller.util.LabeledCSVParser.setLabels(LabeledCSVParser.java:245)
        at 
com.Ostermiller.util.LabeledCSVParser.getLine(LabeledCSVParser.java:211)
        at de.inka.dvo.dao.FileImport.importFile(FileImport.java:199)
        at de.inka.dvo.ExportController.doOnNewFile(ExportController.java:345)
        at de.inka.dvo.dao.FileObserver.processForward(FileObserver.java:112)
        at de.inka.dvo.dao.FileObserver.processForward(FileObserver.java:1)
        at de.inka.util.observer.InkaObserver.update(InkaObserver.java:171)
        at 
de.inka.util.observer.InkaObservable.notifyObservers(InkaObservable.java:483)
        at 
de.inka.service.file.observer.FileObservable.processMessage(FileObservable.java:295)
        at 
de.inka.service.file.observer.FileObservable.processMessage(FileObservable.java:1)
        at 
de.inka.util.observer.InkaObservable$WorkerRunnable.run(InkaObservable.java:121)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown 
Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

What I think is, that one thread opens the connection and returns the input 
stream to anywhere. While the input stream is processed, another thread does 
anything else with sftp. It gets the same SftpChannel from the FileSystem, 
opens it (again?) and closes it, when it's finished. Then the first thread 
seems to get the error.

I also got sometimes an InputStreamClosed Exception, which seems to support my 
theory. 

I have to look further...

Regards

Tim

> NullPointerException during getting InputStream from SftpFileObject
> -------------------------------------------------------------------
>
>                 Key: VFS-113
>                 URL: https://issues.apache.org/jira/browse/VFS-113
>             Project: Commons VFS
>          Issue Type: Bug
>            Reporter: Tim Rademacher
>             Fix For: 1.1
>
>         Attachments: SftpFileObject.diff
>
>
> Hi, 
> I experienced unregular NullPointerExceptions while getting an InputStream 
> from an SftpFileObject. It only occures in a multithreading environment.
> I made a patch. By now it seems to work!
> Regards,
> Tim

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to