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

Eirik Bakke resolved NETBEANS-1197.
-----------------------------------
       Resolution: Fixed
    Fix Version/s: Next

Marked as fixed as the corresponding pull request was reviewed and merged.

> ClosedByInterruptException in NetBeans classloader
> --------------------------------------------------
>
>                 Key: NETBEANS-1197
>                 URL: https://issues.apache.org/jira/browse/NETBEANS-1197
>             Project: NetBeans
>          Issue Type: Bug
>          Components: platform - Module System
>    Affects Versions: 9.0
>         Environment: Java: 10.0.2; OpenJDK 64-Bit Server VM 10.0.2+13, 
> Runtime: OpenJDK Runtime Environment 10.0.2+13, System: Windows 10 version 
> 10.0 running on amd64; Cp1252; en_US
>            Reporter: Eirik Bakke
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: Next
>
>          Time Spent: 3h 50m
>  Remaining Estimate: 0h
>
> I have just updated my NetBeans Platform application to use NetBeans 9.0-vc3. 
> There seems to be a new problem with NetBeans' JarClassLoader, whereby an 
> exception dialog pops up if a thread happens to be interrupted while the 
> classloader is loading a new class. The stack trace is as follows:
> {noformat}
> WARNING [org.netbeans.JarClassLoader]: looking up 
> com/ultorg/box/builders/EmptyBoxBuilder.class
> java.nio.channels.ClosedByInterruptException
>       at 
> java.base/java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:199)
>       at java.base/sun.nio.ch.FileChannelImpl.read(FileChannelImpl.java:228)
>       at 
> java.base/sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:65)
>       at 
> java.base/sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:109)
>       at 
> java.base/sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:103)
>       at 
> org.netbeans.JarClassLoader$DirSource.readClass(JarClassLoader.java:889)
> [catch] at 
> org.netbeans.JarClassLoader$Source.getClassData(JarClassLoader.java:371)
>       at org.netbeans.JarClassLoader.doLoadClass(JarClassLoader.java:213)
>       at 
> org.netbeans.ProxyClassLoader.selfLoadClass(ProxyClassLoader.java:234)
>       at org.netbeans.ProxyClassLoader.loadClass(ProxyClassLoader.java:162)
>       at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
>       at 
> com.ultorg.layout.internal.LayoutContext.emptyBoxBuilder(LayoutContext.java:393)
>       (...more calls in application code that's designed to be 
> interruptible...)
>       at 
> org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1418)
>       at 
> org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:45)
>       at org.openide.util.lookup.Lookups.executeWith(Lookups.java:278)
>       at 
> org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2033)
> {noformat}
> The application in question is multi-threaded, with a RequestProcessor task 
> running a visualization routine that can be interrupted and restarted in 
> response to a number of common UI events. In this case the visualization 
> routine is being started but immediately interrupted a few milliseconds 
> later, before the classloader has had time to finish its work.
> I suspect the problem was introduced when JarClassLoader was migrated to use 
> the new NIO-based InputStream implementations; see 
> [https://github.com/apache/incubator-netbeans/commit/4b82e6adb31e294c74fd2fa99779ce9e27ae6184]
>  . These streams support interruption, while the regular old FileInputStream 
> would just have its read() calls block and run to completion even when the 
> calling thread was interrupted. In JarClassLoader's case, it probably makes 
> sense to keep the old behavior: always finish loading the class even when the 
> current thread is interrupted.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org
For additional commands, e-mail: commits-h...@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to