You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Michael Osipov (Jira)" <ji...@apache.org> on 2023/01/05 07:06:00 UTC

[jira] [Closed] (MNG-7536) Mojo execution locking in Maven 3.8.5 deadlocks my plugin

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

Michael Osipov closed MNG-7536.
-------------------------------
    Fix Version/s:     (was: waiting-for-feedback)
                       (was: wontfix-candidate)
       Resolution: Information Provided

I am glad that my thread name setter is of use for the community. 

> Mojo execution locking in Maven 3.8.5 deadlocks my plugin
> ---------------------------------------------------------
>
>                 Key: MNG-7536
>                 URL: https://issues.apache.org/jira/browse/MNG-7536
>             Project: Maven
>          Issue Type: Bug
>    Affects Versions: 3.8.5, 3.8.6
>            Reporter: David Elliott
>            Assignee: Guillaume Nodet
>            Priority: Major
>         Attachments: thread-example.tar.gz
>
>
> I have an existing mojo which stopped working in Maven 3.8.5 but had been working for years.  It looks like MNG-7156 is the cause.
> This mojo looks through its dependencies for other reactor projects, then looks at those projects for any plugin executions with a special phase name.  For all found executions, it executes them in a thread pool as part of some other processing it is doing.
> My plugin is proprietary and I am unable to share it, but I am able to share a much smaller example illustrating the problem.
> Being example code, it just spawns a thread to run the mojo executions and attempts to join the thread.  In the real code all executions for a given project will run sequentially on one thread, but each project's work will be scheduled concurrently on a thread pool.
> I didn't feel it was necessary to use a thread pool and schedule more than one project's executions for this example.  The deadlock will occur simply by running any mojo at all on a secondary thread while the calling thread is running a mojo waiting for that secondary thread to complete.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)