)]}'
{
  "commit": "ed3bf6b76b65fc76c1669ef70b71765844eb8a50",
  "tree": "d2a06e6da5242a0093c95431d02fc3b11a93b0ee",
  "parents": [
    "18f412e45b0cb7e782fdea66f32e79e2fc6f8881"
  ],
  "author": {
    "name": "jdcormie",
    "email": "jdcormie@google.com",
    "time": "Wed Oct 21 15:58:26 2026 -0700"
  },
  "committer": {
    "name": "John Cormie",
    "email": "johncormie@gmail.com",
    "time": "Thu Oct 22 10:21:25 2026 -0700"
  },
  "message": "binder: Avoid force-terminating BinderTransport on stale unregisterCall task\n\nWhen an ongoing call finishes and `unregisterCall()` observes\n`ongoingCalls.isEmpty()`, it schedules a task on\n`scheduledExecutorService` to finish transport shutdown if the transport\nis in `TransportState.SHUTDOWN`. However, `unregisterCall()` runs\nwithout holding `synchronized (this)` and may have scheduled this task\nwhile the transport is still in `TransportState.READY`. If a new stream\nis created before the transport enters `TransportState.SHUTDOWN`, the\npreviously scheduled task can execute after `shutdown()` and call\n`shutdownInternal(shutdownStatus, true)`, force-terminating the newly\nstarted call with `UNAVAILABLE: Channel shutdown invoked`.\n\nPass `forceTerminate \u003d false` to `shutdownInternal()` so it re-checks\n`ongoingCalls.isEmpty()` while holding `synchronized (this)`.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "cfb55f5f72abbb007ae019124689a12386aefcd8",
      "old_mode": 33188,
      "old_path": "binder/src/main/java/io/grpc/binder/internal/BinderTransport.java",
      "new_id": "db06d3052ab751f1b47ad2a778bd5f753c435c6a",
      "new_mode": 33188,
      "new_path": "binder/src/main/java/io/grpc/binder/internal/BinderTransport.java"
    },
    {
      "type": "modify",
      "old_id": "a8fbec75a5b3779e644482cb30eedc771231df91",
      "old_mode": 33188,
      "old_path": "binder/src/test/java/io/grpc/binder/internal/BinderServerTransportTest.java",
      "new_id": "6556a83de1e9b36b424b981aa6969f51249da1ce",
      "new_mode": 33188,
      "new_path": "binder/src/test/java/io/grpc/binder/internal/BinderServerTransportTest.java"
    }
  ]
}
