Automated rollback of commit a0a0d09debd090fbe74bba59b5d6d3107aaf97e9.

*** Reason for rollback ***

b/235458248

*** Original change description ***

Create a dedicated graph lookup reason for rewinding and add a wildcard to `createIfAbsentBatch` to match `getBatch`.

PiperOrigin-RevId: 453933527
Change-Id: If633aa38c86ebf17ab7d0eac16c03117a66546cb
diff --git a/src/main/java/com/google/devtools/build/skyframe/AbstractParallelEvaluator.java b/src/main/java/com/google/devtools/build/skyframe/AbstractParallelEvaluator.java
index 01e1f6b..385bd2b 100644
--- a/src/main/java/com/google/devtools/build/skyframe/AbstractParallelEvaluator.java
+++ b/src/main/java/com/google/devtools/build/skyframe/AbstractParallelEvaluator.java
@@ -989,7 +989,7 @@
     }
 
     Map<SkyKey, ? extends NodeEntry> additionalNodesToRestart =
-        evaluatorContext.getBatchValues(key, Reason.REWINDING, additionalKeysToRestart);
+        evaluatorContext.getBatchValues(key, Reason.INVALIDATION, additionalKeysToRestart);
 
     ArrayList<SkyKey> missingNodes = null;
     for (SkyKey keyToRestart : additionalKeysToRestart) {
diff --git a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java
index c3bf37e..1eafcdd 100644
--- a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java
+++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java
@@ -39,7 +39,7 @@
 
   @Override
   Map<SkyKey, ? extends NodeEntry> createIfAbsentBatch(
-      @Nullable SkyKey requestor, Reason reason, Iterable<? extends SkyKey> keys);
+      @Nullable SkyKey requestor, Reason reason, Iterable<SkyKey> keys);
 
   @Nullable
   @Override
