Henri Hagberg created VFS-627:
---------------------------------

             Summary: SFTP randomly hangs when copying a file on remote server
                 Key: VFS-627
                 URL: https://issues.apache.org/jira/browse/VFS-627
             Project: Commons VFS
          Issue Type: Bug
    Affects Versions: 2.1
         Environment: Java 1.8.0_92
VFS 2.1
JSch 0.1.53
            Reporter: Henri Hagberg


I have a process where a file is first copied over SFTP to local server and 
then on the remote server the file is copied to another location on that server 
for archiving. Both are done using {{FileObject#copyFrom}}. Now I've 
encountered twice the situation where during archiving (on remote server) the 
copy action hangs indefinitely (the process was left running for over 24 
hours). In both cases the issue happened when around 2000 files had been 
transferred (typical amount is under 100).

The problem is difficult to reproduce since it doesn't always happen even with 
large number of files. Based on the stacktrace and random occurrences it might 
be a concurrency issue. The code using VFS however is single threaded.

{code}
Attaching to process ID 128021, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.92-b14
Deadlock Detection:

No deadlocks found.

Thread 19073: (state = BLOCKED)

Thread 128165: (state = BLOCKED)
 - java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be 
imprecise)
 - java.lang.ref.ReferenceQueue.remove(long) @bci=59, line=143 (Compiled frame)
 - org.apache.commons.vfs2.cache.SoftRefFilesCache$SoftRefReleaseThread.run() 
@bci=26, line=84 (Compiled frame)

Thread 128164: (state = BLOCKED)
 - java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be 
imprecise)
 - java.io.PipedInputStream.awaitSpace() @bci=23, line=273 (Compiled frame)
 - java.io.PipedInputStream.receive(byte[], int, int) @bci=31, line=231 
(Compiled frame)
 - java.io.PipedOutputStream.write(byte[], int, int) @bci=77, line=149 
(Compiled frame)
 - com.jcraft.jsch.IO.put(byte[], int, int) @bci=7, line=64 (Compiled frame)
 - com.jcraft.jsch.Channel.write(byte[], int, int) @bci=7, line=438 (Compiled 
frame)
 - com.jcraft.jsch.Session.run() @bci=1260, line=1624 (Compiled frame)
 - java.lang.Thread.run() @bci=11, line=745 (Interpreted frame)

Thread 128139: (state = BLOCKED)

Thread 128138: (state = BLOCKED)
 - java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be 
imprecise)
 - java.lang.ref.ReferenceQueue.remove(long) @bci=59, line=143 (Compiled frame)
 - java.lang.ref.ReferenceQueue.remove() @bci=2, line=164 (Compiled frame)
 - java.lang.ref.Finalizer$FinalizerThread.run() @bci=36, line=209 (Interpreted 
frame)

Thread 128137: (state = BLOCKED)
 - java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be 
imprecise)
 - java.lang.Object.wait() @bci=2, line=502 (Compiled frame)
 - java.lang.ref.Reference.tryHandlePending(boolean) @bci=54, line=191 
(Compiled frame)
 - java.lang.ref.Reference$ReferenceHandler.run() @bci=1, line=153 (Interpreted 
frame)

Thread 128022: (state = BLOCKED)
 - java.lang.Object.wait(long) @bci=0 (Compiled frame; information may be 
imprecise)
 - com.jcraft.jsch.Session.write(com.jcraft.jsch.Packet, 
com.jcraft.jsch.Channel, int) @bci=89, line=1261 (Compiled frame)
 - com.jcraft.jsch.ChannelSftp.sendWRITE(byte[], long, byte[], int, int) 
@bci=191, line=2619 (Compiled frame)
 - com.jcraft.jsch.ChannelSftp.access$100(com.jcraft.jsch.ChannelSftp, byte[], 
long, byte[], int, int) @bci=9, line=36 (Compiled frame)
 - com.jcraft.jsch.ChannelSftp$1.write(byte[], int, int) @bci=77, line=791 
(Compiled frame)
 - java.io.BufferedOutputStream.write(byte[], int, int) @bci=20, line=122 
(Compiled frame)
 - org.apache.commons.vfs2.util.MonitorOutputStream.write(byte[], int, int) 
@bci=8, line=123 (Compiled frame)
 - java.io.BufferedOutputStream.flushBuffer() @bci=20, line=82 (Compiled frame)
 - java.io.BufferedOutputStream.write(byte[], int, int) @bci=39, line=126 
(Compiled frame)
 - org.apache.commons.vfs2.util.MonitorOutputStream.write(byte[], int, int) 
@bci=8, line=123 (Compiled frame)
 - 
org.apache.commons.vfs2.provider.DefaultFileContent.write(java.io.OutputStream, 
int) @bci=35, line=892 (Compiled frame)
 - 
org.apache.commons.vfs2.provider.DefaultFileContent.write(java.io.OutputStream) 
@bci=5, line=865 (Compiled frame)
 - 
org.apache.commons.vfs2.provider.DefaultFileContent.write(org.apache.commons.vfs2.FileContent)
 @bci=9, line=828 (Compiled frame)
 - 
org.apache.commons.vfs2.provider.DefaultFileContent.write(org.apache.commons.vfs2.FileObject)
 @bci=7, line=849 (Compiled frame)
 - 
org.apache.commons.vfs2.FileUtil.copyContent(org.apache.commons.vfs2.FileObject,
 org.apache.commons.vfs2.FileObject) @bci=7, line=90 (Compiled frame)
 - 
org.apache.commons.vfs2.provider.AbstractFileObject.copyFrom(org.apache.commons.vfs2.FileObject,
 org.apache.commons.vfs2.FileSelector) @bci=148, line=338 (Compiled frame)
 ...
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to