Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
2ff3ee5
[ISSUE #15470] Upgrade JRaft to 1.4.1 with a vendored ConcurrentLinke…
KomachiSion Sep 10, 2026
74797bc
[ISSUE #15847] Restore public defaults for Agent and MCP resources (#…
KomachiSion Sep 14, 2026
46f26c1
[ISSUE #15844] Fix default protocol negotiator type (#15845)
INotWant Sep 14, 2026
822d73b
feat: increase derby startup-timeout (#15841)
Zhengcy05 Sep 15, 2026
842b8ef
[ISSUE #15850] Add driver-class-name sample for non-MySQL datasource …
yuzhiping Sep 15, 2026
572a375
[ISSUE #15628] Remove legacy Raft request parsing (#15854)
KomachiSion Sep 15, 2026
946138f
[ISSUE #15838] Clarify rollback confirmation for first-insert configu…
Ashfaqbs Sep 15, 2026
1c35f6c
[ISSUE #14804] Consolidate Agent and RAD models across APIs and SDKs …
KomachiSion Sep 16, 2026
d888f9f
[ISSUE #15853] Return schema in configuration detail APIs (#15858)
Zhengcy05 Sep 16, 2026
db888ba
[ISSUE #15851] Let datasource dialect plugins provide default JDBC dr…
yuzhiping Sep 18, 2026
39b4c7f
feat(naming): add DNS server support for service discovery (#15842)
ABin-Huang Sep 20, 2026
b6ca920
fix(core): map HEAD requests to GET in method cache (#15864)
KomachiSion Sep 20, 2026
d74b69f
[ISSUE #14804] Adapt A2A clients to RAD with transport negotiation (#…
KomachiSion Sep 20, 2026
2fb031a
[ISSUE #15866] Deregister ServerListChangeEvent subscriber on Securit…
nihongye Sep 20, 2026
b4fec02
Prepare 3.3.0-RC release (#15869)
KomachiSion Sep 21, 2026
2a5fe61
[ISSUE #15345] Return cached frontmatter in Skill list responses (#15…
Zhengcy05 Sep 23, 2026
1b6309f
[ISSUE #15872] fix(console-ui-next): render actual subscriber fields …
lzcGeek Sep 24, 2026
925bcce
[ISSUE #15836] Fix plugin availability RPC and core test initializati…
KomachiSion Oct 8, 2026
c78b80c
[ISSUE #15878] Upgrade AgentScope Java to 2.0.3 in Copilot (#15879)
neoLsH Oct 8, 2026
16e3fab
[ISSUE #15857] Exclude connection-based client from distro snapshot t…
zmz789 Oct 9, 2026
35b64d6
[ISSUE #12834] Verify history cleanup cutoff and batch limit (#15884)
hutiefang76 Oct 10, 2026
c65ece0
For #15900, correlate SDK HTTP requests with server context (#15901)
KomachiSion Oct 11, 2026
33c1de7
[ISSUE #15876] Fix ephemeral instance never re-registered after recon…
neoLsH Oct 12, 2026
0004ea9
[Enhancement] Support disabling config snapshots by property (#15871)
hutiefang76 Oct 12, 2026
80968f6
[ISSUE #15896] Migrate AgentScope stream() to streamEvents() in Copil…
neoLsH Oct 12, 2026
e9eefd9
For #15788, Fix Jackson 3-only client runtime (#15907)
KomachiSion Oct 13, 2026
1511b5a
fix: identity-only authorization for independent Console (#15908)
Zhengcy05 Oct 14, 2026
edd4b90
feat(dns): add SRV records, metrics, and hardened external DNS forwar…
ABin-Huang Oct 20, 2026
ad44e85
[ISSUE #14804] Improve Agent SDK discovery and Watch reliability (#15…
KomachiSion Oct 21, 2026
0b432d5
[ISSUE #15837] Add opt-in multi-context AOT initialization (#15933)
KomachiSion Oct 22, 2026
ef52650
[ISSUE #15837] Fix Native Maven build and distribution packaging (#15…
KomachiSion Oct 22, 2026
7c8f147
[ISSUE #15921] Add optional Jev relevance filtering to ARD Search (#1…
saynoword Oct 23, 2026
7f71d44
[ISSUE #15899] Support Chromium 90 in default console UI (#15916)
FOWEPJF255 Oct 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
13 changes: 12 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,10 +83,21 @@ jobs:
run: mvnd -B clean compile apache-rat:check checkstyle:check spotbugs:check spotless:check -e -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
- name: "Build and Test with Maven Daemon"
run: mvnd -B '-Prelease-nacos,!dev' clean install -Drat.skip=true -Dspotbugs.skip=true -DtrimStackTrace=false -U -e -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
- name: "Verify Native Build Integration on JDK"
run: python3 test/scripts/native-build-it.py --maven mvnd --work-dir "$RUNNER_TEMP/nacos-native-build-it"
- name: "Upload Native Build Integration Diagnostics"
if: failure()
uses: actions/upload-artifact@v4
with:
name: native-build-it-diagnostics
path: |
${{ runner.temp }}/nacos-native-build-it/*.log
${{ runner.temp }}/nacos-native-build-it/results.json
if-no-files-found: ignore
- name: "Upload coverage to Codecov"
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
verbose: true
files: ./core/target/site/jacoco/jacoco.xml,./plugin-default-impl/nacos-default-auth-plugin/target/site/jacoco/jacoco.xml,./plugin-default-impl/nacos-default-control-plugin/target/site/jacoco/jacoco.xml,./plugin-default-impl/nacos-default-datasource-plugin/nacos-datasource-plugin-base/target/site/jacoco/jacoco.xml,./plugin-default-impl/nacos-default-datasource-plugin/nacos-datasource-plugin-mysql/target/site/jacoco/jacoco.xml,./plugin-default-impl/nacos-default-datasource-plugin/nacos-datasource-plugin-derby/target/site/jacoco/jacoco.xml,./plugin-default-impl/nacos-default-datasource-plugin/nacos-datasource-plugin-postgresql/target/site/jacoco/jacoco.xml,./plugin-default-impl/nacos-default-datasource-plugin/nacos-datasource-plugin-oracle/target/site/jacoco/jacoco.xml,./config/target/site/jacoco/jacoco.xml,./auth/target/site/jacoco/jacoco.xml,./plugin/encryption/target/site/jacoco/jacoco.xml,./plugin/datasource/target/site/jacoco/jacoco.xml,./plugin/trace/target/site/jacoco/jacoco.xml,./plugin/config/target/site/jacoco/jacoco.xml,./plugin/auth/target/site/jacoco/jacoco.xml,./plugin/environment/target/site/jacoco/jacoco.xml,./plugin/control/target/site/jacoco/jacoco.xml,./lock/target/site/jacoco/jacoco.xml,./logger-adapter-impl/log4j2-adapter/target/site/jacoco/jacoco.xml,./logger-adapter-impl/logback-adapter-12/target/site/jacoco/jacoco.xml,./consistency/target/site/jacoco/jacoco.xml,./common/target/site/jacoco/jacoco.xml,./sys/target/site/jacoco/jacoco.xml,./ai/target/site/jacoco/jacoco.xml,./naming/target/site/jacoco/jacoco.xml,./client-basic/target/site/jacoco/jacoco.xml,./address/target/site/jacoco/jacoco.xml,./persistence/target/site/jacoco/jacoco.xml,./api/target/site/jacoco/jacoco.xml,./maintainer-client/target/site/jacoco/jacoco.xml,./prometheus/target/site/jacoco/jacoco.xml,./client/target/site/jacoco/jacoco.xml,./console/target/site/jacoco/jacoco.xml
files: ./bootstrap/target/site/jacoco/jacoco.xml,./core/target/site/jacoco/jacoco.xml,./plugin-default-impl/nacos-default-auth-plugin/target/site/jacoco/jacoco.xml,./plugin-default-impl/nacos-default-control-plugin/target/site/jacoco/jacoco.xml,./plugin-default-impl/nacos-default-datasource-plugin/nacos-datasource-plugin-base/target/site/jacoco/jacoco.xml,./plugin-default-impl/nacos-default-datasource-plugin/nacos-datasource-plugin-mysql/target/site/jacoco/jacoco.xml,./plugin-default-impl/nacos-default-datasource-plugin/nacos-datasource-plugin-derby/target/site/jacoco/jacoco.xml,./plugin-default-impl/nacos-default-datasource-plugin/nacos-datasource-plugin-postgresql/target/site/jacoco/jacoco.xml,./plugin-default-impl/nacos-default-datasource-plugin/nacos-datasource-plugin-oracle/target/site/jacoco/jacoco.xml,./config/target/site/jacoco/jacoco.xml,./auth/target/site/jacoco/jacoco.xml,./plugin/encryption/target/site/jacoco/jacoco.xml,./plugin/datasource/target/site/jacoco/jacoco.xml,./plugin/trace/target/site/jacoco/jacoco.xml,./plugin/config/target/site/jacoco/jacoco.xml,./plugin/auth/target/site/jacoco/jacoco.xml,./plugin/environment/target/site/jacoco/jacoco.xml,./plugin/control/target/site/jacoco/jacoco.xml,./lock/target/site/jacoco/jacoco.xml,./logger-adapter-impl/log4j2-adapter/target/site/jacoco/jacoco.xml,./logger-adapter-impl/logback-adapter-12/target/site/jacoco/jacoco.xml,./consistency/target/site/jacoco/jacoco.xml,./common/target/site/jacoco/jacoco.xml,./sys/target/site/jacoco/jacoco.xml,./ai/target/site/jacoco/jacoco.xml,./naming/target/site/jacoco/jacoco.xml,./client-basic/target/site/jacoco/jacoco.xml,./address/target/site/jacoco/jacoco.xml,./persistence/target/site/jacoco/jacoco.xml,./api/target/site/jacoco/jacoco.xml,./maintainer-client/target/site/jacoco/jacoco.xml,./prometheus/target/site/jacoco/jacoco.xml,./client/target/site/jacoco/jacoco.xml,./console/target/site/jacoco/jacoco.xml
13 changes: 13 additions & 0 deletions .github/workflows/it-new.yml
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,19 @@ jobs:
-Dnacos.agent.it.client.publication.capacity="$RAD_CLIENT_PUBLICATION_CAPACITY" \
-Dnacos.agent.it.client.subscription.capacity="$RAD_CLIENT_SUBSCRIPTION_CAPACITY"
- name: Run Jackson 3-only Client Tests
run: |
mvn -B -pl client-basic test -Pjackson3-only-test \
-Dnacos.client.json.adapter=jackson3
for adapter in auto jackson3; do
echo "Running Jackson 3-only SDK IT with adapter=$adapter"
mvn -B -pl test/java-sdk-test failsafe:integration-test failsafe:verify \
-Pjava-sdk-integration-test,jackson3-only-sdk-test \
-DskipTests=false -Dnacos.client.json.adapter="$adapter" \
-Dnacos.test.auth.enabled=true \
-Dnacos.test.auth.client.username="$NACOS_TEST_AUTH_CLIENT_USERNAME"
done
- name: Guard Auth Scopes After Java SDK Tests
run: |
mvn -B -pl test/openapi-test verify -Pintegration-test \
Expand Down
16 changes: 15 additions & 1 deletion .github/workflows/migration-it.yml
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,19 @@ jobs:
-Dit.test=A2aMigrationAdminApiOpenApiITCase \
-Dnacos.a2a.migration.cutover.phase=syncing

- name: Verify Native RAD Migration Admission
run: |
mvn -B -pl test/openapi-test verify -Pintegration-test \
-DskipTests=false \
-Dit.test=AgentMigrationClientOpenApiITCase \
-Dnacos.agent.migration.gate=blocked

- name: Resolve Isolated Released A2A SDK
run: |
mvn -B -f test/java-sdk-test/src/test/compatibility/pom.xml \
org.apache.maven.plugins:maven-dependency-plugin:3.8.1:build-classpath \
-Dmdep.outputFile="$GITHUB_WORKSPACE/target/ai-compatibility/legacy-classpath.txt"

- name: Run Historical A2A Migration Java SDK IT
run: |
mvn -B -pl test/java-sdk-test clean verify -Pjava-sdk-integration-test \
Expand All @@ -253,7 +266,8 @@ jobs:
run: |
mvn -B -pl test/java-sdk-test clean verify -Pjava-sdk-integration-test \
-DskipTests=false \
-Dit.test=AiTransportResourceMatrixJavaSdkITCase
-Dit.test=AiTransportResourceMatrixJavaSdkITCase \
-Dnacos.agent.migration.gate=blocked

- name: Install Historical A2A Cutover Blocker
run: |
Expand Down
81 changes: 81 additions & 0 deletions Codex/design/nacos-3.3-client-ai-api/CONSOLE_ERROR_VALIDATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# 独立 Console 错误码修复(CONSOLE-ERR-01)

Agent 模型及 Schema 改动已单独提交为 `757cd8daa`。本轮仅修复共享 Maintainer HTTP
异常传递;不改变 Agent/A2A 模型、业务流程、重试/重新登录/节点切换策略。

## 根因与修复

普通 HTTP 的非 200 响应由 AbstractResponseHandler 放入 HttpRestResult.message;
文件上传响应放入 data。原 ClientHttpProxy 仅尝试解析 data 的错误文本,并将所有错误
包装为普通 NacosException,丢失业务码。Console 统一异常处理器据此返回 30000。

复用 NacosApiException,补充接收原始业务码和摘要的构造函数。代理从两个响应入口
解析标准 Result 错误,在重试结束时保留异常类型。getErrCode 继续是 HTTP 状态,
getDetailErrCode 是业务码;getErrMsg 保留字符串详情,无详情时使用摘要。非标准错误沿用通用回退。

## 测试矩阵

| 层次 | 场景 | 验收 |
| --- | --- | --- |
| API UT | 新构造函数、未知业务码 | HTTP/业务码/摘要/详情独立保存 |
| Proxy UT | 普通 HTTP message、上传 data、23000/20004/50100/未知码 | 重试后仍是 NacosApiException,字段不丢失 |
| Proxy UT | 空/纯文本/非法 JSON/缺少或成功 code/非字符串 data | 可控回退;不误认成功为业务错误 |
| Proxy UT | 重试成功、重试耗尽、403 重新登录、5xx 节点切换、超时 | 保留原策略 |
| 兼容 UT | A2A 旧格式、Pipeline 旧路由、Config | HTTP 状态和旧字段错误匹配继续有效 |
| HTTP IT | 合并及独立 Console 的 Agent/A2A 原14项 | 三个失败转为通过,原断言不放宽 |
| HTTP IT | Config/Naming 代表场景,双部署 | 共享代理没有跨领域回归 |
| Maintainer IT | 全量默认和 Jackson 3 | 公共 SDK 调用/异常行为正确 |

本轮按共享错误传递影响面验证,Agent 模型矩阵已有前一提交的完整记录;不重复执行
无关的迁移、索引、Watch、UI 矩阵。独立 Console CI 部署任务仍可单独提交,不作为本次
错误修复的一部分。

## 实测结果

**三项目标错误已修复并通过验证;按用户要求单独提交,再纳入 Agent 模型整合 PR。**原失败和日志保留在
`/tmp/nacos-agent-json-cleanup/`,本轮证据存放于 `/tmp/nacos-agent-commit-console-fix/`。

| 验证 | 总数 | 通过 | 失败 | 跳过 |
| --- | ---: | ---: | ---: | ---: |
| API/Core UT | 18 | 18 | 0 | 0 |
| Maintainer 全量 UT | 368 | 368 | 0 | 0 |
| 合并 Console HTTP IT | 22 | 22 | 0 | 0 |
| 独立 Console HTTP IT | 22 | 21 | 1 | 0 |
| Maintainer 默认 adapter 全量 IT | 46 | 44 | 0 | 2 |
| Maintainer Jackson 3 全量 IT | 46 | 44 | 0 | 2 |

所有当前构件测试均无 error。两种 Console 部署中的 Agent/A2A 各14项全部通过,原来的
23000/20004/50100 三项断言没有放宽。每套 Maintainer 的2项跳过分别为已有 DAUTH-F04
和未启用的真实重启测试;没有执行故障恢复。全量 SDK 包含成功流程、鉴权、Multipart、
Config 未找到与 Naming 管理;本轮加强了 Agent 异常类型、HTTP 状态、业务码及摘要断言。

Spotless apply/check、61模块 release install、API/Core/Maintainer 的 RAT、Checkstyle、
SpotBugs 和 Spotless 均通过。运行包中的 API/Maintainer/AI/Console/Adaptor JAR 已逐个
比对当前构建产物。服务端、独立 Console 和对照 Console 三个测试进程均已停止。

证据:`fix-results.json`、`fix-static.log`、`test-summary.json`、`embedded-jars.json`、
`baseline-comparison.json`、`cleanup.json`、`baseline-cleanup.json`;每批 Failsafe/Surefire
XML 存放在 `reports/<label>/`。当前构件结果与对照构件结果分别计数。

## 旧构件对照与额外发现:CONSOLE-NAMING-01

为判断扩展回归中的 Naming 失败是否由本次修改引入,使用前一轮留存的原始发行包,
以独立 Console 方式连接同一个服务端、运行相同22项 HTTP IT。该旧构件结果为
18通过、4失败、0error:既有三项 Agent/A2A 错误码失败全部复现,Naming 也同样失败。
当前构件为21通过、1失败。旧/新 Maintainer JAR 哈希保存在 `baseline-build.json`。

唯一剩余失败为 `InstanceConsoleApiOpenApiITCase.testListUpdateAndDeletePersistentInstance`:
用 Admin API 将持久实例注册到自定义 cluster 后,Console 不传 cluster 列举实例,独立
部署返回 HTTP404、业务30000、`cluster DEFAULT is not found!`;合并部署通过。

链路:`InstanceRemoteHandler.listInstances` 将空 cluster 交给 Maintainer;
`NacosNamingMaintainerServiceImpl.listInstances` 把空值改成 `DEFAULT` 后调用 Admin API。
合并部署的 `InstanceInnerHandler` 则直接使用 Catalog 查询全部 cluster。这些生产文件本轮
未改。旧构件的同一失败和请求参数链路证明这是另一个已有的双部署语义差异;保留原 IT,
单独记录待修复,不扩大此次错误码透传的生产改动。此处30000是上游实际返回的业务码,
与被修复的23000/20004/50100丢失不是同一问题。

独立 Console 的 CI 自动部署仍待单独处理;本次本地双部署通过不代表 CI 已覆盖该模式。

提交前再次执行 API/Core/Maintainer/SDK IT 模块 Spotless apply/check,随后相关异常、HTTP代理、
A2A/Pipeline兼容UT全部通过。记录位于 `/tmp/nacos-agent-pr-submit/`。
Loading
Loading