Uploaded image for project: 'Maven Deploy Plugin'
  1. Maven Deploy Plugin
  2. MDEPLOY-172

Concurrency problem with deployAtEnd in parallel builds

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.8.1
    • 2.8.2
    • deploy:deploy
    • None
    • Patch

    Description

      In the method execute() of the class DeployMojo, the counter readyProjectsCounter is used to find the last project to be deployed. Unfortunately the counter is incremented before the deployment request is added to the queued deployRequests. This may lead to a race condition where requests are added to deployRequests after the execution of the queued requests. When this happens to a module that should be deployed, it will not be deployed.

      Example scenario:
      Think of a parallel build of a reactor with only two modules A and B where the execution of the deploy 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 deploy plugin for module B is executed now, it will set projectsReady, enqueue its own deployment request and then execute all enqueued deployment requests. The deployment request for A is not enqueued at this point, so it can't be executed - and the deploy 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...

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            rfscholte Robert Scholte
            hjhill Hermann Josef Hill
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment