错误、限制与重试
提交前应在本地验证:输入必须存在,且为 .jar 或 .zip。Hosted 服务将上传限制为 50 MB、解压后归档限制为 128 MiB、单个归档条目限制为 32 MiB,条目数和 class 数分别最多 10,000,嵌套归档深度最多 4,压缩比最多 100:1。一次请求最多选择四个不同的展开后平台。
客户 API 当前按每个已认证身份或客户端 bucket 限制为每分钟 300 次请求。429 响应包含 Retry-After。如果构建超过 API 密钥的周期 NCU 上限,Retry-After 是向上取整到该密钥额度刷新周期结束为止的秒数;响应 params 还包含 retryAfterSeconds 和 usagePeriodEndsAt。提交也可能因 NCU 不足或套餐并发限制而被拒绝。由应用处理的校验错误使用包含 code、message、error、params 和 violations 的 envelope;由 Spring 直接产生的请求绑定失败可能改用框架 envelope。Security 生成的 401 和 403 响应目前只包含 error;客户端必须根据状态码和内容分支处理,不能假设存在统一错误格式。
对轮询 GET,只重试 429、502、503 和 504,并在总 deadline 内遵守 Retry-After。不要重试提交 POST。SUCCESS 才允许下载;FAILED、CANCELLED、deadline 到期、响应格式错误和未知状态值都视为失败。保留 task ID 和服务端错误信息以便诊断,但遇到无法识别的状态后不得继续。
不要根据未记录的响应 body 或 redirect 猜测是否可重试。应 fail closed,保持输入产物不变,并在新的付费提交前要求人工明确决定。