Tolerate null dirtyBuildingState when rewinding
Rewinding (and only rewinding) uses DirtyType.FORCE_REBUILD when marking
a node dirty. Rewinding may mark dirty newly created nodes which have not
been scheduled for evaluation. These nodes have no dirtyBuildingState.
RELNOTES: None.
PiperOrigin-RevId: 236856080
diff --git a/src/main/java/com/google/devtools/build/skyframe/InMemoryNodeEntry.java b/src/main/java/com/google/devtools/build/skyframe/InMemoryNodeEntry.java
index 02ecef8..50073cd 100644
--- a/src/main/java/com/google/devtools/build/skyframe/InMemoryNodeEntry.java
+++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryNodeEntry.java
@@ -529,8 +529,9 @@
return new MarkedDirtyResult(ReverseDepsUtility.getReverseDeps(this));
}
if (dirtyType.equals(DirtyType.FORCE_REBUILD)) {
- Preconditions.checkNotNull(dirtyBuildingState, this);
- dirtyBuildingState.markForceRebuild();
+ if (dirtyBuildingState != null) {
+ dirtyBuildingState.markForceRebuild();
+ }
return null;
}
// The caller may be simultaneously trying to mark this node dirty and changed, and the dirty