From 6ae05b419922193c4c253e51c9a5e483e4f947fa Mon Sep 17 00:00:00 2001 From: janakr Date: Mon, 13 Aug 2018 16:13:42 -0700 Subject: Order Skyframe evaluations in a priority queue, with all children of a given node having the same priority, later enqueueings having higher priority, re-enqueued nodes having highest priority, and new root nodes having lowest priority. Experimentally, this can save significant RAM (1.4G in some builds!) while not affecting speed. Also do a semi-drive-by deleting ExecutorFactory parameter to AbstractQueueVisitor, since it was always AbstractQueueVisitor.EXECUTOR_FACTORY. PiperOrigin-RevId: 208560889 --- .../build/skyframe/InvalidatingNodeVisitor.java | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) (limited to 'src/main/java/com/google/devtools/build/skyframe/InvalidatingNodeVisitor.java') diff --git a/src/main/java/com/google/devtools/build/skyframe/InvalidatingNodeVisitor.java b/src/main/java/com/google/devtools/build/skyframe/InvalidatingNodeVisitor.java index 168ad23b95..ae9af7705e 100644 --- a/src/main/java/com/google/devtools/build/skyframe/InvalidatingNodeVisitor.java +++ b/src/main/java/com/google/devtools/build/skyframe/InvalidatingNodeVisitor.java @@ -22,7 +22,6 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Sets; import com.google.devtools.build.lib.concurrent.AbstractQueueVisitor; import com.google.devtools.build.lib.concurrent.ErrorClassifier; -import com.google.devtools.build.lib.concurrent.ExecutorParams; import com.google.devtools.build.lib.concurrent.ForkJoinQuiescingExecutor; import com.google.devtools.build.lib.concurrent.QuiescingExecutor; import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; @@ -35,7 +34,6 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CountDownLatch; -import java.util.concurrent.ExecutorService; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.TimeUnit; import javax.annotation.Nullable; @@ -88,15 +86,6 @@ public abstract class InvalidatingNodeVisitor { TGraph graph, DirtyTrackingProgressReceiver progressReceiver, InvalidationState state) { - this( - graph, progressReceiver, state, AbstractQueueVisitor.EXECUTOR_FACTORY); - } - - protected InvalidatingNodeVisitor( - TGraph graph, - DirtyTrackingProgressReceiver progressReceiver, - InvalidationState state, - Function executorFactory) { this.executor = new AbstractQueueVisitor( /*parallelism=*/ DEFAULT_THREAD_COUNT, @@ -104,7 +93,6 @@ public abstract class InvalidatingNodeVisitor { /*units=*/ TimeUnit.SECONDS, /*failFastOnException=*/ true, "skyframe-invalidator", - executorFactory, errorClassifier); this.graph = Preconditions.checkNotNull(graph); this.progressReceiver = Preconditions.checkNotNull(progressReceiver); @@ -357,9 +345,8 @@ public abstract class InvalidatingNodeVisitor { protected DirtyingNodeVisitor( QueryableGraph graph, DirtyTrackingProgressReceiver progressReceiver, - InvalidationState state, - Function executorFactory) { - super(graph, progressReceiver, state, executorFactory); + InvalidationState state) { + super(graph, progressReceiver, state); this.supportInterruptions = true; } -- cgit v1.2.3