Manuel Mall created VFS-823:
-------------------------------
Summary: Deadlock in SFTP file system
Key: VFS-823
URL: https://issues.apache.org/jira/browse/VFS-823
Project: Commons VFS
Issue Type: Bug
Affects Versions: 2.9.0
Reporter: Manuel Mall
Two threads accessing the same (cached) file (SftpFileObject) through the same
cached SftpFileSystem can cause a deadlock due to the sequence of locks:
Thread 1: locks SftpFileSystem object followed by attempted lock on
SftpFileObject object
Thread 2: locks SftpFileObject object followed by attempted lock on
SftpFileSystem object
In the example below Thread 1 does a resolveFile call while Thread 2 does a
moveTo call in VFS.
Example stack trace:
{{}}
{code:java}
Found one Java-level deadlock:
=============================
"STARS Scheduler_Worker-1":
waiting to lock monitor 0x000001a2550ccbb0 (object 0x000000008c239030, a
org.apache.commons.vfs2.provider.sftp.SftpFileObject),
which is held by "STARS Scheduler_Worker-4""STARS Scheduler_Worker-4":
waiting to lock monitor 0x000001a248620b70 (object 0x000000008a9806b8, a
org.apache.commons.vfs2.provider.sftp.SftpFileSystem),
which is held by "STARS Scheduler_Worker-1"Java stack information for the
threads listed above:
===================================================
"STARS Scheduler_Worker-1":
at
org.apache.commons.vfs2.provider.sftp.SftpFileObject.doDetach(SftpFileObject.java:140)
- waiting to lock <0x000000008c239030> (a
org.apache.commons.vfs2.provider.sftp.SftpFileObject)
at
org.apache.commons.vfs2.provider.AbstractFileObject.detach(AbstractFileObject.java:484)
- locked <0x000000008a9806b8> (a
org.apache.commons.vfs2.provider.sftp.SftpFileSystem)
at
org.apache.commons.vfs2.provider.AbstractFileObject.refresh(AbstractFileObject.java:1790)
at
org.apache.commons.vfs2.provider.AbstractFileSystem.resolveFile(AbstractFileSystem.java:344)
- locked <0x000000008a9806b8> (a
org.apache.commons.vfs2.provider.sftp.SftpFileSystem)
at
org.apache.commons.vfs2.provider.AbstractFileSystem.resolveFile(AbstractFileSystem.java:307)
at
org.apache.commons.vfs2.provider.AbstractFileObject.resolveFile(AbstractFileObject.java:1815)
at
au.net.synergy.wts.business.scheduled.services.grms.FileHandlingSupport.findIncomingElectronicFiles(FileHandlingSupport.java:120)
...
"STARS Scheduler_Worker-4":
at
org.apache.commons.vfs2.provider.sftp.SftpFileSystem.putChannel(SftpFileSystem.java:350)
- waiting to lock <0x000000008a9806b8> (a
org.apache.commons.vfs2.provider.sftp.SftpFileSystem)
at
org.apache.commons.vfs2.provider.sftp.SftpFileObject.statSelf(SftpFileObject.java:527)
- locked <0x000000008c239030> (a
org.apache.commons.vfs2.provider.sftp.SftpFileObject)
at
org.apache.commons.vfs2.provider.sftp.SftpFileObject.getPermissions(SftpFileObject.java:457)
- locked <0x000000008c239030> (a
org.apache.commons.vfs2.provider.sftp.SftpFileObject)
at
org.apache.commons.vfs2.provider.sftp.SftpFileObject.doIsWriteable(SftpFileObject.java:262)
at
org.apache.commons.vfs2.provider.AbstractFileObject.isWriteable(AbstractFileObject.java:1625)
at
org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(AbstractFileObject.java:1677)
at
au.net.synergy.wts.application.server.grms.GrmsSimulator.publishAsZip(GrmsSimulator.java:295)
...
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)