[ 
https://issues.apache.org/jira/browse/VFS-683?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Daryl Odnert updated VFS-683:
-----------------------------
    Description: 
In my application, I have two instances of the {{VFSClassLoader}}, each of 
which was being used in a distinct thread. Both {{VFSClassLoader}} instances 
refer to the same compressed file resource described by a {{FileObject}} that 
is passed to the class loader's constructor. Intermittently, the application 
throws an exception with the stack trace shown below. So, there seems to be 
either a race condition in the code or an undocumented assumption here. If it 
is unsupported for two {{VFSClassLoader}} instances to refer to the same 
resource (file), then that assumption should be documented. But if that is not 
the case, then there is a race condition bug in the implementation.
{noformat}
43789 WARN  {} c.a.e.u.PreferredPathClassLoader - While loading class 
org.apache.hive.jdbc.HiveDatabaseMetaData, rethrowing unexpected 
java.lang.NullPointerException: Inflater has been closed
java.lang.NullPointerException: Inflater has been closed
        at java.util.zip.Inflater.ensureOpen(Inflater.java:389)
        at java.util.zip.Inflater.inflate(Inflater.java:257)
        at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:152)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:284)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
        at 
org.apache.commons.vfs2.util.MonitorInputStream.read(MonitorInputStream.java:91)
        at org.apache.commons.vfs2.FileUtil.getContent(FileUtil.java:47)
        at org.apache.commons.vfs2.impl.Resource.getBytes(Resource.java:102)
        at 
org.apache.commons.vfs2.impl.VFSClassLoader.defineClass(VFSClassLoader.java:179)
        at 
org.apache.commons.vfs2.impl.VFSClassLoader.findClass(VFSClassLoader.java:150)
        at 
com.atscale.engine.utils.PreferredPathClassLoader.findClass(PreferredPathClassLoader.scala:54)
{noformat}

  was:
In my application, I had two instances of the {{VFSClassLoader}}, each of which 
was being used in a distinct thread. Both {{VFSClassLoader}} instances refer to 
the same compressed file resource described by a {{FileObject}} that is passed 
to the class loader's constructor. Intermittently, the application throws an 
exception with the stack trace shown below. So, there seems to be either a race 
condition in the code or an undocumented assumption here. If it is unsupported 
for two {{VFSClassLoader}} instances to refer to the same resource (file), then 
that assumption should be documented. But if that is not the case, then there 
is a race condition bug in the implementation.
{noformat}
43789 WARN  {} c.a.e.u.PreferredPathClassLoader - While loading class 
org.apache.hive.jdbc.HiveDatabaseMetaData, rethrowing unexpected 
java.lang.NullPointerException: Inflater has been closed
java.lang.NullPointerException: Inflater has been closed
        at java.util.zip.Inflater.ensureOpen(Inflater.java:389)
        at java.util.zip.Inflater.inflate(Inflater.java:257)
        at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:152)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:284)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
        at 
org.apache.commons.vfs2.util.MonitorInputStream.read(MonitorInputStream.java:91)
        at org.apache.commons.vfs2.FileUtil.getContent(FileUtil.java:47)
        at org.apache.commons.vfs2.impl.Resource.getBytes(Resource.java:102)
        at 
org.apache.commons.vfs2.impl.VFSClassLoader.defineClass(VFSClassLoader.java:179)
        at 
org.apache.commons.vfs2.impl.VFSClassLoader.findClass(VFSClassLoader.java:150)
        at 
com.atscale.engine.utils.PreferredPathClassLoader.findClass(PreferredPathClassLoader.scala:54)
{noformat}


> Thread safety issue in VFSClassLoader - NullPointerException thrown
> -------------------------------------------------------------------
>
>                 Key: VFS-683
>                 URL: https://issues.apache.org/jira/browse/VFS-683
>             Project: Commons VFS
>          Issue Type: Bug
>    Affects Versions: 2.2
>            Reporter: Daryl Odnert
>            Priority: Major
>
> In my application, I have two instances of the {{VFSClassLoader}}, each of 
> which was being used in a distinct thread. Both {{VFSClassLoader}} instances 
> refer to the same compressed file resource described by a {{FileObject}} that 
> is passed to the class loader's constructor. Intermittently, the application 
> throws an exception with the stack trace shown below. So, there seems to be 
> either a race condition in the code or an undocumented assumption here. If it 
> is unsupported for two {{VFSClassLoader}} instances to refer to the same 
> resource (file), then that assumption should be documented. But if that is 
> not the case, then there is a race condition bug in the implementation.
> {noformat}
> 43789 WARN  {} c.a.e.u.PreferredPathClassLoader - While loading class 
> org.apache.hive.jdbc.HiveDatabaseMetaData, rethrowing unexpected 
> java.lang.NullPointerException: Inflater has been closed
> java.lang.NullPointerException: Inflater has been closed
>       at java.util.zip.Inflater.ensureOpen(Inflater.java:389)
>       at java.util.zip.Inflater.inflate(Inflater.java:257)
>       at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:152)
>       at java.io.BufferedInputStream.read1(BufferedInputStream.java:284)
>       at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
>       at 
> org.apache.commons.vfs2.util.MonitorInputStream.read(MonitorInputStream.java:91)
>       at org.apache.commons.vfs2.FileUtil.getContent(FileUtil.java:47)
>       at org.apache.commons.vfs2.impl.Resource.getBytes(Resource.java:102)
>       at 
> org.apache.commons.vfs2.impl.VFSClassLoader.defineClass(VFSClassLoader.java:179)
>       at 
> org.apache.commons.vfs2.impl.VFSClassLoader.findClass(VFSClassLoader.java:150)
>         at 
> com.atscale.engine.utils.PreferredPathClassLoader.findClass(PreferredPathClassLoader.scala:54)
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to