)]}'
{
  "commit": "ca99a8c478eff08b34c6ddd3035ef37aca9754ee",
  "tree": "a92eb0a11a8d3476f94ee5f6d5704b835a91a622",
  "parents": [
    "2ee4f9b488e42587adbc92ea428062004715d3c6"
  ],
  "author": {
    "name": "Eric Anderson",
    "email": "ejona@google.com",
    "time": "Sun Jun 29 20:05:03 2025 -0700"
  },
  "committer": {
    "name": "Eric Anderson",
    "email": "ejona@google.com",
    "time": "Mon Jun 30 14:23:32 2025 +0000"
  },
  "message": "Fix RLS regressions from XdsDepMan conversion\n\n297ab05ef converted CDS to XdsDependencyManager. This caused three\nregressions:\n\n * CdsLB2 as a RLS child would always fail with \"Unable to find\n   non-dynamic root cluster\" because is_dynamic\u003dtrue was missing in\n   its service config\n * XdsNameResolver only propagated resolution updates when the clusters\n   changed, so a CdsUpdate change would be ignored. This caused a hang\n   for RLS even with is_dynamic\u003dtrue. For non-RLS the lack config update\n   broke the circuit breaking psm interop test. This would have been\n   more severe if ClusterResolverLb had been converted to\n   XdsDependenceManager, as it would have ignored EDS updates\n * RLS did not propagate resolution updates, so CdsLB2 even with\n   is_dynamic\u003dtrue the CdsUpdate for the new cluster would never arrive,\n   causing a hang\n\nb/428120265\nb/427912384\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "70833416d5dee571b45e093a39241e431623ed04",
      "old_mode": 33188,
      "old_path": "rls/src/main/java/io/grpc/rls/CachingRlsLbClient.java",
      "new_id": "7855468ee61e29068a015284eb4636047d12f536",
      "new_mode": 33188,
      "new_path": "rls/src/main/java/io/grpc/rls/CachingRlsLbClient.java"
    },
    {
      "type": "modify",
      "old_id": "4d6ceed923532851deaac4c612fbaa38b4a01cf4",
      "old_mode": 33188,
      "old_path": "rls/src/main/java/io/grpc/rls/LbPolicyConfiguration.java",
      "new_id": "226176d25ff60ecec129f60c2605c03e47f94648",
      "new_mode": 33188,
      "new_path": "rls/src/main/java/io/grpc/rls/LbPolicyConfiguration.java"
    },
    {
      "type": "modify",
      "old_id": "81ef8fdb31ac1e8e3a2a8dcc4f9690462d51f503",
      "old_mode": 33188,
      "old_path": "rls/src/main/java/io/grpc/rls/RlsLoadBalancer.java",
      "new_id": "6e59e867e3295426d87127df4901041661267489",
      "new_mode": 33188,
      "new_path": "rls/src/main/java/io/grpc/rls/RlsLoadBalancer.java"
    },
    {
      "type": "modify",
      "old_id": "c71e4dc255d34071729b20e37049e9bb57d797b1",
      "old_mode": 33188,
      "old_path": "xds/src/main/java/io/grpc/xds/XdsNameResolver.java",
      "new_id": "58d1ff769fe4af19aa98222119598cef73bbbde3",
      "new_mode": 33188,
      "new_path": "xds/src/main/java/io/grpc/xds/XdsNameResolver.java"
    },
    {
      "type": "modify",
      "old_id": "f5c40fa2117dd209f11a6486bbf94f8097b697f4",
      "old_mode": 33188,
      "old_path": "xds/src/test/java/io/grpc/xds/XdsNameResolverTest.java",
      "new_id": "7015a43f6ed55c1f983d8b5961e81b6845b86aa4",
      "new_mode": 33188,
      "new_path": "xds/src/test/java/io/grpc/xds/XdsNameResolverTest.java"
    }
  ]
}
