You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by dw...@apache.org on 2021/03/24 15:22:01 UTC

[lucene] 04/06: Correct soft task ordering between tidy and any other dependency of regenerate.

This is an automated email from the ASF dual-hosted git repository.

dweiss pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 4c2de7ef43fd56b3f9f34701ee4378a7d5540abe
Author: Dawid Weiss <da...@carrotsearch.com>
AuthorDate: Wed Mar 24 15:38:34 2021 +0100

    Correct soft task ordering between tidy and any other dependency of regenerate.
---
 gradle/generation/jflex.gradle      |  2 +-
 gradle/generation/regenerate.gradle | 18 ++++++++++++++++--
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/gradle/generation/jflex.gradle b/gradle/generation/jflex.gradle
index f08d340..8f6f5ca 100644
--- a/gradle/generation/jflex.gradle
+++ b/gradle/generation/jflex.gradle
@@ -134,7 +134,7 @@ configure(project(":lucene:analysis:common")) {
     heapSize = "12g"
 
     doFirst {
-      logger.lifecycle("Regenerating UAX29URLEmailTokenizerImpl. This may take a long time (and requires tons of memory).")
+      logger.lifecycle("Regenerating UAX29URLEmailTokenizerImpl. This may take a long time (and requires ${heapSize} of memory!).")
     }
 
     doLast {
diff --git a/gradle/generation/regenerate.gradle b/gradle/generation/regenerate.gradle
index 322c27a..6e3f29a 100644
--- a/gradle/generation/regenerate.gradle
+++ b/gradle/generation/regenerate.gradle
@@ -30,12 +30,26 @@ configure([
       group "generation"
     }
 
-    // Make sure tidy dependency runs after any other generation task.
+    // Make sure 'tidy' and its dependencies run after any other task in the dependencies
+    // of 'regenerate'. This ensures proper execution ordering so that tidy tasks run
+    // after whatever has been generated is complete.
     afterEvaluate {
       Set<Task> deps = regenerate.getTaskDependencies().getDependencies(regenerate)
       def tidy = deps.find { it.name == "tidy" }
       if (tidy) {
-          tidy.mustRunAfter (deps - [tidy])
+        TaskDependency dep = tidy.taskDependencies
+        Set<Task> visited = new HashSet<>()
+        Queue<Task> queue = new ArrayDeque<>()
+        queue.add(tidy)
+        while (!queue.isEmpty()) {
+          Task t = queue.removeFirst()
+          if (visited.add(t)) {
+            queue.addAll(dep.getDependencies(t))
+          }
+        }
+
+        def otherDeps = deps - [tidy]
+        visited.each { Task t -> t.mustRunAfter(otherDeps) }
       }
     }
 }
\ No newline at end of file