From issues-return-142730-archive-asf-public=cust-asf.ponee.io@maven.apache.org Thu Dec 27 14:15:07 2018 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id 643FA180625 for ; Thu, 27 Dec 2018 14:15:07 +0100 (CET) Received: (qmail 96259 invoked by uid 500); 27 Dec 2018 13:15:01 -0000 Mailing-List: contact issues-help@maven.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@maven.apache.org Delivered-To: mailing list issues@maven.apache.org Received: (qmail 96248 invoked by uid 99); 27 Dec 2018 13:15:01 -0000 Received: from ec2-52-202-80-70.compute-1.amazonaws.com (HELO gitbox.apache.org) (52.202.80.70) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 27 Dec 2018 13:15:01 +0000 From: GitBox To: issues@maven.apache.org Subject: [GitHub] asfgit closed pull request #125: [MNG-5965] Parallel build multiplies work if multiple goals are given Message-ID: <154591650097.16213.5523800944020270612.gitbox@gitbox.apache.org> Date: Thu, 27 Dec 2018 13:15:00 -0000 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit asfgit closed pull request #125: [MNG-5965] Parallel build multiplies work if multiple goals are given URL: https://github.com/apache/maven/pull/125 This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/multithreaded/ConcurrencyDependencyGraph.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/multithreaded/ConcurrencyDependencyGraph.java index d7d764e4bc..5f7d7d1705 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/multithreaded/ConcurrencyDependencyGraph.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/multithreaded/ConcurrencyDependencyGraph.java @@ -61,12 +61,12 @@ public int getNumberOfBuilds() /** * Gets all the builds that have no reactor-dependencies * - * @return A list of all the initial builds + * @return A set of all the initial builds */ - public List getRootSchedulableBuilds() + public Set getRootSchedulableBuilds() { - List result = new ArrayList<>(); + Set result = new HashSet<>(); for ( ProjectSegment projectBuild : projectBuilds ) { if ( projectDependencyGraph.getUpstreamProjects( projectBuild.getProject(), false ).size() == 0 ) diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/multithreaded/MultiThreadedBuilder.java b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/multithreaded/MultiThreadedBuilder.java index 1414a12708..985c8a5255 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/multithreaded/MultiThreadedBuilder.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/multithreaded/MultiThreadedBuilder.java @@ -87,17 +87,18 @@ public void build( MavenSession session, ReactorContext reactorContext, ProjectB } ExecutorService executor = Executors.newFixedThreadPool( nThreads, new BuildThreadFactory() ); CompletionService service = new ExecutorCompletionService<>( executor ); - ConcurrencyDependencyGraph analyzer = - new ConcurrencyDependencyGraph( projectBuilds, session.getProjectDependencyGraph() ); // Currently disabled ThreadOutputMuxer muxer = null; // new ThreadOutputMuxer( analyzer.getProjectBuilds(), System.out ); for ( TaskSegment taskSegment : taskSegments ) { + ProjectBuildList segmentProjectBuilds = projectBuilds.getByTaskSegment( taskSegment ); Map projectBuildMap = projectBuilds.selectSegment( taskSegment ); try { + ConcurrencyDependencyGraph analyzer = new ConcurrencyDependencyGraph( segmentProjectBuilds, + session.getProjectDependencyGraph() ); multiThreadedProjectTaskSegmentBuild( analyzer, reactorContext, session, service, taskSegment, projectBuildMap, muxer ); if ( reactorContext.getReactorBuildStatus().isHalted() ) diff --git a/maven-core/src/test/java/org/apache/maven/lifecycle/internal/ConcurrencyDependencyGraphTest.java b/maven-core/src/test/java/org/apache/maven/lifecycle/internal/ConcurrencyDependencyGraphTest.java index 9ab0601162..8f419e582a 100644 --- a/maven-core/src/test/java/org/apache/maven/lifecycle/internal/ConcurrencyDependencyGraphTest.java +++ b/maven-core/src/test/java/org/apache/maven/lifecycle/internal/ConcurrencyDependencyGraphTest.java @@ -31,6 +31,7 @@ import org.apache.maven.project.MavenProject; import java.util.List; +import java.util.Set; import static org.apache.maven.lifecycle.internal.stub.ProjectDependencyGraphStub.*; @@ -51,9 +52,9 @@ public void testConcurrencyGraphPrimaryVersion() ConcurrencyDependencyGraph graph = new ConcurrencyDependencyGraph( getProjectBuildList( session ), dependencyGraph ); - final List projectBuilds = graph.getRootSchedulableBuilds(); + final Set projectBuilds = graph.getRootSchedulableBuilds(); assertEquals( 1, projectBuilds.size() ); - assertEquals( A, projectBuilds.get( 0 ) ); + assertEquals( A, projectBuilds.iterator().next() ); final List subsequent = graph.markAsFinished( A ); assertEquals( 2, subsequent.size() ); ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: users@infra.apache.org With regards, Apache Git Services