AJ ONeal
a5c8fc28a4
fix(builds-cacher): coalesce concurrent getPackages for same name
...
When two HTTP requests arrived simultaneously for the same package on
a cold in-memory cache (bc._caches[name] === undefined), they would
both:
1. Enter getPackages, see no warm cache,
2. Read and parse the same _cache/{pkg}.json independently,
3. Both call transformAndUpdate, which re-runs _classify on every
build.
The first call populates bc._targetsByBuildIdCache as it classifies.
The second call then hits the cache shortcut at the top of _classify
and skips the projInfo.oses/arches/libcs/formats/triplets
accumulation block entirely. Its projInfo ends up with empty tracking
arrays (because the prior Object.assign(projInfo, meta) reset them),
and that poisoned projInfo gets written to bc._caches[name],
overwriting the first call's good cache.
After this, every subsequent installer request returns errPackage
because serve-installer.js checks projInfo.oses.includes(hostTarget.os)
— and projInfo.oses is now [].
Fix: a per-name in-flight promise. Concurrent callers for a cold
package share a single load. Calls for warm packages take the fast
path with no synchronization.
Reproduced reliably with Promise.all of 6 cold-cache calls for the
same package: 1/6 succeeded before the fix, 6/6 after. On staging at
HTTP concurrency=12, installer cand-only-errors went from 24-229
(cause-dependent) to 0.
2026-05-06 11:45:26 -06:00
AJ ONeal
8f9b9da4a3
chore: npm run fmt
2026-03-08 19:38:49 -06:00
Michael Dubner
75e39c54a2
fix: add '386' and 'i386' to tab regexp (fixes GH-941)
2025-01-29 22:59:56 +00:00
AJ ONeal
83a6d02d50
fix(api): project 'alias'es (symlinks) should be resolved before checking for 'selfhosted'
2024-12-16 01:02:37 +00:00
AJ ONeal
14cebeeb61
ref(webi): complete transition from 'request' for 'fetch'
2024-12-16 00:01:13 +00:00
AJ ONeal
c94b4cf5c7
fix(windows): use Get-CimInstance instead of deprecated Get-WmiObject
2024-11-10 07:51:52 +00:00
Caleb
d7a4aaf6b7
fix(windows): use Get-WmiObject instead of deprecated wmic
...
Signed-off-by: Caleb <53413881+CK6853@users.noreply.github.com >
2024-11-10 07:51:23 +00:00
AJ ONeal
005ca9f7da
fix(ollama): classify 'rocm' as its own cpu + update classifier
2024-09-16 23:18:07 +00:00
AJ ONeal
efe3df6453
fix(webi): define PKG_STABLE for template when no suitable version is found
2024-09-15 23:39:51 +00:00
AJ ONeal
90eb1587ba
doc+fix: enumerateLatestVersions only takes 1 argument
2024-09-13 22:27:08 +00:00
AJ ONeal
e6dcbfb83a
feat(installer): show stable, and latest if different from stable
2024-09-13 22:27:07 +00:00
AJ ONeal
8f39617bcd
fix: allow 'posix_2017' and 'posix_2024' for non-windows OSes
2024-09-13 08:33:48 +00:00
AJ ONeal
5bb2832ad9
feat(webi): detect 'prev', 'dev', & 'developer' as beta
2024-09-13 08:33:47 +00:00
AJ ONeal
3364dcb075
fix(rpi-zero): add armv6 alias
2024-09-13 08:33:33 +00:00
AJ ONeal
15098ba1d2
ref: use Releases.latest() and Releases.sample()
2024-09-13 08:33:32 +00:00
AJ ONeal
556697ad67
ref: make ./builds-cacher.js one-off testable; add ./classify-one.js
2024-09-11 23:29:22 +00:00
AJ ONeal
595a0b8ef9
fix(linux-gnu): update build-classifier@v1.0.0: respect explicit 'gnu'
2024-09-11 17:18:17 -06:00
AJ ONeal
566b5c047f
fix(classifier): log rather than throw on failed classification
2024-08-20 15:51:02 -06:00
AJ ONeal
c71126fcd8
fix: init ~/.config/envman/ during init phase (before pre-install)
2024-07-24 12:23:34 -06:00
AJ ONeal
5c12cb1fa7
fix(busybox): use -k instead of --keep
2024-06-05 17:40:01 +00:00
AJ ONeal
67f361d35c
fix(bsd): detect and use OpenBSD 'shasum'
2024-01-15 22:00:01 -07:00
AJ ONeal
05f33b1ff3
fix(bsd): use explicit untar
2024-01-15 22:00:00 -07:00
AJ ONeal
16d108e3d5
fix(fish): treat .app.zip as .zip for extraction
2024-01-15 16:23:14 -07:00
AJ ONeal
904ce1f2d6
fix(cache): set 'updated' to old date, correct typo
2024-01-07 21:04:01 -07:00
AJ ONeal
ca03de16c6
fix(builds-cacher): fallback to setting build.name from build.download
2024-01-02 16:01:43 -07:00
AJ ONeal
8e62e12334
feat(webi): show latest project release version on error
2024-01-02 15:29:19 -07:00
AJ ONeal
f13d582749
ref(webi): show supported OSes, etc with space rather than comma
2024-01-02 15:29:19 -07:00
AJ ONeal
c6bb79648a
fix(installer): accept 'ANYOS' if no explicit OS matches
2024-01-02 15:29:19 -07:00
AJ ONeal
22ba86dbed
feat(installer): replace getReleases with new builds classifier
2024-01-02 15:29:18 -07:00
AJ ONeal
eec6452769
ref(classify): parallelize release downloads to fetch *much* faster
2024-01-02 15:27:09 -07:00
AJ ONeal
541fdc565e
feat: add builds classifier, and lint all builds
2024-01-02 15:27:09 -07:00
AJ ONeal
51b16ba53d
feat: add build-classifier submodule
2024-01-02 15:27:09 -07:00
AJ ONeal
546aee8fbb
ref: releases.js => installers.js
2023-12-12 02:57:03 -07:00
AJ ONeal
7c61a19e20
ref(internal): packages.js => projects.js
2023-12-12 02:57:02 -07:00
AJ ONeal
281c004445
ref(webi): show supported OSes, Arches, Libcs & Packages more clearly on error
2023-12-12 02:56:01 -07:00
AJ ONeal
e2300c6999
fix: fn_get_os for bootstrap & install
2023-12-12 01:58:58 -07:00
AJ ONeal
c116cb417f
fix: remove extra / in doc url
2023-12-12 01:58:58 -07:00
AJ ONeal
3966d3adf8
fix(releases): bump timeout to 15s for uncached github requests
2023-12-12 01:44:11 -07:00
AJ ONeal
4510a61cf0
fix(envman): split non-portable function.env => function.sh, function.fish
2023-11-22 10:05:12 -07:00
AJ ONeal
7eec48ea20
fix(posix): detect current/login shell even when rc file is absent
2023-11-21 11:28:17 -07:00
AJ ONeal
74676206f1
feat+ref!(posix): rewrite to load ENVs only once for all shells
2023-11-21 11:28:17 -07:00
Lockszmith
b6a02eaf21
ref: use cat << EOF > load.sh rather than echo
2023-11-21 11:28:17 -07:00
Lockszmith
ea99790768
fix(posix): run load.sh only once when .bashrc sources .profile
2023-11-21 11:28:17 -07:00
AJ ONeal
ec33462ae0
chore: fix typo in PATH.env message
2023-11-21 11:28:17 -07:00
AJ ONeal
89c437700e
fix(posix): ensure PATH.env exists before checking contents
2023-11-21 11:28:16 -07:00
AJ ONeal
b71a824e13
feat: distinguish between ACTION REQUIRED types
2023-11-20 09:20:09 -07:00
AJ ONeal
6fa045a4f9
fix(busybox): prefer curl over wget, limit wget options on busybox
2023-11-20 09:18:35 -07:00
AJ ONeal
a4a386dd8a
ref: rename to package-install.tpl.sh to match namespace style
2023-11-18 23:57:33 -07:00
AJ ONeal
b56229ca62
ref(install): minor tweaks to differences from bootstrap
2023-11-18 23:00:25 -07:00
AJ ONeal
98ed726ec4
ref(install): bring into parity with curl-pipe-bootstrap
2023-11-18 23:00:25 -07:00