This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 211219 - Cancelling Maven download causes java.lang.ThreadDeath
Summary: Cancelling Maven download causes java.lang.ThreadDeath
Status: RESOLVED DUPLICATE of bug 197624
Alias: None
Product: projects
Classification: Unclassified
Component: Maven (show other bugs)
Version: 7.2
Hardware: PC Windows 7
: P3 normal (vote)
Assignee: Milos Kleint
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-04-16 06:40 UTC by mienamoo
Modified: 2012-04-16 22:56 UTC (History)
1 user (show)

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description mienamoo 2012-04-16 06:40:49 UTC
NetBeans build 201203280401
JDK 7u3 32-bit

I cancelled the Maven dependency download for a JEE application project, and got the following exception:


java.lang.ThreadDeath
	at org.netbeans.modules.maven.embedder.exec.ProgressTransferListener.checkCancel(ProgressTransferListener.java:113)
	at org.netbeans.modules.maven.embedder.exec.ProgressTransferListener.transferProgressed(ProgressTransferListener.java:183)
	at org.sonatype.aether.connector.wagon.WagonTransferListenerAdapter.transferProgress(WagonTransferListenerAdapter.java:69)
	at org.apache.maven.wagon.events.TransferEventSupport.fireTransferProgress(TransferEventSupport.java:121)
	at org.apache.maven.wagon.AbstractWagon.fireTransferProgress(AbstractWagon.java:515)
	at org.apache.maven.wagon.AbstractWagon.transfer(AbstractWagon.java:500)
	at org.apache.maven.wagon.AbstractWagon.getTransfer(AbstractWagon.java:339)
	at org.apache.maven.wagon.AbstractWagon.getTransfer(AbstractWagon.java:310)
	at org.apache.maven.wagon.AbstractWagon.getTransfer(AbstractWagon.java:287)
	at org.apache.maven.wagon.StreamWagon.getIfNewer(StreamWagon.java:97)
	at org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:61)
	at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$GetTask.run(WagonRepositoryConnector.java:601)
Caused: java.lang.IllegalStateException
	at org.sonatype.aether.util.concurrency.RunnableErrorForwarder.await(RunnableErrorForwarder.java:99)
	at org.sonatype.aether.connector.wagon.WagonRepositoryConnector.get(WagonRepositoryConnector.java:448)
	at org.sonatype.aether.impl.internal.DefaultMetadataResolver$ResolveTask.run(DefaultMetadataResolver.java:563)
	at org.sonatype.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:60)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
[catch] at java.lang.Thread.run(Thread.java:722)
Comment 1 Milos Kleint 2012-04-16 14:02:54 UTC
org.eclipse.aether.internal.impl.DefaultMetadataResolver seems to be using java.util.concurrent.ThreadPoolExecutor. That way in newly created/used threads the ThreadDeath exception thrown from our code inside, cannot be catched by our code on the outside.

a few possible solutions:

1. don't allow multiple threads in the affected code. the max number of threads is governed by a property in code:
ConfigUtils.getInteger( session, 4, "aether.metadataResolver.threads" );

2. before throwing ThreadDeath check first if we are on a thread with known context (progress handle) and only throw then. Please note that with the current aether code, the ThreadDeath exception would never be called inside this class, because all networking would be done in pooled threads.
Comment 2 Jesse Glick 2012-04-16 22:56:38 UTC

*** This bug has been marked as a duplicate of bug 197624 ***