Skip to content

ci(bazel): vendor InfoZip unzip/zip tarballs to stop SourceForge 522s from breaking CI - #381

Merged
tstapler merged 1 commit into
mainfrom
ci/vendor-infozip-deps
Oct 1, 2026
Merged

tstapler merged 1 commit into
mainfrom
ci/vendor-infozip-deps

Conversation

@tstapler

@tstapler tstapler commented Oct 1, 2026

Copy link
Copy Markdown
Owner

Why

downloads.sourceforge.net had intermittent Cloudflare 522 ("origin unreachable") outages on 2026-10-01 that:

Root cause: MODULE.bazel's unzip_src/zip_src http_archive rules had a single hardcoded SourceForge URL each, with no fallback.

Fix

Both tarballs (InfoZip unzip60.tar.gz / zip30.tar.gz) are now hosted as assets on a dedicated, non-app GitHub release in this repo — verified sha256-identical to the hashes already pinned in MODULE.bazel (confirmed against the original SourceForge files before the outage, and cross-checked against MacPorts/OSUOSL mirrors).

MODULE.bazel's urls lists now try, in order: our own GitHub release → MacPorts/OSUOSL mirrors → SourceForge (demoted to last, kept only as a final fallback). http_archive tries each URL until one succeeds, so this requires no other code changes.

Verification

  • bazel build --repository_cache=<empty> @unzip_src//:unzip @zip_src//:zip after deleting the previously-extracted external repos — forces a true cold fetch, confirms the new URL list resolves and the sha256 check passes.
  • bazel build //:stelekit_android_toolchain_impl — the consumer of these two targets — builds clean.

… from breaking CI

downloads.sourceforge.net had intermittent Cloudflare 522 outages on
2026-10-01 that broke multiple PR CI runs and shipped v0.89.0 with zero
release assets (the safety-gate job exhausted its retries fetching
unzip60.tar.gz/zip30.tar.gz). Both tarballs are now mirrored as GitHub
release assets on this repo (sha256-verified byte-identical to the
originals) and listed first in MODULE.bazel's http_archive urls, with
MacPorts/OSUOSL as independent fallbacks and SourceForge demoted to last.
@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

JVM Load Benchmark (Desktop)

Synthetic in-memory benchmark measuring load performance for the desktop (JVM) app.
Comparing ccd82fc3 (this PR) vs c8cf89ac (baseline)
Graph config: xlarge — 230 pages

Metric This PR Baseline Delta
Phase 1 TTI ↓ 0ms 1ms -1ms (-100%) ✅
Phase 2 background ↓ 0ms 0ms 0 (0%)
Phase 3 index ↓ 1ms 1ms 0 (0%)
Total ↓ 2ms 2ms 0 (0%)
Write p95 (baseline) ↓ 21ms 20ms +1ms (+5%) ⚠️
Write p95 (under load) ↓ n/a n/a
Jank factor ↓ n/a n/a
↓ lower is better
Flamegraphs (this PR) **Allocation** — object allocation pressure (JDBC/SQLite churn)

Alloc flamegraph not available

CPU — method-level hotspots by on-CPU time

CPU flamegraph not available

Top allocation hotspots (this PR) `38.4%` byte[]_[k] `7.2%` java.lang.String_[k] `6.7%` int[]_[k] `5.6%` java.util.LinkedHashMap$Entry_[k] `3.8%` java.lang.Object[]_[k]
Top CPU hotspots (this PR) `96.5%` /usr/lib/x86_64-linux-gnu/libc.so.6 `1.4%` /tmp/sqlite-3.51.3.0-28eeef8a-6fb8-4ff5-91c6-b34a72cebbb9-libsqlitejdbc.so `0.4%` __libc_pwrite `0.3%` fsync `0.2%` SR_handler

@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

Android Load Benchmark

Instrumented benchmark on an API 30 x86_64 emulator — 500-page synthetic graph.

Comparing ccd82fc3 (this PR) vs 7115ce11 (baseline)
Device: API 30 x86_64 emulator — 530 pages loaded

Graph Load

Metric This PR Baseline Delta
Phase 1 TTI ↓ 43ms 37ms +6ms (+16%) ⚠️
Phase 3 index ↓ 3732ms 4834ms -1102ms (-23%) ✅

Interactive Write Latency (during Phase 3)

Metric This PR Baseline Delta
Write p95 (baseline) ↓ 7ms 11ms -4ms (-36%) ✅
Write p95 (during phase 3) ↓ 12ms 18ms -6ms (-33%) ✅
Jank factor ↓ 1.71x 1.64x +0.07x (+4%) ⚠️
Concurrent writes ↑ 18 23 -5ms (-22%) ⚠️

SAF I/O Overhead (ContentProvider vs direct File read)

Measures Binder IPC cost added by ContentResolver per readFile() call.
Real SAF via ExternalStorageProvider will be higher on device; this is a lower bound.

Metric This PR Baseline Delta
Direct read / file ↓ 0.0ms 0.0ms 0 (0%)
Provider read / file ↓ 0.2ms 0.2ms 0ms (-26%) ✅
IPC overhead ratio ↓ 5x 7x -2x (-29%) ✅
↓ lower is better · ↑ higher is better

@tstapler
tstapler marked this pull request as ready for review October 1, 2026 06:58
Copilot AI balanced review requested due to automatic review settings October 1, 2026 06:58

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟢 Approval recommended

Release assets exist with matching SHA-256 digests, and Bazel retains integrity verification and multiple fallbacks.

Review effort: Balanced
Findings: None

What changed in this PR

Improves Bazel CI reliability by adding verified mirrors for InfoZip archives.

Changes:

  • Prioritizes repository-hosted GitHub release assets.
  • Adds independent mirrors while retaining SourceForge as fallback.
  • Preserves existing SHA-256 integrity checks.
File Description
MODULE.bazel Adds ordered fallback URLs for InfoZip sources.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@tstapler
tstapler merged commit 052545d into main Oct 1, 2026
25 checks passed
@tstapler
tstapler deleted the ci/vendor-infozip-deps branch October 1, 2026 07:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants