I think I'll manage on my own, but thanks for the offer, will keep it in mind. Hopefully it will be easy to fix, I will have a look at it tonight and let you guys know.
On Tue, Jun 25, 2013 at 12:00 PM, Luke Daley <luke.da...@gradleware.com>wrote: > > On 25/06/2013, at 9:09 AM, Marcin Erdmann <marcin.erdm...@proxerd.pl> > wrote: > > > > > > > > > On Tue, Jun 25, 2013 at 5:57 AM, Adam Murdoch < > adam.murd...@gradleware.com> wrote: > > > > This is merged now. > > > > Got super excited and wanted to try it out using a nightly build but got > it to throw an IndexOutOfBoundsException when: > > - b depends on a > > - a is finalized by c > > - b is finalized by c > > Just the regular start server -> run integration test -> shutdown server > scenario... This is really bad, wonder how I got such a common use case > wrong, the coverage seemed to be really good, yet it still happened. I will > work on a pull request for that tonight. > > We are cutting RC-1 early next week. It would be good if we good at least > get some assessment of this done before then so we know the risks. > > If you want some extra eyes on it let me know and I can help out. > > > > > > > @Marcin, are you interested in adding support for 'shouldRunAfter' task > rules, to round things out? > > > > The main use case for this is to provide feedback as early as possible > during the build without adding any constraints on execution. Some examples: > > > > * run static analysis before tests > > * run unit tests before integration tests > > * run the unit tests for a project before compiling those projects that > depend on it > > > > The idea is to add a very weak task execution rule that only provides > hints for execution order and implies nothing else. So, if A shouldRunAfter > B then: > > > > 1. If A or B are not scheduled to run, ignore the rule. > > 2. Run A after B only if there are no other contradictory rules on the > ordering of A and B. That is, ignore cycles introduced by shouldRunAfter > rules. > > 3. The dependencies of A shouldRunAfter B and its dependencies. > > 4. If B fails or is not run, A can still be run. > > 5. If there is an idle worker thread and A is the only task whose > dependencies have been satisfied, then run A regardless of whether B has > been run or not. That is, prefer running the task over an idle worker > thread. > > > > Similar to mustRunAfter, but different in #2 and #5 above. > > > > There are plenty of other things we could also do with the task rules, > if you're interested in any of this: > > > > * Move the task rules to a specific namespace rather than have the > methods directly on Task. > > * Change Ant import to use shouldRunAfter to emulate Ant's target > ordering rules. > > * Improve finaliser support for tasks that are skipped. For example, if > a SourceTask has no source files, then don't run the finalisers for this > task. > > * Add a replacement for Task.enabled that does not run any of the > dependencies of the task that are not otherwise required. > > * Add conveniences to declare rules like 'shouldRunLast', > 'mustRunAsEarlyAsPossible', and so on that work on groups of tasks. > > * Handle setting up and tearing down test resources as required. For > example, create a database instance and start the web container if the > integration tests are to be run, and clean everything up when finished with > them. > > * Add resource usage aware parallel task scheduling. For example, don't > run two integration test suites in parallel if they both need exclusive > access to the database instance. > > * Add input and output file aware parallel task scheduling. For example, > don't run the clean and compile tasks in parallel. > > * Add support for using the output of a project to configure another > project, so that we schedule some tasks, run them, configure some things, > then schedule and run more tasks. > > * Add a replacement for `gradle.taskGraph.whenReady {}` that is > evaluated early in the configuration phase rather than at the end. > > * … > > > > Thanks for the writeup Adam. Feels like shouldRunAfter is a natural > continuation of my work around the area of task scheduling so I'll stick to > and have a crack at it whenever I have a spare evening. > > -- > Luke Daley > Principal Engineer, Gradleware > http://gradleware.com > > > --------------------------------------------------------------------- > To unsubscribe from this list, please visit: > > http://xircles.codehaus.org/manage_email > > >