)]}'
{
  "commit": "c3a6fcb32b342d39bdf072c0fc8ea853a1aedc47",
  "tree": "69b6e5dec89354a493439350627e3b08698414ac",
  "parents": [
    "4bb2c2ff89f1d3d0a2b6e78af5e5d4ce3d22b07b"
  ],
  "author": {
    "name": "tjuwangning",
    "email": "78459090+tjuwangning@users.noreply.github.com",
    "time": "Tue Jul 29 11:35:53 2025 +0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Jul 29 11:35:53 2025 +0800"
  },
  "message": "Fix enhanced instance causes Spring Application startup failure (#762)\n\nRoot cause:\nSkyWalking\u0027s enhancement changes how Spring decides which proxy type to use. As mentioned in [#13221](https://github.com/apache/skywalking/issues/13221#issuecomment-2854170165), SkyWalking modifies Spring\u0027s `hasNoUserSuppliedProxyInterfaces()` to avoid affecting the choice of proxy type. But once Spring Retry has added `Retryable` to the list of interfaces, `hasNoUserSuppliedProxyInterfaces()` will find a user-supplied interface and return false, which changes the proxy type and leads to a startup failure.\n\nStarting in 4.0.2.RELEASE, Spring adds a new hook method `evaluateProxyInterfaces()`, which allows proxy-related flags (like proxyTargetClass) to be determined earlier in the lifecycle. We also need to enhance `evaluateProxyInterfaces()` (and its related callbacks) so that SkyWalking\u0027s EnhancedInstance interface is always ignored.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4f1bc7cee854ae792e5388e8477eaca5973e6351",
      "old_mode": 33188,
      "old_path": "CHANGES.md",
      "new_id": "116241e4d8a3468d4cf3084d11d50256345f2d36",
      "new_mode": 33188,
      "new_path": "CHANGES.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "943ac8983daaba21268013672cedd92dde0620a4",
      "new_mode": 33188,
      "new_path": "apm-sniffer/apm-sdk-plugin/spring-plugins/core-patch/src/main/java/org/apache/skywalking/apm/plugin/spring/patch/AutoProxyCreatorInterceptor.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d8840d4ef201304637d5f89870fdd9e9bf7ec940",
      "new_mode": 33188,
      "new_path": "apm-sniffer/apm-sdk-plugin/spring-plugins/core-patch/src/main/java/org/apache/skywalking/apm/plugin/spring/patch/ProxyProcessorSupportInterceptor.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "26e6147e698c52d60475568324476afdc4f1afde",
      "new_mode": 33188,
      "new_path": "apm-sniffer/apm-sdk-plugin/spring-plugins/core-patch/src/main/java/org/apache/skywalking/apm/plugin/spring/patch/define/AutoProxyCreatorInstrumentation.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "78de2969c2a8cee7661b0cf45252e35175ecfae4",
      "new_mode": 33188,
      "new_path": "apm-sniffer/apm-sdk-plugin/spring-plugins/core-patch/src/main/java/org/apache/skywalking/apm/plugin/spring/patch/define/ProxyProcessorSupportInstrumentation.java"
    },
    {
      "type": "modify",
      "old_id": "e51178b97ba7934c6975785297571ecde7f987fb",
      "old_mode": 33188,
      "old_path": "apm-sniffer/apm-sdk-plugin/spring-plugins/core-patch/src/main/resources/skywalking-plugin.def",
      "new_id": "3a21d2b4aa4ea0ebb01822f044ce19a0955002aa",
      "new_mode": 33188,
      "new_path": "apm-sniffer/apm-sdk-plugin/spring-plugins/core-patch/src/main/resources/skywalking-plugin.def"
    },
    {
      "type": "modify",
      "old_id": "012ab866ebc6ea8487f9991190230b64b93a487a",
      "old_mode": 33188,
      "old_path": "test/plugin/scenarios/spring-4.1.x-scenario/pom.xml",
      "new_id": "b6a8d68bb051ba4a7ca2dc6727a6f5f0e47182a3",
      "new_mode": 33188,
      "new_path": "test/plugin/scenarios/spring-4.1.x-scenario/pom.xml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4d7d40d153adab33550dc5f78862b944ee09717a",
      "new_mode": 33188,
      "new_path": "test/plugin/scenarios/spring-4.1.x-scenario/src/main/java/test/apache/skywalking/apm/testcase/spring3/config/RetryConfig.java"
    },
    {
      "type": "modify",
      "old_id": "c940d5425c8f8b9e8dfe2c3771eebfbef4bd67e6",
      "old_mode": 33188,
      "old_path": "test/plugin/scenarios/spring-4.1.x-scenario/src/main/java/test/apache/skywalking/apm/testcase/spring3/service/TestServiceBean.java",
      "new_id": "b99b6b38c372a11e0d1af072927984e2c3175d4f",
      "new_mode": 33188,
      "new_path": "test/plugin/scenarios/spring-4.1.x-scenario/src/main/java/test/apache/skywalking/apm/testcase/spring3/service/TestServiceBean.java"
    }
  ]
}
