Return-Path: X-Original-To: apmail-maven-dev-archive@www.apache.org Delivered-To: apmail-maven-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id CE6CD10361 for ; Thu, 6 Feb 2014 20:38:20 +0000 (UTC) Received: (qmail 11302 invoked by uid 500); 6 Feb 2014 20:38:18 -0000 Delivered-To: apmail-maven-dev-archive@maven.apache.org Received: (qmail 11172 invoked by uid 500); 6 Feb 2014 20:38:18 -0000 Mailing-List: contact dev-help@maven.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Help: List-Post: List-Id: "Maven Developers List" Reply-To: "Maven Developers List" Delivered-To: mailing list dev@maven.apache.org Received: (qmail 11163 invoked by uid 99); 6 Feb 2014 20:38:18 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 06 Feb 2014 20:38:18 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of t.cservenak@gmail.com designates 209.85.215.45 as permitted sender) Received: from [209.85.215.45] (HELO mail-la0-f45.google.com) (209.85.215.45) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 06 Feb 2014 20:38:13 +0000 Received: by mail-la0-f45.google.com with SMTP id b8so1911311lan.18 for ; Thu, 06 Feb 2014 12:37:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:content-type; bh=gVnanikCK1mS+OxSImElVN7yVptvTTmexJ11s+SVKhQ=; b=LsNpZdihnP1yEhYAKQe+wAe6sLYBzaiFcdKUP4D7K1aVEjNpKNxUESKzP2qRbvByD/ gvvLMY1jOdTaBJM9i7AXW8Pd+mNquq3eqWrkVXUYniey5mRo7Oi4BiIks4NddPAIXedB CW2PcqBIYzR7oiIAhZd2zu93mVrfg5J73N/k/o1JaYrQ6hZQxUxd4QLgaFXV4X0EBv6I K/4fy8fW6eimwKqk07TlobnilZGr3LKHvhjCw71ol5b+VAhuES+e0j7zW91kri2Hyhf7 Fv1350VYMdZBA0XLFE6bPtY4etzf6CnAm+WeAeIpNcBJ6VL1qTfBsNaNGnMW334kAf9K ny5w== X-Received: by 10.112.88.233 with SMTP id bj9mr6869515lbb.10.1391719072374; Thu, 06 Feb 2014 12:37:52 -0800 (PST) MIME-Version: 1.0 Sender: t.cservenak@gmail.com Received: by 10.112.53.1 with HTTP; Thu, 6 Feb 2014 12:37:32 -0800 (PST) In-Reply-To: <64F8CBFC-D834-4A0C-AE96-197F6DCB30FB@takari.io> References: <64F8CBFC-D834-4A0C-AE96-197F6DCB30FB@takari.io> From: =?UTF-8?B?VGFtw6FzIENzZXJ2ZW7DoWs=?= Date: Thu, 6 Feb 2014 21:37:32 +0100 X-Google-Sender-Auth: SD9eUvzkj1A60OlOeZKFUDZ7nF0 Message-ID: Subject: Re: Further cleanup of Builders (extension of MNG-5575) To: Maven Developers List Content-Type: multipart/alternative; boundary=001a11c36ad4efa2af04f1c2d814 X-Virus-Checked: Checked by ClamAV on apache.org --001a11c36ad4efa2af04f1c2d814 Content-Type: text/plain; charset=UTF-8 Jason, a bit off topic, but you mention that "if last reactorProject" type logic breaks badly in parallel mode. Any pointers how to fix/replace it? Thanks, ~t~ On Thu, Feb 6, 2014 at 4:05 PM, Jason van Zyl wrote: > Hi, > > I made a first pass at coalescing the logic for a specific way to build > (single threaded, multi threaded, weave) into its own implementation but > there is still much cleanup to be done. This was pure refactoring and there > isn't much functional change aside from adding a command line parameter to > specify the id of a specific builder if you have your own implementation. > I'm using this capability for an aggressive mode of parallelization and > while that works the core is still a bit of a mess, and the signature for a > Builder still isn't very nice. It should ultimately become: > > builder.build( session ); > > or if we ultimately make the session immutable (which would be nice > because in any parallel mode it has to be cloned for safety which is > expensive) > > build.build( session, mutableDataThatCanPotentiallyBeSharedBetweenProjects > ) > > Right now the weave mode code has been conflated into much of the other > code and it should be contained to its implementation. Ideally a builder > gets the projects to build and the task segments to execute (clean install) > and the rest is up to the implementation. All scheduling information, > specific metrics, particulars about the order of execution should all be > local to the implementation. Now that there is a clean spot at the end of > the build that you can attach to the ordering of execution that occurs in a > Builder won't affect code that takes advantage of this. Though code using > the "if last reactorProject" type logic need to be change as that breaks > badly in parallel mode. The projects to built are already stored in the > session, we can probably store the task segments there as well to try and > reduce the signature of a Builder. > > I would like to start the next phase by removing the weave mode code. I > don't think it's really a viable model for execution, and even if it was a > cleaner implementation can be made but I don't think anyone is really using > it to be honest. If your projects are modularized properly you will be > rewarded in any parallel mode. I think the weave mode would just encourage > poor structuring and ultimately not much gain because even if you can move > a little bit ahead in the build and do a few segments in a few more > projects you're still going to get blocked by the critical path and if you > don't clean that up you're screwed anyway. The second you clean that up any > parallelized mode you will be rewarded and the complexity of the weave mode > for possibly a slight gain is not worth it. > > At any rate there is a lot more cleanup to do but I would like to start by > removing the weave mode. Really this is up to Kristian, but it will help me > greatly clean up the rest of the code. > > Thanks, > > Jason > > ---------------------------------------------------------- > Jason van Zyl > Founder, Apache Maven > http://twitter.com/jvanzyl > http://twitter.com/takari_io > --------------------------------------------------------- > > First, the taking in of scattered particulars under one Idea, > so that everyone understands what is being talked about ... Second, > the separation of the Idea into parts, by dividing it at the joints, > as nature directs, not breaking any limb in half as a bad carver might. > > -- Plato, Phaedrus (Notes on the Synthesis of Form by C. Alexander) > > > > > > > > > > --001a11c36ad4efa2af04f1c2d814--