)]}'
{
  "commit": "46706aef724c69016d9eae914cbe7a96349442c2",
  "tree": "fdf8821a7077f4c973d0806bcbf21fdba9e4f158",
  "parents": [
    "b9f8627289294407ef93efda894ce138f1881a38"
  ],
  "author": {
    "name": "janakr",
    "email": "janakr@google.com",
    "time": "Mon Apr 30 16:18:50 2018 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-piper@google.com",
    "time": "Mon Apr 30 16:19:58 2018 -0700"
  },
  "message": "Allow SkyFunctions to return a sentinel value indicating that all of a node\u0027s in-progress data should be forgotten, and its evaluation should be restarted from scratch, as if it were freshly created/dirtied. To guard against this happening unexpectedly, any such events are passed to a GraphInconsistencyReceiver, which can verify that the SkyFunction is behaving properly.\n\nThis is the first change in a series to permit action rewinding when it is discovered that a previously generated input file is no longer available. When an action detects that one of its inputs is unusable, it can return this sentinel value, causing it to be re-evaluated from scratch. Follow-up changes will make the node corresponding to the input, and the node corresponding to the action that generated the input, dirty when this happens, causing the upstream action to be re-run, regenerating the desired input.\n\nCurrently works for builds that do not keep edges, although follow-ups may make this possible for all builds.\n\nPiperOrigin-RevId: 194863097\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4f192ac798f7c84754975db6c7660a69c163224e",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java",
      "new_id": "1fa364f76b7b475a2b14e65aaf3520813e9adac6",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java"
    },
    {
      "type": "modify",
      "old_id": "0c63193fea441457a03efeb855c3e3f0dad07809",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java",
      "new_id": "d71830427ddd00f084c592bb334f93ad5ac2b78f",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java"
    },
    {
      "type": "modify",
      "old_id": "9526c855d9d75d09abd71d36a3d68fe19056be6b",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/skyframe/AbstractExceptionalParallelEvaluator.java",
      "new_id": "e4a4193d571deb2f3096c9f011853e24419a5d2d",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/skyframe/AbstractExceptionalParallelEvaluator.java"
    },
    {
      "type": "modify",
      "old_id": "6ed51ad3f8bfc3c8569f37f8557723433fc35e42",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/skyframe/AbstractParallelEvaluator.java",
      "new_id": "40ed157180c844fd1610ce19b4e6d2c8ce2928dc",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/skyframe/AbstractParallelEvaluator.java"
    },
    {
      "type": "modify",
      "old_id": "689b1cd9db2eab58a3b883f7d3e62b81a7bd218e",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/skyframe/DelegatingNodeEntry.java",
      "new_id": "95124ecb582d6d6593ebda48e532520504f1b0b4",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/skyframe/DelegatingNodeEntry.java"
    },
    {
      "type": "modify",
      "old_id": "d802c3d6732fe506b62eb132c2cf9a44a68ed9c1",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/skyframe/DirtyBuildingState.java",
      "new_id": "59a2e13db3056a6e4fffc96ef8e26c7ebda866a3",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/skyframe/DirtyBuildingState.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bba9264dacdd4b16ce1b55f530c3c083fea7d535",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/skyframe/GraphInconsistencyReceiver.java"
    },
    {
      "type": "modify",
      "old_id": "5d29b82758f22741572483dcd7b05a6eb1875d33",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java",
      "new_id": "923c71242a6322b475cd2a70133038544a582bc1",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java"
    },
    {
      "type": "modify",
      "old_id": "7b48275cbe55fea69c40151530bc347e70cb41c1",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/skyframe/InMemoryNodeEntry.java",
      "new_id": "5a13c57ce0e4a418be4ebdfdbb408779de090222",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/skyframe/InMemoryNodeEntry.java"
    },
    {
      "type": "modify",
      "old_id": "dac0927ca0d2cd6b0f2f16a4bb15d8d8a926deef",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/skyframe/MemoizingEvaluator.java",
      "new_id": "adff0d05898187233b7a3c744ede66844221da08",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/skyframe/MemoizingEvaluator.java"
    },
    {
      "type": "modify",
      "old_id": "02796390ef863172b49c1df4e844c35ff4ec4188",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/skyframe/NodeEntry.java",
      "new_id": "aee68b3b916b232424f0cb00b5573486ee770483",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/skyframe/NodeEntry.java"
    },
    {
      "type": "modify",
      "old_id": "cdcec829a9e552bbc0ee7a3031426d7b136cf182",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java",
      "new_id": "afd0279e5fd703941ecd68c8b15fc88c94e9d295",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java"
    },
    {
      "type": "modify",
      "old_id": "6860433c017e91a8f823dc4da991e8bf87096b01",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/skyframe/ParallelEvaluatorContext.java",
      "new_id": "14306d484b493f4638fff8cdcbf8d4520b97c150",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/skyframe/ParallelEvaluatorContext.java"
    },
    {
      "type": "modify",
      "old_id": "e1d16bb9ecaf9a854a836d26c4f5be37edbc133a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/skyframe/ReverseDepsUtility.java",
      "new_id": "5eea55a17bc62c629b28fdbfa1db6ebb1e66156f",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/skyframe/ReverseDepsUtility.java"
    },
    {
      "type": "modify",
      "old_id": "9975996af521cc14da5fc1341eeedf27dc0003d2",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/skyframe/SkyFunction.java",
      "new_id": "1ae29160b81e0be8394726db45627c6438bfabe0",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/skyframe/SkyFunction.java"
    },
    {
      "type": "modify",
      "old_id": "0f243c7aacd9b12b3a0a7b04a7cf0a953e0ff1a7",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/skyframe/EagerInvalidatorTest.java",
      "new_id": "d9ebca5ebca51e09a47dd1a8ef10205a72ab3d21",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/skyframe/EagerInvalidatorTest.java"
    },
    {
      "type": "modify",
      "old_id": "d2a5bfc6a6f3d3da9b9b6c08581df050335fdf54",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java",
      "new_id": "807563a1eb91a60e3263de0245bd23642d158198",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java"
    },
    {
      "type": "modify",
      "old_id": "19c78138f440a7789029d7637f547ff9050ada57",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/skyframe/ParallelEvaluatorTest.java",
      "new_id": "f2b5043a777267db84b1d01446a66be948f1f946",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/skyframe/ParallelEvaluatorTest.java"
    }
  ]
}
