Cool. I've added one more commit with some docs.
On 02/04/13 01:16, Adam Murdoch wrote:
Thanks so much for this. I'll review it soon.
On 02/04/2013, at 8:52 AM, Marcin Erdmann <marcin.erdm...@proxerd.pl
<mailto:marcin.erdm...@proxerd.pl>> wrote:
You can find task finalisers implementation in the following branch:
https://github.com/erdi/gradle/tree/finaliser-tasks. I think I
implemented everything that was mentioned regarding task finalisers
in the previous threads on the topic as well as in the design docs
for reporting. The next step would obviously be adding docs but as
usual I would be grateful for a review of the code. Please let me
know if I missed something feature or test-wise.
Solutions I went for:
- finaliser information is lazy (using a
DefaultTaskDependencyInstance) and is only stored on finalised tasks
- new states for TaskInfo: MUST_RUN, SHOULD_RUN (renamed from READY),
SHOULD_NOT_RUN
- finaliser tasks and their dependencies added to the graph (when
finalised task is added) are in SHOULD_NOT_RUN state
- finaliser tasks (but not their dependencies) mustRunAfter finalised
tasks
- to make sure that finaliser tasks are executed they are being added
as an entry task (just like if they were passed to addToTaskGraph())
- if a finalised task did any work then all its finaliser tasks and
their dependencies are switched to MUST_RUN state
- when there were no failures all tasks that are in MUST_RUN and
SHOULD_RUN states are executed
- in case of a failure all tasks apart from those in MUST_RUN are
skipped from execution
- to force finaliser tasks to run ASAP a mustRunAfter ordering is
added from any task that depends on a finalised task to the finaliser
task; this should probably a should run after ordering, but there is
no such thing available yet; there has to be a decision made what is
more important - running those tasks ASAP or avoiding unnecessary
circural dependencies when a is being finalised by b, b depends on c
and c depends on a (currently an implicit mustRunAfter is added from
c to a causing circural dependency)
- build dashboard task is now a finaliser for all Reporting tasks
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email
--
Adam Murdoch
Gradle Co-founder
http://www.gradle.org
VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting
http://www.gradleware.com
Join us at the Gradle Summit 2013, June 13th and 14th in Santa Clara,
CA: http://www.gradlesummit.com