)]}'
{
  "commit": "4465dae23de989f1452e93d0a88ac2a289103dd9",
  "tree": "7585db5fcecff1e2bd48e59ed6365c26ab89be95",
  "parents": [
    "97a5c8ce09254d42bafe75f784f1231a92827667"
  ],
  "author": {
    "name": "Benjamin Peterson",
    "email": "bp@benjamin.pe",
    "time": "Tue Mar 27 07:01:30 2018 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-piper@google.com",
    "time": "Tue Mar 27 07:03:04 2018 -0700"
  },
  "message": "Only allow regular files and directories spawn outputs to be uploaded to a remote cache.\n\nThe remote cache protocol only knows about regular files and\ndirectories. Currently, during action output upload, symlinks are\nresolved into regular files. This means cached \"executions\" of an\naction may have different output file types than the original\nexecution, which can be a footgun. This CL bans symlinks from cachable\nspawn outputs and fixes https://github.com/bazelbuild/bazel/issues/4840.\n\nThe interface of SpawnCache.CacheHandle.store is refactored:\n1. The outputs parameter is removed, since that can be retrieved from the underlying Spawn.\n2. It can now throw ExecException in order to fail actions.\n\nCloses #4902.\n\nChange-Id: I0d1d94d48779b970bb5d0840c66a14c189ab0091\nPiperOrigin-RevId: 190608852\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0a0a2a811b519a7ffc731f983191c54fe3111f5c",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategy.java",
      "new_id": "dd4cdea7f4b4fb415672357ab7b807724f628468",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategy.java"
    },
    {
      "type": "modify",
      "old_id": "1374b47fd84d7fc8174160c5821833f4853ea3ed",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/exec/SpawnCache.java",
      "new_id": "206aa58bfc4b7c76e8598a8f40328f54acc6f317",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/exec/SpawnCache.java"
    },
    {
      "type": "modify",
      "old_id": "be81ad6cfe6883727da3bd299cb90306ce280652",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/remote/AbstractRemoteActionCache.java",
      "new_id": "3bd935ca63769df08adc9b865cd7d37c32fea916",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/remote/AbstractRemoteActionCache.java"
    },
    {
      "type": "modify",
      "old_id": "3f5a48176b50d9f135b3794dc2bef60b519e6b64",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/remote/GrpcRemoteCache.java",
      "new_id": "a29d7d23c41a5c4bf77e57dc04187d60e5be4519",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/remote/GrpcRemoteCache.java"
    },
    {
      "type": "modify",
      "old_id": "6d766923ab682c89581eaa711842dca5c4f1177d",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnCache.java",
      "new_id": "9b515d16a13245e991d50c4221c078d0791f4f2f",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnCache.java"
    },
    {
      "type": "modify",
      "old_id": "fb9724bac9c31e3962c151fc7071e172d470fcfb",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnRunner.java",
      "new_id": "bb858a924ae7f521fc09f69bd8fbf310fb3a14ee",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/remote/RemoteSpawnRunner.java"
    },
    {
      "type": "modify",
      "old_id": "2d4f4e9bbc8885a110a787b912a021928da08ea9",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/remote/SimpleBlobStoreActionCache.java",
      "new_id": "845cf227b8a389f0b3f8da8611a28a251ed4bb6a",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/remote/SimpleBlobStoreActionCache.java"
    },
    {
      "type": "modify",
      "old_id": "afd31ccdebcdaaa08905bab0b803817df9b95a57",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/remote/util/DigestUtil.java",
      "new_id": "e4dc92a46f63397f942a1470bf907c767210c7da",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/remote/util/DigestUtil.java"
    },
    {
      "type": "modify",
      "old_id": "cd8c2c39098b2dba1436671dcc778c3fb1f1c29f",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategyTest.java",
      "new_id": "c4d3b5bdbb33b813b3714b5377daf101a5994dc9",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/exec/AbstractSpawnStrategyTest.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b4092a043ed1e33f754c8769efdbba5d05feeecb",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/remote/AbstractRemoteActionCacheTests.java"
    },
    {
      "type": "modify",
      "old_id": "4acdca8e3d8579bca642d4a31b00c38ef33fb5ec",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/remote/RemoteSpawnCacheTest.java",
      "new_id": "9faf8e4d5cf5424e4c17dd8e884023348640c274",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/remote/RemoteSpawnCacheTest.java"
    },
    {
      "type": "modify",
      "old_id": "fa21adab536ba8f3472c129f4b8b444881c6e207",
      "old_mode": 33261,
      "old_path": "src/test/shell/bazel/remote/remote_execution_http_test.sh",
      "new_id": "4bd27555f50c4f4e9fcf4bbfdc7aebec86ebfa4e",
      "new_mode": 33261,
      "new_path": "src/test/shell/bazel/remote/remote_execution_http_test.sh"
    },
    {
      "type": "modify",
      "old_id": "277b882c6dad5f35910f12f44c3bbdd716a1224a",
      "old_mode": 33261,
      "old_path": "src/test/shell/bazel/remote/remote_execution_test.sh",
      "new_id": "2f5c6ebc241c98dd65570bd709b2d40ccc407649",
      "new_mode": 33261,
      "new_path": "src/test/shell/bazel/remote/remote_execution_test.sh"
    },
    {
      "type": "modify",
      "old_id": "098b4adf4be831de8c94b9ffef6b56fdcc140edb",
      "old_mode": 33188,
      "old_path": "src/tools/remote/src/main/java/com/google/devtools/build/remote/worker/ExecutionServer.java",
      "new_id": "980822c5f21c60555a29e0c7ffbd2b08f7002a93",
      "new_mode": 33188,
      "new_path": "src/tools/remote/src/main/java/com/google/devtools/build/remote/worker/ExecutionServer.java"
    }
  ]
}