diff --git a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java
index 6d8c9e1..be14b84 100644
--- a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java
+++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java
@@ -82,7 +82,7 @@
 
   @Override
   public Map<SkyKey, NodeEntry> createIfAbsentBatch(
-      @Nullable SkyKey requestor, Reason reason, Iterable<? extends SkyKey> keys) {
+      @Nullable SkyKey requestor, Reason reason, Iterable<SkyKey> keys) {
     Map<SkyKey, NodeEntry> result = CompactHashMap.createWithExpectedSize(Iterables.size(keys));
     for (SkyKey key : keys) {
       result.put(key, nodeMap.computeIfAbsent(key, newNodeEntryFunction));
diff --git a/src/main/java/com/google/devtools/build/skyframe/ProcessableGraph.java b/src/main/java/com/google/devtools/build/skyframe/ProcessableGraph.java
index 22e0d89..9503244 100644
--- a/src/main/java/com/google/devtools/build/skyframe/ProcessableGraph.java
+++ b/src/main/java/com/google/devtools/build/skyframe/ProcessableGraph.java
@@ -45,8 +45,7 @@
    * @param reason the reason the nodes are being requested.
    */
   Map<SkyKey, ? extends NodeEntry> createIfAbsentBatch(
-      @Nullable SkyKey requestor, Reason reason, Iterable<? extends SkyKey> keys)
-      throws InterruptedException;
+      @Nullable SkyKey requestor, Reason reason, Iterable<SkyKey> keys) throws InterruptedException;
 
   /**
    * Like {@link QueryableGraph#getBatchAsync}, except it creates a new node for each key not
diff --git a/src/main/java/com/google/devtools/build/skyframe/QueryableGraph.java b/src/main/java/com/google/devtools/build/skyframe/QueryableGraph.java
index a620d1f..d6da81d 100644
--- a/src/main/java/com/google/devtools/build/skyframe/QueryableGraph.java
+++ b/src/main/java/com/google/devtools/build/skyframe/QueryableGraph.java
@@ -53,7 +53,7 @@
    */
   Map<SkyKey, ? extends NodeEntry> getBatch(
       @Nullable SkyKey requestor, Reason reason, Iterable<? extends SkyKey> keys)
-      throws InterruptedException;
+          throws InterruptedException;
 
   /**
    * A version of {@link #getBatch} that returns an {@link InterruptibleSupplier} to possibly
@@ -154,12 +154,6 @@
     DONE_CHECKING,
 
     /**
-     * The node is being looked up so that it can be {@linkplain
-     * ThinNodeEntry.DirtyType#FORCE_REBUILD force rebuilt} by rewinding.
-     */
-    REWINDING,
-
-    /**
      * The node is being looked up to service {@link WalkableGraph#getValue},
      * {@link WalkableGraph#getException}, {@link WalkableGraph#getMissingAndExceptions}, or
      * {@link WalkableGraph#getSuccessfulValues}.
diff --git a/src/test/java/com/google/devtools/build/skyframe/DeterministicHelper.java b/src/test/java/com/google/devtools/build/skyframe/DeterministicHelper.java
index 9d4d934..f9922b9 100644
--- a/src/test/java/com/google/devtools/build/skyframe/DeterministicHelper.java
+++ b/src/test/java/com/google/devtools/build/skyframe/DeterministicHelper.java
@@ -115,7 +115,7 @@
 
     @Override
     public Map<SkyKey, ? extends NodeEntry> createIfAbsentBatch(
-        @Nullable SkyKey requestor, Reason reason, Iterable<? extends SkyKey> keys)
+        @Nullable SkyKey requestor, Reason reason, Iterable<SkyKey> keys)
         throws InterruptedException {
       return makeDeterministic(super.createIfAbsentBatch(requestor, reason, keys));
     }
diff --git a/src/test/java/com/google/devtools/build/skyframe/DeterministicInMemoryGraph.java b/src/test/java/com/google/devtools/build/skyframe/DeterministicInMemoryGraph.java
index 29cacf9..39b9169 100644
--- a/src/test/java/com/google/devtools/build/skyframe/DeterministicInMemoryGraph.java
+++ b/src/test/java/com/google/devtools/build/skyframe/DeterministicInMemoryGraph.java
@@ -30,7 +30,7 @@
 
   @Override
   public Map<SkyKey, ? extends NodeEntry> createIfAbsentBatch(
-      @Nullable SkyKey requestor, Reason reason, Iterable<? extends SkyKey> keys) {
+      @Nullable SkyKey requestor, Reason reason, Iterable<SkyKey> keys) {
     try {
       return super.createIfAbsentBatch(requestor, reason, keys);
     } catch (InterruptedException e) {
diff --git a/src/test/java/com/google/devtools/build/skyframe/NotifyingHelper.java b/src/test/java/com/google/devtools/build/skyframe/NotifyingHelper.java
index 1426139..53a3824 100644
--- a/src/test/java/com/google/devtools/build/skyframe/NotifyingHelper.java
+++ b/src/test/java/com/google/devtools/build/skyframe/NotifyingHelper.java
@@ -17,6 +17,7 @@
 import com.google.common.base.Joiner;
 import com.google.common.base.MoreObjects;
 import com.google.common.collect.Maps;
+import com.google.common.collect.Maps.EntryTransformer;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
 import com.google.devtools.build.lib.util.GroupedList;
 import com.google.devtools.build.lib.util.GroupedList.GroupedListHelper;
@@ -54,6 +55,15 @@
 
   protected final Listener graphListener;
 
+  protected final EntryTransformer<SkyKey, ThinNodeEntry, NodeEntry> wrapEntry =
+      new EntryTransformer<SkyKey, ThinNodeEntry, NodeEntry>() {
+        @Nullable
+        @Override
+        public NotifyingNodeEntry transformEntry(SkyKey key, @Nullable ThinNodeEntry nodeEntry) {
+          return wrapEntry(key, nodeEntry);
+        }
+      };
+
   NotifyingHelper(Listener graphListener) {
     this.graphListener = new ErrorRecordingDelegatingListener(graphListener);
   }
@@ -86,7 +96,8 @@
         notifyingHelper.graphListener.accept(key, EventType.GET_BATCH, Order.BEFORE, reason);
       }
       return Maps.transformEntries(
-          delegate.getBatch(requestor, reason, keys), notifyingHelper::wrapEntry);
+          delegate.getBatch(requestor, reason, keys),
+          notifyingHelper.wrapEntry);
     }
 
     @Nullable
@@ -118,13 +129,14 @@
 
     @Override
     public Map<SkyKey, ? extends NodeEntry> createIfAbsentBatch(
-        @Nullable SkyKey requestor, Reason reason, Iterable<? extends SkyKey> keys)
+        @Nullable SkyKey requestor, Reason reason, Iterable<SkyKey> keys)
         throws InterruptedException {
       for (SkyKey key : keys) {
         notifyingHelper.graphListener.accept(key, EventType.CREATE_IF_ABSENT, Order.BEFORE, null);
       }
       return Maps.transformEntries(
-          delegate.createIfAbsentBatch(requestor, reason, keys), notifyingHelper::wrapEntry);
+          delegate.createIfAbsentBatch(requestor, reason, keys),
+          notifyingHelper.wrapEntry);
     }
 
     @Override
diff --git a/src/test/java/com/google/devtools/build/skyframe/NotifyingInMemoryGraph.java b/src/test/java/com/google/devtools/build/skyframe/NotifyingInMemoryGraph.java
index 1ff2a7d..2a7ad76 100644
--- a/src/test/java/com/google/devtools/build/skyframe/NotifyingInMemoryGraph.java
+++ b/src/test/java/com/google/devtools/build/skyframe/NotifyingInMemoryGraph.java
@@ -26,7 +26,7 @@
 
   @Override
   public Map<SkyKey, ? extends NodeEntry> createIfAbsentBatch(
-      @Nullable SkyKey requestor, Reason reason, Iterable<? extends SkyKey> keys) {
+      @Nullable SkyKey requestor, Reason reason, Iterable<SkyKey> keys) {
     try {
       return super.createIfAbsentBatch(requestor, reason, keys);
     } catch (InterruptedException e) {