[
http://jira.codehaus.org/browse/MNG-4738?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Benjamin Hanzelmann updated MNG-4738:
-------------------------------------
Attachment: MNG-4738-hanzelm2.diff
Sorry, wrong patch version - won't work with "mvn test", ThreadGroup may not be
daemonized. Next attachement. ;)
> DefaultArtifactResolver forks non-daemon threads
> ------------------------------------------------
>
> Key: MNG-4738
> URL: http://jira.codehaus.org/browse/MNG-4738
> Project: Maven 2 & 3
> Issue Type: Bug
> Components: Embedding
> Affects Versions: 3.0-beta-1
> Environment: Ubuntu Lucid, JDK 6u21
> Reporter: Jesse Glick
> Priority: Minor
> Attachments: MNG-4738-hanzelm.diff, MNG-4738-hanzelm2.diff,
> MNG-4738.diff
>
>
> I am working on embedding Maven 3 (beta 1). I ran into a problem with Maven
> execution hanging at the end.
> When we run a "process" in-VM, we try to emulate a forked Java as much as is
> reasonable. A new thread group is created, whatever work needs to be done is
> done from a new thread in that group, and then we wait for the "process" to
> end by checking that all non-daemon threads in the group have exited.
> In the case of Maven execution, typically DefaultArtifactResolver is called
> at some point. By default, this creates a ThreadPoolExecutor with 5
> non-daemon threads in it (which are created inside the thread group of the
> caller). Although all tasks are certainly completed by the end of the Maven
> run, these 5 threads remain alive, and so the thread group cannot be
> considered dead.
> It seems to me that DefaultArtifactResolver is at fault here. It should not
> be spawning non-daemon threads. Although it shuts down the executor upon
> being finalized, there is no guarantee of this happening in a timely manner.
> Since the tasks being run in the threads are only active within the dynamic
> scope of calls to resolve, it should be safe to mark the executor threads as
> daemon. I would be happy to supply a patch incl. test case if you agree with
> the premise.
> The workaround is to set maven.artifact.threads=1 before starting Maven
> execution, so that no threads need be spawned at all.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira