)]}'
{
  "commit": "822c37816ac669e51bec3853b41849a19ec5e230",
  "tree": "a12e1f438342aa9ec1846089fc255bf2abb18ad3",
  "parents": [
    "fb64609c3f1d3492f4d80807f5d91894fa147172"
  ],
  "author": {
    "name": "Nathan Harmata",
    "email": "nharmata@google.com",
    "time": "Mon Feb 27 21:55:56 2017 +0000"
  },
  "committer": {
    "name": "Yue Gan",
    "email": "yueg@google.com",
    "time": "Tue Feb 28 11:33:08 2017 +0000"
  },
  "message": "Reimplement blaze query using an async evaluation model. Use a concurrent backend for SkyQueryEnvironment\u0027s implementation in order to achieve parallelism.\n\nAdvantages:\n-New design has no flaws that the old design had.\n-Code is structured so that deadlocks due to thread starvation are impossible (yup!).\n\nDisadvantages:\n-The meat of this change needs to all be in a single CL because every single QueryFunction and QueryExpression needs to be rewritten in the async style.\n\nStill TODO:\n-Fully embrace the async model in all QueryFunctions (e.g. \u0027rdeps\u0027, \u0027allpaths\u0027).\n-Use concurrency in BlazeQueryEnvironment to achieve parallel evaluation for (non SkyQuery) \u0027blaze query\u0027 and genquery.\n\n--\nPiperOrigin-RevId: 148690279\nMOS_MIGRATED_REVID\u003d148690279\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c0fce7a8c4b5e579b84dc720866fcb9edba99180",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/bazel/commands/FetchCommand.java",
      "new_id": "b4674481d0f49ba1f97d8d7c4cf3b102c2e7ab9d",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/bazel/commands/FetchCommand.java"
    },
    {
      "type": "modify",
      "old_id": "e997b9f78d98b3a9e4ab00b24a8ce420445f0b1e",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/cmdline/TargetPattern.java",
      "new_id": "88f891c1f3100cfd0b9059da7f4e7a1478a607b0",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/cmdline/TargetPattern.java"
    },
    {
      "type": "modify",
      "old_id": "b6b384c882de7d31a09ae8572a7840003752d8c1",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/cmdline/TargetPatternResolver.java",
      "new_id": "38b866b68e1dbe45f449e0b67a9650871d0fd0fe",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/cmdline/TargetPatternResolver.java"
    },
    {
      "type": "modify",
      "old_id": "644adcf93d97a50e97ade9af26c65ccf3f9b88a3",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/AbstractBlazeQueryEnvironment.java",
      "new_id": "b0a18cccc9e54ca3a34ccef7629463a17bf0c8f4",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/AbstractBlazeQueryEnvironment.java"
    },
    {
      "type": "modify",
      "old_id": "867ec3d8bf6ebb31642edb34f15689a2df3af105",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java",
      "new_id": "de151aba0bf48276c65d64e0e83f919e7a0e8b37",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/BlazeQueryEnvironment.java"
    },
    {
      "type": "modify",
      "old_id": "30a27f8e63674da14a6035fc9d237c6d2486da7f",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/ParallelSkyQueryUtils.java",
      "new_id": "c3e632ebb420a89f876022a522c12cdb97a74116",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/ParallelSkyQueryUtils.java"
    },
    {
      "type": "modify",
      "old_id": "f8c83276276c6df67f970685a7d57dc239948c83",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/QueryEnvironmentFactory.java",
      "new_id": "d43f71beb2ead28d84b5acaa3d7d2a7ee46bebd0",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/QueryEnvironmentFactory.java"
    },
    {
      "type": "modify",
      "old_id": "79614c24a59c40b848ac51dca3f8e4aa6331cf9e",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/RBuildFilesFunction.java",
      "new_id": "e2fb0e4dfd6596c45624b868916a2223dd31e218",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/RBuildFilesFunction.java"
    },
    {
      "type": "modify",
      "old_id": "3e1410f5825f87d732d6dfecd119455d935549fb",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java",
      "new_id": "565b6ae519d6152cce57795bb0cdba0aa5a80e13",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "62fd91b56fde197f4cc82ed7daf2c4be086c13b3",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/AbstractQueryEnvironment.java"
    },
    {
      "type": "modify",
      "old_id": "adc12d278f5039eb7d4c4d9f6bf2aebbcfb6f188",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/AllPathsFunction.java",
      "new_id": "81be4c8ca268eb0906d7b034e824ffd21aad94cb",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/AllPathsFunction.java"
    },
    {
      "type": "modify",
      "old_id": "518b67497bd7be58e212d197ec3c661857a7e2ab",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/AllRdepsFunction.java",
      "new_id": "f800d804dcefb2b64c7708a4b79262c19a7b749d",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/AllRdepsFunction.java"
    },
    {
      "type": "modify",
      "old_id": "89374d0a94cabfbb6dfc723d9363aef6d415bb00",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/BinaryOperatorExpression.java",
      "new_id": "f9d20dbb196ec06c88389e2a02a421b826bf1380",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/BinaryOperatorExpression.java"
    },
    {
      "type": "modify",
      "old_id": "d2a2eb0fa8e3186b55cc22be34a65f4d8d43924a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/BuildFilesFunction.java",
      "new_id": "cbc0ae8d38f103444dd000a63ac667ff40c34bab",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/BuildFilesFunction.java"
    },
    {
      "type": "modify",
      "old_id": "0f4321145d2372f2e42fb8e76dfd80f2e404120c",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/Callback.java",
      "new_id": "51c51fa99b259ae7ed43393d9f7b77c0a885eb25",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/Callback.java"
    },
    {
      "type": "modify",
      "old_id": "5eca701702f6b6fb6cc616782f4d948f1bbb2a6e",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/DepsFunction.java",
      "new_id": "7317a350286ee680ea760d80deea591e5da24b15",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/DepsFunction.java"
    },
    {
      "type": "modify",
      "old_id": "a31196aba545c0e531ec627a63aaa151b265965d",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/FunctionExpression.java",
      "new_id": "85cfe9fddbbe725253bd19fe8ef789b4f2ad62e6",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/FunctionExpression.java"
    },
    {
      "type": "modify",
      "old_id": "4fa428adb5ee76910369af582f2a96ca839238a5",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/LabelsFunction.java",
      "new_id": "1d685735786069e815a1135690d66bd73bea6079",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/LabelsFunction.java"
    },
    {
      "type": "modify",
      "old_id": "64d94da19ab86031df408c0d89b8a88ed4a1ccdc",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/LetExpression.java",
      "new_id": "a7c3abeb6248711ecc014d9eb298c351f8aadfcc",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/LetExpression.java"
    },
    {
      "type": "modify",
      "old_id": "311a6afff593552cd71b90891c9140c4a5bafc29",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/LoadFilesFunction.java",
      "new_id": "80b912f6d761fa457715b9867a86c51e7a8a7c9d",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/LoadFilesFunction.java"
    },
    {
      "type": "modify",
      "old_id": "5d21c874befc422afb0044365e76e2e21088320c",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/OutputFormatterCallback.java",
      "new_id": "50708d68168459963f74eb9d7b647f92255f9787",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/OutputFormatterCallback.java"
    },
    {
      "type": "delete",
      "old_id": "6e22709deb46e147cd531473eb7163636f62f296",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/ParallelQueryUtils.java",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "879c9c1ddb8f69a4d5e42c40ac1e32f87f864248",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/QueryEnvironment.java",
      "new_id": "0c11eec8f2201d756aa67769eed45c9b722ca62c",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/QueryEnvironment.java"
    },
    {
      "type": "modify",
      "old_id": "e35e9e480733415766a8de3e94c1ed8ed8947222",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/QueryExpression.java",
      "new_id": "920722db4b9eb38f57db3755c65b1e8524c9037f",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/QueryExpression.java"
    },
    {
      "type": "delete",
      "old_id": "e6bdaef7a9f4c08f594b29619a53c5e6ebff9a45",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/QueryExpressionEvalListener.java",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "2d7be2ed743314f382e6adc1c9d8468f1ca398db",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/QueryUtil.java",
      "new_id": "afb4192128adace10540638fd218aa757f1180a2",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/QueryUtil.java"
    },
    {
      "type": "modify",
      "old_id": "7d691c0b04291ede54cf20a0ee3333827336fe72",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/RdepsFunction.java",
      "new_id": "82faf725383cf0e1838301cc1dd71ff51ae5a52a",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/RdepsFunction.java"
    },
    {
      "type": "modify",
      "old_id": "9dc75a43e140830f8527ce5472e7c30b7150726d",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/RegexFilterExpression.java",
      "new_id": "6b182ee7b103a9e8dba0b93bf8a77c9d689f7732",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/RegexFilterExpression.java"
    },
    {
      "type": "modify",
      "old_id": "ac4b460f40fa763f5ba8d20580f873302dedcf3e",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/SetExpression.java",
      "new_id": "e1eadf3aa5bcf6c735e416bfae0fa903d52226cc",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/SetExpression.java"
    },
    {
      "type": "modify",
      "old_id": "8dc04424686386e02759c4176f109293d115bc40",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/SomeFunction.java",
      "new_id": "4b07a99f07e3bf29dbcc1798924076db76604785",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/SomeFunction.java"
    },
    {
      "type": "modify",
      "old_id": "2d0df0ef59873a0323624f2bb5e4293739bf2ac7",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/SomePathFunction.java",
      "new_id": "229863c79a0850093758e77565173c999293786c",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/SomePathFunction.java"
    },
    {
      "type": "modify",
      "old_id": "eda505a7ce6248b23db9c6108bdc0b7150439e99",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/StreamableQueryEnvironment.java",
      "new_id": "bb67e93ad5cd37ede037088d8635c8d5377703d6",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/StreamableQueryEnvironment.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "68a79338b7024e961790d9cfd8c6de7dc9380123",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/SynchronizedDelegatingOutputFormatterCallback.java"
    },
    {
      "type": "modify",
      "old_id": "aeace9aa702f2ad93f7a9fbbfee191936a0626f3",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/TargetLiteral.java",
      "new_id": "733bffb065a44976022a1aca766db764c1fd537b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/TargetLiteral.java"
    },
    {
      "type": "modify",
      "old_id": "956e604a44d54d8d6ac64031d709e21751d70716",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/TestsFunction.java",
      "new_id": "d9ed576a5df0e2ba5771fb72b477ccee25890188",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/TestsFunction.java"
    },
    {
      "type": "delete",
      "old_id": "950335e38a916714356f2a3e135f8f62014a8395",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/ThreadSafeCallback.java",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "rename",
      "old_id": "747185582f80aad3f972208df7df4d7d7b1d65ed",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/ThreadSafeUniquifier.java",
      "new_id": "bc3eb59f84e42c08576a0c5521c6359ce0ab9c8c",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/ThreadSafeOutputFormatterCallback.java",
      "score": 74
    },
    {
      "type": "modify",
      "old_id": "ed2b2376fac705634f3d099959ea9784b7671d0e",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/Uniquifier.java",
      "new_id": "5f8faf56b1039b5423ce04657f52629726681a38",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/Uniquifier.java"
    },
    {
      "type": "modify",
      "old_id": "532f3313788309ab1566a0fd3edddf954730e98c",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/engine/VisibleFunction.java",
      "new_id": "b09910c7157e81fa84d4e7759db5b20846b800ef",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/engine/VisibleFunction.java"
    },
    {
      "type": "modify",
      "old_id": "18890c3eb65e04751c722be24c523407f50d1650",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/output/OutputFormatter.java",
      "new_id": "5c314b6a5c9f5f3df004d28829c0895cdb2605b8",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/output/OutputFormatter.java"
    },
    {
      "type": "modify",
      "old_id": "66e1182c743b69cd3f31b00cc0dc538aac006bf3",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/output/ProtoOutputFormatter.java",
      "new_id": "f966afb88db2b4a0fce564842319ea4df66fe11c",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/output/ProtoOutputFormatter.java"
    },
    {
      "type": "modify",
      "old_id": "193ef18cf7a080aafbd52e6300c25ee4f9c5da1b",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/query2/output/XmlOutputFormatter.java",
      "new_id": "6784ed3917cde4269ebf28b6796f9c1f84f68bb1",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/query2/output/XmlOutputFormatter.java"
    },
    {
      "type": "modify",
      "old_id": "589822b8050e13f7e8daa015dde635b414b75df0",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java",
      "new_id": "e01aa4fcbd80deb5cb14ba5d19e2a15560c75ce7",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java"
    },
    {
      "type": "modify",
      "old_id": "c52a3fe0d92218aa1c4fbd50a93398280467fe3f",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/runtime/commands/QueryCommand.java",
      "new_id": "118f529220143c83f1dd091dca5ae52970e6e1d0",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/runtime/commands/QueryCommand.java"
    },
    {
      "type": "modify",
      "old_id": "df6351a513914107ee088f2a341ca188b1551d55",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java",
      "new_id": "3b4b7687933ea38805ced7e73ee70b0b912bdfbf",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternFunction.java"
    },
    {
      "type": "modify",
      "old_id": "5c6bd42ee83f19762eed947f898b3d08b8c72067",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java",
      "new_id": "dc84f5b6a1bc5087d6ba12e7473a050e663d5ed5",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java"
    },
    {
      "type": "modify",
      "old_id": "bc74b7a16128a8550df5434ee97f4949a58209fa",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/util/BatchCallback.java",
      "new_id": "91b4be86abbd3098ecffa4f94a53f2d39c4fd6ea",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/util/BatchCallback.java"
    }
  ]
}
