)]}'
{
  "commit": "886ac5a0761e7dfb83b79e3519a6408e11aaa9ca",
  "tree": "bbd934c474cb153fa4a2da9278e77b367fc085ac",
  "parents": [
    "4762f876f4d43c4c8853d8887f9b110fe25777e6"
  ],
  "author": {
    "name": "Daniel Santiago Rivera",
    "email": "danysantiago@google.com",
    "time": "Fri Aug 07 11:24:10 2026 -0400"
  },
  "committer": {
    "name": "Android Build Coastguard Worker",
    "email": "android-build-coastguard-worker@google.com",
    "time": "Wed Aug 12 13:26:47 2026 -0700"
  },
  "message": "Mark suspend DAO @Transaction delegates as external operations.\n\nA @Transaction delegate in a DAO has user-code that might switch dispatchers and cause databases with a passthrough pool (AndroidSQLiteDriver) to deadlock due to a change of thread. There an optimization to not hop to the transaction thread for \u0027internal\u0027 Room operations but that is only safe knowing no dispatcher change occurs, something that can\u0027t be guaranteed with transaction delegates in DAOs.\n\nBug: 543285472\nTest: SuspendingQueryTest\nCherrypick-From: https://android-review.googlesource.com/q/commit:ebd4a3d8e835f6aae6f39d4ee313accbf6031e23\nMerged-In: I20a6ac10b9884691490860a02b7c1d2ec732642f\nChange-Id: I20a6ac10b9884691490860a02b7c1d2ec732642f\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2c56996290564c97d285decd8afbd024c031d8e2",
      "old_mode": 33188,
      "old_path": "room3/integration-tests/kotlintestapp/src/androidTest/java/androidx/room3/integration/kotlintestapp/test/SuspendingQueryTest.kt",
      "new_id": "8322af7789489ee6c4b0a732144472b13b55da60",
      "new_mode": 33188,
      "new_path": "room3/integration-tests/kotlintestapp/src/androidTest/java/androidx/room3/integration/kotlintestapp/test/SuspendingQueryTest.kt"
    },
    {
      "type": "modify",
      "old_id": "4b50966ebe92904423447fa178f36c2bc446f6d8",
      "old_mode": 33188,
      "old_path": "room3/room3-runtime/src/androidMain/kotlin/androidx/room3/coroutines/ThreadConfinedTransactionContext.android.kt",
      "new_id": "3bcf38d456ce5a576d5e7af7fbe6358dac3bfb6a",
      "new_mode": 33188,
      "new_path": "room3/room3-runtime/src/androidMain/kotlin/androidx/room3/coroutines/ThreadConfinedTransactionContext.android.kt"
    },
    {
      "type": "modify",
      "old_id": "bfb1f4086c7fbcd5c4a87c1054e19fe2af81d9f8",
      "old_mode": 33188,
      "old_path": "room3/room3-runtime/src/commonMain/kotlin/androidx/room3/util/DBUtil.kt",
      "new_id": "d09b21e8f55e13e374a5c311b2f42712ce28c9ed",
      "new_mode": 33188,
      "new_path": "room3/room3-runtime/src/commonMain/kotlin/androidx/room3/util/DBUtil.kt"
    }
  ]
}
