)]}'
{
  "commit": "070081bc4f3ed1863a917a5c2ce6aa8b813e7649",
  "tree": "271080c5bcfa2b4b65cde21915cadfc9d26c56e1",
  "parents": [
    "e8ffec166131d27e47fbf21c9db9f6812051b15f"
  ],
  "author": {
    "name": "Bernardo Rufino",
    "email": "brufino@google.com",
    "time": "Thu Jan 18 15:10:41 2018 +0000"
  },
  "committer": {
    "name": "Bernardo Rufino",
    "email": "brufino@google.com",
    "time": "Thu Jan 18 19:20:49 2018 +0000"
  },
  "message": "Don\u0027t use transport binder with the lock held\n\nThere was a deadlock around the transport lock. We registered transports\nwith the transport lock held, this kicked-off transport onCreate()\nsynchronously, which called TransportManager\nupdateTransportAttributes(), which tried to acquire mentioned lock but\ncouldn\u0027t. This CL removes the lock for any call to the transport or\noperation that triggers a call to the transport (it was\nTransportClient.connect() or its variants).\n\nTest: Load GMSCore before fix, boot, register transports, check no ANR\nTest: m -j RunFrameworksServicesRoboTests\nTest: adb shell bmgr transport -c \u003ctransport\u003e, being registered \u0026 not\nBug: 72147303\nChange-Id: I72ca145d7fb73c0ef29c4aa1b620fea4969481db\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "30fd25a924845373cdceee978c51934cb99bfb38",
      "old_mode": 33188,
      "old_path": "services/backup/java/com/android/server/backup/TransportManager.java",
      "new_id": "5b901ee2b3da0b47a74090044c2b0ec36bdffe19",
      "new_mode": 33188,
      "new_path": "services/backup/java/com/android/server/backup/TransportManager.java"
    },
    {
      "type": "modify",
      "old_id": "cf0bc235dc10c2de3883ff01db8b8375024708a2",
      "old_mode": 33188,
      "old_path": "services/robotests/src/com/android/server/backup/TransportManagerTest.java",
      "new_id": "6753d73590d3390e89fdbebb0f3e0f5e20955ca3",
      "new_mode": 33188,
      "new_path": "services/robotests/src/com/android/server/backup/TransportManagerTest.java"
    }
  ]
}
