From fa17c01c3bbc8fa8b0cebc4724a277f55ba606e3 Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Mon, 3 Aug 2026 13:18:47 +0800 Subject: [PATCH] fix(agents): ignore native placeholder artifacts --- .../scripts/reuse-agent-release-assets.mjs | 5 +-- .../reuse-agent-release-assets.test.mjs | 31 +++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/.github/scripts/reuse-agent-release-assets.mjs b/.github/scripts/reuse-agent-release-assets.mjs index fb69cbb42..74426848c 100644 --- a/.github/scripts/reuse-agent-release-assets.mjs +++ b/.github/scripts/reuse-agent-release-assets.mjs @@ -66,7 +66,8 @@ export function collectReusableAssetPlan({ registry, release, versions, modules, throw new Error(`Previous agent version mismatch for ${moduleName}: registry=${driver.version}, expected=${versions[moduleName]}`); } - if (driver.jar) { + const reusableJar = driver.jar && driver.jar.size > 0; + if (reusableJar) { driverAssets.push({ ...requireReleaseAsset(assets, driver.jar, `${moduleName} Java package`), moduleName, @@ -95,7 +96,7 @@ export function collectReusableAssetPlan({ registry, release, versions, modules, }); } - if (!driver.jar && nativePlatforms.length === 0) { + if (!reusableJar && nativePlatforms.length === 0) { throw new Error(`Previous agent registry has no reusable artifacts for module: ${moduleName}`); } } diff --git a/.github/scripts/reuse-agent-release-assets.test.mjs b/.github/scripts/reuse-agent-release-assets.test.mjs index 69b86099a..e67ff2613 100644 --- a/.github/scripts/reuse-agent-release-assets.test.mjs +++ b/.github/scripts/reuse-agent-release-assets.test.mjs @@ -60,6 +60,37 @@ test("rejects an incomplete reusable native platform set", () => { ); }); +test("ignores zero-size legacy JAR placeholders for native-only modules", () => { + const native = Object.fromEntries( + platforms.map((platform, index) => [platform, artifact(`dbx-agent-duckdb-0.1.2-${platform}.tar.zst`, String(index + 1))]), + ); + const registry = { + drivers: { + duckdb: { + version: "0.1.2", + jar: { + url: "https://example.invalid/dbx-agent-duckdb-legacy-placeholder.jar", + size: 0, + sha256: "", + }, + native, + }, + }, + jres: {}, + }; + + const plan = collectReusableAssetPlan({ + registry, + release: releaseFor(Object.values(native)), + versions: { duckdb: "0.1.2" }, + modules: ["duckdb"], + reuseJre: false, + }); + + assert.equal(plan.driverAssets.length, 6); + assert.equal(plan.driverAssets.some((asset) => asset.kind === "jar"), false); +}); + test("rejects a registry version that differs from the effective baseline", () => { const access = artifact("dbx-agent-access-0.1.33.tar.zst", "a"); const registry = { drivers: { access: { version: "0.1.33", jar: access } }, jres: {} };