)]}'
{
  "commit": "25199e9df9b7f3f0db664883abb103a6abbfe120",
  "tree": "b8c8b1318abeeaa696732984cba11e2e64c8455a",
  "parents": [
    "7952afdd561e6a3f1b9130e753512261476b60f1"
  ],
  "author": {
    "name": "Eric Anderson",
    "email": "ejona@google.com",
    "time": "Wed Apr 23 09:18:08 2025 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Apr 23 09:18:08 2025 -0700"
  },
  "message": "xds: XdsDepManager should ignore updates after shutdown\n\nThis prevents a NPE and subsequent channel panic when trying to build a\nconfig (because there are no watchers, so waitingOnResource\u003d\u003dfalse)\nwithout any listener and route.\n```\njava.lang.NullPointerException: Cannot invoke \"io.grpc.xds.XdsDependencyManager$RdsUpdateSupplier.getRdsUpdate()\" because \"routeSource\" is null\n    at io.grpc.xds.XdsDependencyManager.buildUpdate(XdsDependencyManager.java:295)\n    at io.grpc.xds.XdsDependencyManager.maybePublishConfig(XdsDependencyManager.java:266)\n    at io.grpc.xds.XdsDependencyManager$EdsWatcher.onChanged(XdsDependencyManager.java:899)\n    at io.grpc.xds.XdsDependencyManager$EdsWatcher.onChanged(XdsDependencyManager.java:888)\n    at io.grpc.xds.client.XdsClientImpl$ResourceSubscriber.notifyWatcher(XdsClientImpl.java:929)\n    at io.grpc.xds.client.XdsClientImpl$ResourceSubscriber.lambda$onData$0(XdsClientImpl.java:837)\n    at io.grpc.SynchronizationContext.drain(SynchronizationContext.java:96)\n```\n\nI think this fully-fixes the problem today, but not tomorrow.\nsubscribeToCluster() is racy as well, but not yet used.\n\nThis was noticed when idleTimeout was firing, with some other code\ncalling getState(true) to wake the channel back up. That may have made\nthis panic more visible than it would be otherwise, but that has not\nbeen investigated.\n\nb/412474567",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8cd3119727d43aa616ca0ebc1342b298076144d6",
      "old_mode": 33188,
      "old_path": "xds/src/main/java/io/grpc/xds/XdsDependencyManager.java",
      "new_id": "d804954ecf9a1f692a2c42561f9828d9d9b6c228",
      "new_mode": 33188,
      "new_path": "xds/src/main/java/io/grpc/xds/XdsDependencyManager.java"
    },
    {
      "type": "modify",
      "old_id": "2af04a3aedfbcd528cbcd37219a7b8a621688af5",
      "old_mode": 33188,
      "old_path": "xds/src/test/java/io/grpc/xds/XdsDependencyManagerTest.java",
      "new_id": "1f3d8511ecc6fe9299e9d96513445835ec231c16",
      "new_mode": 33188,
      "new_path": "xds/src/test/java/io/grpc/xds/XdsDependencyManagerTest.java"
    }
  ]
}
