SwiftPM artifact setup gives up on the first dropped connection to a version lookup

未关闭 适合新手
#59,942 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 2 天内回复

还没有人认领这个 Issue。

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
78/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
javascript, node.js, react-native

调研方向

从 packages/react-native/scripts/spm/download-spm-artifacts.js 开始,重点查看 resolveNightlyVersion、resolveLatestV1Version 和 resolveSnapshotUrl;将它们各自单次调用 fetch 的行为与 download() 中的重试行为进行比较。运行提供的复现程序,确认每次版本或元数据查询在连接中断后都会重试,然后验证设置流程会继续下载构件。

由索引模型根据 Issue 内容生成。

描述

Description

#59214 made download() in packages/react-native/scripts/spm/download-spm-artifacts.js retry transport errors and HTTP 408, 429 and 5xx. The lookups that run before the downloads still call fetch once: resolveNightlyVersion (registry.npmjs.org/<package>/nightly), resolveLatestV1Version (registry.npmjs.org/hermes-compiler/latest-v1) and resolveSnapshotUrl (each maven-metadata.xml). A dropped connection to any of them ends the SwiftPM setup with fetch failed, and the CI lane with it:

  • test_ios_spm_helloworld / test (Debug), run 38960453730 on #59149: Fetching snapshot metadata: https://central.sonatype.com/repository/maven-snapshots/com/facebook/hermes/hermes-ios/260318099.0.4-SNAPSHOT/maven-metadata.xml, then hermes-engine: fetch failed.
  • test_ios_rntester (Release), run 43036111930 on #59073, after #59214: Resolving nightly version from npm: react-native, then [setup-apple-spm] Artifact setup failed: fetch failed.
Steps to reproduce
  1. Clone the reproducer. It is the reproducer template with react-native and every @react-native/* package at 0.90.0-nightly-20261111-1273ca128 and @react-native-community/cli at 21.0.0-alpha.1, as the current community template sets up the nightly, plus drop-first-lookup.mjs, a node --import preload that fails the first request to each lookup with the TypeError: fetch failed a reset connection gives and answers each xcframework download with 404, and repro.sh.
  2. Run bash repro.sh. It installs the app and runs node_modules/react-native/scripts/spm/download-spm-artifacts.js --version nightly --flavor debug under the preload.
  3. Expected: the setup sends the lookup again, as download() does, and goes on to the downloads. Seen: it exits 1 after one attempt.
node v26.12.1, MINGW64_NT-10.0-26300 x86_64, react-native 0.90.0-nightly-20261111-1273ca128
[download-spm-artifacts]   Resolving nightly version from npm: react-native
[drop-first-lookup] attempt 1: https://registry.npmjs.org/react-native/nightly
fetch failed
download-spm-artifacts.js exited 1
RESULT: the setup exited 1 with "fetch failed" after one dropped connection to: https://registry.npmjs.org/react-native/nightly
React Native Version

0.90.0-nightly-20261111-1273ca128

Affected Platforms

Build - MacOS, Build - Windows

Output of npx @react-native-community/cli info
System:
  OS: Windows 11 10.0.26300
  CPU: "(32) x64 AMD Ryzen 9 9950X3D 16-Core Processor          "
  Memory: 110.43 GB / 255.67 GB
Binaries:
  Node:
    version: 26.12.1
    path: C:\Program Files\nodejs\node.EXE
  Yarn:
    version: 1.22.22
    path: C:\Users\yevhe.YEVHENII\AppData\Roaming\npm\yarn.CMD
  npm:
    version: 12.2.1
    path: C:\Program Files\nodejs\npm.CMD
  Watchman: Not Found
SDKs:
  Android SDK: Not Found
  Windows SDK:
    AllowDevelopmentWithoutDevLicense: Enabled
    Versions:
      - 10.0.19041.0
      - 10.0.26100.0
IDEs:
  Android Studio: AI-262.9437.185.2621.16467767
  Visual Studio: Not Found
Languages:
  Java:
    version: 17.0.20.1
    path: C:\Program Files\Microsoft\jdk-17.0.20.101-hotspot\bin\javac.EXE
  Ruby: Not Found
npmPackages:
  "@react-native-community/cli":
    installed: 21.0.0-alpha.1
    wanted: 21.0.0-alpha.1
  react:
    installed: 19.3.0
    wanted: 19.3.0
  react-native:
    installed: 0.90.0-nightly-20261111-1273ca128
    wanted: 0.90.0-nightly-20261111-1273ca128
  react-native-windows: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: Not found
  newArchEnabled: Not found

Stacktrace or Logs
node v26.12.1, MINGW64_NT-10.0-26300 x86_64, react-native 0.90.0-nightly-20261111-1273ca128
[download-spm-artifacts]   Resolving nightly version from npm: react-native
[drop-first-lookup] attempt 1: https://registry.npmjs.org/react-native/nightly
fetch failed
download-spm-artifacts.js exited 1
RESULT: the setup exited 1 with "fetch failed" after one dropped connection to: https://registry.npmjs.org/react-native/nightly
MANDATORY Reproducer

https://github.com/YevheniiKotyrlo/rn-spm-lookup-not-retried

Screenshots and Videos

None: the setup's output above is the whole of it.

主要语言
C++
星标
127k
派生
25.5k
平均合并
3 天 18 小时
30 天内合并 PR
188

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

react/react-native 的其他 Issue

查看 react/react-native 的全部 Issue

相似的 Issue

更多 C++ Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。