)]}'
{
  "commit": "16af94c749b21a96585e6c3e8a3704fb850ff86d",
  "tree": "6a414aa159779570f92cd797d2dbe75c6de3d56e",
  "parents": [
    "5074514102c2ff177c7069151c2c4c7c6befbfc0"
  ],
  "author": {
    "name": "jmmv",
    "email": "jmmv@google.com",
    "time": "Tue Apr 16 07:44:34 2019 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Tue Apr 16 07:46:58 2019 -0700"
  },
  "message": "Make sandbox symlink forest deletions asynchronous.\n\nEach sandbox action runs within a symlink forest that exists in a separate\nsubtree because we use a unique identifier for those subtrees.  Therefore\nit is unnecessary to delete those trees in the critical path.\n\nTree deletions can be very expensive, especially on macOS, so make them\nasynchronous if --experimental_sandbox_async_tree_delete_idle_threads is\ngiven.  When this flag is not zero, Bazel will schedule all deletions on\na separate low-priority thread while the build is running, and will then\nuse the requested number of threads once the build is done to quickly\ncatch up with an still-ongoing deletions.\n\nFor a large iOS build, this cuts down clean build times with sandboxed\nenabled significantly.  Helps more on machines with more cores:\n\n* On a Mac Pro 2013, the improvement is almost 20%:\n\n  standalone:      mean 2746.33, median 2736.00, stddev 33.07\n  sandboxed-async: mean 4394.67, median 4393.00, stddev 33.09\n  sandboxed-sync:  mean 5284.33, median 5288.00, stddev 20.17\n\n* On a MacBook Pro 2015, we see a more modest 10% improvement:\n\n  standalone:      mean 3418.33, median 3422.00, stddev 7.41\n  sandboxed-async: mean 5090.00, median 5086.00, stddev 40.92\n  sandboxed-sync:  mean 5694.67, median 5700.00, stddev 37.75\n\nPartially addresses https://github.com/bazelbuild/bazel/issues/7527.\n\nRELNOTES: None.\nPiperOrigin-RevId: 243805556\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "08dccc57e0d727e6d8f2e00bc0eb606d5ed09fb5",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/exec/SpawnRunner.java",
      "new_id": "23544726106cbb1f0daf7eeaef5b502529a3ad5c",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/exec/SpawnRunner.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f5ba4c0071794ebd6f9a1a6cdfae777ad9bbb330",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/exec/TreeDeleter.java"
    },
    {
      "type": "modify",
      "old_id": "f902cfac49f4715971a119bf78b29c82425a4efb",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/sandbox/AbstractContainerizingSandboxedSpawn.java",
      "new_id": "d776616ccf8db405ca833673de7b75694b467f28",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/sandbox/AbstractContainerizingSandboxedSpawn.java"
    },
    {
      "type": "modify",
      "old_id": "2829b64b0c10fcb0bb431b71ef0d37b30c75c5cd",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/sandbox/AbstractSandboxSpawnRunner.java",
      "new_id": "5999da513c3cd47a8cefab2cba16fd00631cf6cd",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/sandbox/AbstractSandboxSpawnRunner.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a05234858cb481562e7839a4099449de4366196a",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/sandbox/AsynchronousTreeDeleter.java"
    },
    {
      "type": "modify",
      "old_id": "935a8de5239e9f042d84423d88cab7ae423beb88",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/sandbox/BUILD",
      "new_id": "7b745bef2fc3c58d6f8444fa7a37b2999d1cf568",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/sandbox/BUILD"
    },
    {
      "type": "modify",
      "old_id": "765b11a7ca5fc2465e0b869d44a9bce30ef68083",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/sandbox/CopyingSandboxedSpawn.java",
      "new_id": "2fd1a94a528911e240dbd733ad8ad114bffa8c83",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/sandbox/CopyingSandboxedSpawn.java"
    },
    {
      "type": "modify",
      "old_id": "21eed10ec6ece1d52cd488041030c9590d17b1b5",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/sandbox/DarwinSandboxedSpawnRunner.java",
      "new_id": "0e32929e5602cce36d88313c0eeef5e3e5a8804c",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/sandbox/DarwinSandboxedSpawnRunner.java"
    },
    {
      "type": "modify",
      "old_id": "12223f8e43fc214aa7f774d8eb6096bcc3615379",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/sandbox/DockerSandboxedSpawnRunner.java",
      "new_id": "76df1d2990b0c30e1141866c900d763676fe498e",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/sandbox/DockerSandboxedSpawnRunner.java"
    },
    {
      "type": "modify",
      "old_id": "37672d68479a84964b1be63deae5dd28dbe701c2",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedSpawnRunner.java",
      "new_id": "4c687e37663eea7380065fb7f52203589a5dbe83",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedSpawnRunner.java"
    },
    {
      "type": "modify",
      "old_id": "4d3d85d63afe0984d8f6e0fb3d35090dd39eced8",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedStrategy.java",
      "new_id": "3a80e38522f998c6eb7a61e6715ccaf7332049b9",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/sandbox/LinuxSandboxedStrategy.java"
    },
    {
      "type": "modify",
      "old_id": "8401841cc0182ea0e8606f14c772d5b62dddf152",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/sandbox/ProcessWrapperSandboxedSpawnRunner.java",
      "new_id": "169497ec93ab29238b271f6623d09cd045a2b493",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/sandbox/ProcessWrapperSandboxedSpawnRunner.java"
    },
    {
      "type": "modify",
      "old_id": "22e3079a956d910a80d005726730f20c87248991",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/sandbox/SandboxModule.java",
      "new_id": "e02b0c206ed72bfd80625d9f554888e5e725bf02",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/sandbox/SandboxModule.java"
    },
    {
      "type": "modify",
      "old_id": "10a4e0615ba1dd07e2c5ad53d53deaa074c0840a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/sandbox/SandboxOptions.java",
      "new_id": "ed745d220d83330a803485e8975e037ece517d52",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/sandbox/SandboxOptions.java"
    },
    {
      "type": "modify",
      "old_id": "44e27c3b6b9be41fc85097827ecdde59495eae84",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/sandbox/SandboxfsSandboxedSpawn.java",
      "new_id": "ce922bb0c6fde56aadb14c5f502a1dbd770f255c",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/sandbox/SandboxfsSandboxedSpawn.java"
    },
    {
      "type": "modify",
      "old_id": "7ec23b5f7699a1a354b2920845e7ab3950b93c80",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/sandbox/SymlinkedSandboxedSpawn.java",
      "new_id": "ca8b32c290d9e246e40cb08ca218dc342bb65449",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/sandbox/SymlinkedSandboxedSpawn.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "301bcdf9a70414434432ae91dbe914189746ec3d",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/sandbox/SynchronousTreeDeleter.java"
    },
    {
      "type": "modify",
      "old_id": "911d48b734794c27af4ae4cd9bb0637f16a8615b",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/worker/WorkerExecRoot.java",
      "new_id": "9c5f6414baab6dae96e37f449ad5263600079acc",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/worker/WorkerExecRoot.java"
    },
    {
      "type": "modify",
      "old_id": "587b16ca0b3cb7cd2c3373d1744f40e95b566eee",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/skyframe/InvalidatingNodeVisitor.java",
      "new_id": "ea92bedf5465918051c90f2388f3a7117810b8ba",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/skyframe/InvalidatingNodeVisitor.java"
    },
    {
      "type": "modify",
      "old_id": "61b4633397a5090775cc3d8fbcae45bcccf7fdc8",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/sandbox/SandboxfsSandboxedSpawnTest.java",
      "new_id": "20eff2b1ddf065454f53dd0e8bc8aca786106756",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/sandbox/SandboxfsSandboxedSpawnTest.java"
    },
    {
      "type": "modify",
      "old_id": "d8a15f9c3a3d66056fb82ea6c7e3b52060fbc26f",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/sandbox/SymlinkedSandboxedSpawnTest.java",
      "new_id": "7b8e6f65df847d91fa3de0b1f9a27e9d36b65e26",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/sandbox/SymlinkedSandboxedSpawnTest.java"
    },
    {
      "type": "modify",
      "old_id": "0542cc56591666f09aa213143fcec4f1d765fcc7",
      "old_mode": 33261,
      "old_path": "src/test/shell/integration/sandboxing_test.sh",
      "new_id": "e7f88c342026903e657818839ee374923900538b",
      "new_mode": 33261,
      "new_path": "src/test/shell/integration/sandboxing_test.sh"
    }
  ]
}
