You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Hermann Josef Hill (JIRA)" <ji...@codehaus.org> on 2013/11/09 15:58:20 UTC

[jira] (MINSTALL-103) Concurrency problem with installAtEnd in parallel builds

Hermann Josef Hill created MINSTALL-103:
-------------------------------------------

             Summary: Concurrency problem with installAtEnd in parallel builds
                 Key: MINSTALL-103
                 URL: https://jira.codehaus.org/browse/MINSTALL-103
             Project: Maven Install Plugin
          Issue Type: Bug
          Components: install:install
    Affects Versions: 2.5.1
            Reporter: Hermann Josef Hill
         Attachments: install-plugin.patch

In the method {{execute()}} of the class {{InstallMojo}}, the counter {{readyProjectsCounter}} is used to find the last project to be installed. Unfortunately the counter is incremented *before* the installation request is added to the queued {{installRequests}}. This may lead to a race condition where request are added to {{installRequests}} after the execution of the requests. When this happens to a module to be installed, the installation won't happen.

Example scenario:
Think of a parallel build of a reactor with only two modules A and B where the execution of the install plugin for module A is stopped by a context change directly after the line that sets {{projectsReady}}. The counter {{readyProjectsCounter}} is now one step before the "finish line".

If the install plugin for module B is executed now, it will set {{projectsReady}}, enqueue its own installation request and then execute all enqueued installation requests. The installation request for A is not enqueued at this point, so it can't be executed - and the install plugin for module A won't execute it because it thinks "it will be executed later".

Granted, the window of vulnerability is rather small, but such bugs tend to bite you unexpectedly...


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira