)]}'
{
  "commit": "6efaf2e4cb7e8043d73674eace9e2bb775f7a171",
  "tree": "bdb989531e8347a94f291a96ce5b031668493fdb",
  "parents": [
    "1bb47327a04a684c4845db6d5e613386d351f6f4"
  ],
  "author": {
    "name": "Kannan J",
    "email": "kannanjgithub@google.com",
    "time": "Fri Nov 13 02:19:52 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Nov 13 07:49:52 2026 +0530"
  },
  "message": "core: Avoid PickFirstLeafLoadBalancer getting stuck in IDLE on address update (v1.86.x backport) (#13187)\n\nBackport of #13185 to v1.86.x.\n---\nWhen `PickFirstLeafLoadBalancer` is in IDLE and `requestConnection()` is\ninvoked (e.g., via `RequestConnectionPicker`), update\n`rawConnectivityState` to CONNECTING alongside\n`subchannelData.updateState(CONNECTING)`. This ensures that if\n`acceptResolvedAddresses()` runs before the subchannel asynchronously\nreports CONNECTING and removes the previous address, the load balancer\ncontinues connecting to the new address list instead of remaining wedged\nin IDLE.\n\nFixes #12395",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "819a6a1c0d876f157c6941482117f47e12764c6b",
      "old_mode": 33188,
      "old_path": "core/src/main/java/io/grpc/internal/PickFirstLeafLoadBalancer.java",
      "new_id": "8adb36abbdd9e170a038d9fb79af38f01c037724",
      "new_mode": 33188,
      "new_path": "core/src/main/java/io/grpc/internal/PickFirstLeafLoadBalancer.java"
    },
    {
      "type": "modify",
      "old_id": "538db3473c23610cb90c549c7d8710371c0c31a0",
      "old_mode": 33188,
      "old_path": "core/src/test/java/io/grpc/internal/PickFirstLeafLoadBalancerTest.java",
      "new_id": "ba3eff20832beb6e9d172f9945bcc4414c2cd8a2",
      "new_mode": 33188,
      "new_path": "core/src/test/java/io/grpc/internal/PickFirstLeafLoadBalancerTest.java"
    }
  ]
}
