[ 
https://issues.apache.org/jira/browse/MNG-7536?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17653857#comment-17653857
 ] 

Michael Osipov commented on MNG-7536:
-------------------------------------

bq.  It's disappointing for a potential deadlock to be added to a point release 
and without clear notice of the circumstances that will lead to it, but what 
can we do?  Welcome to software engineering.  Sometimes well-meant changes have 
unforeseen side effects.

I absolutely agree with this. I left into this trap too as your can see with 
the 3.8.x and something you simply cannot foresee all possible pitfalls.

> 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
>             Fix For: waiting-for-feedback, wontfix-candidate
>
>         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)

Reply via email to