)]}'
{
  "commit": "4cd78810865fa8703b8a69753cf8d85291e34c6b",
  "tree": "97978f7a981ea72d921029fefe73716fec7c19bf",
  "parents": [
    "4c7399910246b4111940faf9c3a277b87e559b8a"
  ],
  "author": {
    "name": "Eric Anderson",
    "email": "ejona@google.com",
    "time": "Thu May 29 13:12:48 2025 -0700"
  },
  "committer": {
    "name": "Eric Anderson",
    "email": "ejona@google.com",
    "time": "Thu Jun 05 08:43:02 2025 -0700"
  },
  "message": "xds: Fix XdsDepManager aggregate cluster child ordering and loop detection\n\nThe children of aggregate clusters have a priority order, so we can\u0027t\never throw them in an ordinary set for later iteration.\n\nThis now detects recusion limits only after subscribing, but that\nmatches our existing behavior in CdsLoadBalancer2. We don\u0027t get much\nvalue detecting the limit before subscribing and doing so makes watcher\ntypes more different.\n\nLoops are still a bit broken as they won\u0027t be unwatched when orphaned,\nas they will form a reference loop. In CdsLoadBalancer2, duplicate\nclusters had duplicate watchers so there was single-ownership and\nreference cycles couldn\u0027t form. Fixing that is a bigger change.\n\nIntermediate aggregate clusters are now included in XdsConfig, just for\nsimplicity. It doesn\u0027t hurt anything whether they are present or\nmissing. but it required updates to some tests.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ec8f3dc076d9c3e6c8b08ece5fde801cfffcf30e",
      "old_mode": 33188,
      "old_path": "xds/src/main/java/io/grpc/xds/XdsConfig.java",
      "new_id": "1f464aa13215f708011775636a7280a616d4f421",
      "new_mode": 33188,
      "new_path": "xds/src/main/java/io/grpc/xds/XdsConfig.java"
    },
    {
      "type": "modify",
      "old_id": "d786e525c0c73e803f887edc585c0b600c7e9651",
      "old_mode": 33188,
      "old_path": "xds/src/main/java/io/grpc/xds/XdsDependencyManager.java",
      "new_id": "7bbd0064ed4bed23ffd156851867d16317eb3f33",
      "new_mode": 33188,
      "new_path": "xds/src/main/java/io/grpc/xds/XdsDependencyManager.java"
    },
    {
      "type": "modify",
      "old_id": "14f554412a8fa39e4e3400d165800a2dd985961f",
      "old_mode": 33188,
      "old_path": "xds/src/test/java/io/grpc/xds/XdsDependencyManagerTest.java",
      "new_id": "da960e1e1336b3ea799ed52061a8ee5cac5d0768",
      "new_mode": 33188,
      "new_path": "xds/src/test/java/io/grpc/xds/XdsDependencyManagerTest.java"
    }
  ]
}
