Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
385 commits
Select commit Hold shift + click to select a range
e6ec524
test(harness): 3309, an app whose removal is pending takes no install
MorningLightMountain713 Oct 19, 2026
84b3750
fix(apps): the election says which app it leaves out when a stop lock…
MorningLightMountain713 Oct 19, 2026
17175c8
fix(upnp): a test mapping the router has not removed fails the availa…
MorningLightMountain713 Oct 20, 2026
41c530b
fix(upnp): a refused removal of one protocol keeps the other's pending
MorningLightMountain713 Oct 20, 2026
12eb2fa
fix(upnp): a pending removal of any mapping fails the availability ch…
MorningLightMountain713 Oct 20, 2026
a0bbd96
test(harness): 3003 a node whose router refuses to remove its mapping…
MorningLightMountain713 Oct 20, 2026
8d8567a
fix(upnp): a mapping the router refuses wakes the availability check
MorningLightMountain713 Oct 20, 2026
f669e53
test(harness): 3003 covers a full router refusing an app's mapping
MorningLightMountain713 Oct 20, 2026
5c1c62f
chore(upnp): nat-upnp ~2.0.5
MorningLightMountain713 Oct 20, 2026
2259800
Merge branch 'chore/nat-upnp-2' into fix/upnp-table-exhaustion
MorningLightMountain713 Oct 20, 2026
d0f4261
fix(upnp): the cleanup gives the router's requests whole-millisecond …
MorningLightMountain713 Oct 20, 2026
1412f13
fix(upnp): the cleanup gives the router's requests whole-millisecond …
MorningLightMountain713 Oct 20, 2026
71ea706
Merge branch 'chore/nat-upnp-2' into fix/upnp-table-exhaustion
MorningLightMountain713 Oct 20, 2026
de126cc
Merge pull request #1860 from RunOnFlux/chore/nat-upnp-2
MorningLightMountain713 Oct 20, 2026
f834c84
test(registry): a test waits for the rebuild to start however long it…
MorningLightMountain713 Oct 20, 2026
9240406
fix(upnp): a pending removal looks the entry up before each retry
MorningLightMountain713 Oct 20, 2026
7fd9a3a
test(harness): 3003 a router that carries out a removal but answers i…
MorningLightMountain713 Oct 20, 2026
ecef333
fix(upnp): a mapping counts as this node's until the router shows it …
MorningLightMountain713 Oct 20, 2026
f68b2fd
test(harness): 3003 a lookup the router answers with a fault leaves t…
MorningLightMountain713 Oct 20, 2026
7814b32
Merge pull request #1858 from RunOnFlux/fix/upnp-table-exhaustion
MorningLightMountain713 Oct 20, 2026
e48c465
feat(ports): a peer probes UDP and can answer for every port
MorningLightMountain713 Oct 21, 2026
0e33755
feat(ports): the pre-install port test proves UDP
MorningLightMountain713 Oct 21, 2026
14fc518
feat(ports): the availability check proves its port over TCP and UDP
MorningLightMountain713 Oct 21, 2026
0764479
fix(registry): the apps at an IP are those stored at exactly that IP
MorningLightMountain713 Oct 21, 2026
e0c4601
test(harness): 3004 proves a port over UDP, refuses one two peers hea…
MorningLightMountain713 Oct 21, 2026
372db11
test(harness): 3004 names ports below the range the harness hands out
MorningLightMountain713 Oct 21, 2026
9babc46
test(harness): 3003 the availability check maps its port under test f…
MorningLightMountain713 Oct 21, 2026
754cbc0
test(harness): the UDP shapes drop on the fleet device alone, leaving…
MorningLightMountain713 Oct 21, 2026
2bd4747
test(ports): a UDP reply from another source port proves the port; 50…
MorningLightMountain713 Oct 21, 2026
94bd127
test(harness): 3004 proves UDP through ufw, under steady loss and beh…
MorningLightMountain713 Oct 21, 2026
acae4d2
test(harness): the policy stub publishes udpportdos, a refused policy…
MorningLightMountain713 Oct 21, 2026
8fe6280
test(harness): 3004 reads the udp check from an unfit node's health u…
MorningLightMountain713 Oct 21, 2026
0209fda
fix(ports): two silent peers refuse a port over UDP only once no atte…
MorningLightMountain713 Oct 21, 2026
1dbbbfe
test(harness): 3004's UDP refusal names a silent peer for every attempt
MorningLightMountain713 Oct 21, 2026
7985327
feat(ports): a port test names its protocols; behind UPnP the availab…
MorningLightMountain713 Oct 21, 2026
b53d89a
test(harness): a UPnP node maps TCP and UDP on alternate passes, and …
MorningLightMountain713 Oct 21, 2026
10ffbc7
fix(ports): a UDP test server's reply cap is per asked peer
MorningLightMountain713 Oct 21, 2026
ce1a9ec
fix(ports): UDP heard on a port forwarded elsewhere goes with that re…
MorningLightMountain713 Oct 21, 2026
f397fad
test(ports): 50 silent ports prove nothing, whatever reaches a probe …
MorningLightMountain713 Oct 21, 2026
ade43e6
fix(ports): a pass whose TCP passes clears its failed ports even when…
MorningLightMountain713 Oct 21, 2026
78b7a76
feat(ports): the signed policy can turn the pre-install refusal over …
MorningLightMountain713 Oct 21, 2026
215fc21
test(ports): an availability pass's branch is a tally, not an event
MorningLightMountain713 Oct 21, 2026
6f3062c
Merge pull request #1881 from RunOnFlux/feat/udp-port-test
MorningLightMountain713 Oct 21, 2026
fe7076b
fix(apps): boot holds an app whose location it cannot read, and decid…
MorningLightMountain713 Oct 22, 2026
c796b51
test(harness): 3308, boot holds an app whose location it cannot read …
MorningLightMountain713 Oct 22, 2026
0e5fae1
test(harness): 3308 installs every app on every node, the holder first
MorningLightMountain713 Oct 22, 2026
bc79d88
test(harness): 3308 records each step of its setup, so a node that do…
MorningLightMountain713 Oct 22, 2026
d7511c6
test(harness): 3308's expired record is one the holder last renewed l…
MorningLightMountain713 Oct 22, 2026
6c51b19
test(harness): 3308 reads the apps the holder holds from its own tabl…
MorningLightMountain713 Oct 22, 2026
a9803cf
test(harness): 3308's expired case hears the holder name the app that…
MorningLightMountain713 Oct 22, 2026
2004ccf
fix(appsync): a sync answer whose handler throws part way ends that p…
MorningLightMountain713 Oct 22, 2026
51be2a0
fix(apps): the test event of a removal is published once the removal …
MorningLightMountain713 Oct 22, 2026
9d2cd47
test(harness): 3304, a sync answer whose location prune throws is not…
MorningLightMountain713 Oct 22, 2026
33b90fa
fix(appsync): a hash whose message the node already stores is neither…
MorningLightMountain713 Oct 22, 2026
5f91b4f
test(harness): 3311, a late message whose registry row could not be w…
MorningLightMountain713 Oct 22, 2026
8b8fd06
fix(apps): a hard redeploy refused by another removal answers busy, t…
MorningLightMountain713 Oct 22, 2026
eeb690f
fix(apps): a removal run again to finish it waits while another insta…
MorningLightMountain713 Oct 22, 2026
01e5080
fix(db): every index build repairs the duplicate rows that block it, …
MorningLightMountain713 Oct 22, 2026
687d3b6
fix(dos): a residential node's recorded departure time never moves ba…
MorningLightMountain713 Oct 22, 2026
e353923
fix(appsync): a peer whose pending registrations this node's database…
MorningLightMountain713 Oct 22, 2026
2182f29
fix(appsync): a hash sync and a registry rebuild never run at once
MorningLightMountain713 Oct 22, 2026
a6dee3e
docs(config): the MongoDB floor's patch level is the oldest 6.0 relea…
MorningLightMountain713 Oct 22, 2026
9eca431
fix(apps): a removal finished after the network was told the app had …
MorningLightMountain713 Oct 22, 2026
09e51ff
refactor(boot): untilSucceeds runs its step again in a loop
MorningLightMountain713 Oct 22, 2026
9ab5851
docs(appsync): two comments name what the code does now
MorningLightMountain713 Oct 22, 2026
c576704
fix(id): a login page is never told its phrase is no longer valid whi…
MorningLightMountain713 Oct 22, 2026
3f80c01
fix(apps): boot's check of a held app decides only that app, and an u…
MorningLightMountain713 Oct 22, 2026
b0b2346
test(harness): 3308, an app uninstalled and installed again while boo…
MorningLightMountain713 Oct 22, 2026
e376b3f
fix(db): an index whose name is taken by another key is dropped and r…
MorningLightMountain713 Oct 22, 2026
4c418b7
test(harness): 3308 asks for the removal again until the node takes it
MorningLightMountain713 Oct 22, 2026
68c1458
test(harness): an app whose chain records a node already holds is ins…
MorningLightMountain713 Oct 22, 2026
db2a165
Merge pull request #1866 from RunOnFlux/fix/database-timeouts
MorningLightMountain713 Oct 22, 2026
c23538e
fix(db): a node whose database keeps timing out takes on no new apps
MorningLightMountain713 Oct 17, 2026
35bee1b
fix(apps): a dependency thread held in the kernel takes the node out …
MorningLightMountain713 Oct 17, 2026
e9deba5
fix(apps): a host stall keeps the node out of service until it reboots
MorningLightMountain713 Oct 17, 2026
36e3256
fix(apps): every app's containers live in their own slice under flux.…
MorningLightMountain713 Oct 17, 2026
d8ea201
fix(apps): a node out of service for a host stall removes every app, …
MorningLightMountain713 Oct 17, 2026
c8b339e
test(db): the database-suspect driver case runs well inside mocha's d…
MorningLightMountain713 Oct 17, 2026
d4f4f53
fix(apps): boot moves past an app whose removal does not return withi…
MorningLightMountain713 Oct 17, 2026
336c1df
fix(apps): a kill finds docker's records where docker says they are
MorningLightMountain713 Oct 17, 2026
e99c65d
test(harness): a node's docker data can be frozen, holding docker in …
MorningLightMountain713 Oct 17, 2026
83029b3
test(harness): 3302 holds a node whose database keeps timing out back…
MorningLightMountain713 Oct 17, 2026
5aa0300
test(harness): 3303 takes a node whose docker the host stalls out of …
MorningLightMountain713 Oct 17, 2026
03213f2
fix(apps): the kill's check reads every cgroup under the app's slice
MorningLightMountain713 Oct 17, 2026
6cf6f37
fix(apps): an app whose removal is still running is not removed again
MorningLightMountain713 Oct 17, 2026
c1a4296
test(harness): a failure dump thaws a frozen node's docker before it …
MorningLightMountain713 Oct 17, 2026
ca6ac33
fix(apps): a host stall's removal says an app it could not remove can…
MorningLightMountain713 Oct 17, 2026
d866afe
test(harness): 3302 and 3303 assert what is true on any tree before w…
MorningLightMountain713 Oct 17, 2026
b6fb6b5
test(harness): 3303 reads the node's words for an app its removal cou…
MorningLightMountain713 Oct 17, 2026
86217e7
fix(apps): the test event stream carries every placement hold and eac…
MorningLightMountain713 Oct 19, 2026
129e41d
test(harness): a suite can freeze any systemd unit of a node, and mon…
MorningLightMountain713 Oct 19, 2026
47aeb49
test(harness): 3302 and 3303 assert on the test event stream, and 330…
MorningLightMountain713 Oct 19, 2026
464f493
test(harness): 3303's kill case asserts the app could still run while…
MorningLightMountain713 Oct 19, 2026
6ec50bf
fix(apps): an app's cgroups are where systemd says they are
MorningLightMountain713 Oct 19, 2026
9ea436f
test(harness): 3303 reads an app's processes from where the node's sy…
MorningLightMountain713 Oct 19, 2026
1af6bc9
test(harness): 3303's canaries read the app's container where any tre…
MorningLightMountain713 Oct 19, 2026
c94893c
test(harness): a systemd-mode node can run FluxOS as an account that …
MorningLightMountain713 Oct 19, 2026
b8ff30b
test(harness): 3303's kill case runs on a legacy node whose FluxOS is…
MorningLightMountain713 Oct 19, 2026
cda53ab
fix(apps): the stall detector reads a dependency's namespace from a f…
MorningLightMountain713 Oct 19, 2026
5fc8fc1
fix(apps): a stall's reason names no wait point the kernel withholds
MorningLightMountain713 Oct 19, 2026
398ddb7
fix(apps): a stall reading under way when the service stops keeps not…
MorningLightMountain713 Oct 19, 2026
f1349cc
test(harness): 3304 starts the joining node once every peer can answe…
MorningLightMountain713 Oct 22, 2026
495c717
test(harness): 3304 does not count the joining node's own refusals as…
MorningLightMountain713 Oct 22, 2026
af56286
fix(apps): a host stall stops every app at once and kills what still …
MorningLightMountain713 Oct 22, 2026
e72b7df
test(harness): 3303, a node holding several apps has every one stoppe…
MorningLightMountain713 Oct 22, 2026
bf05054
fix(apps): a node runs apps only on cgroup v2 with cgroup.kill under …
MorningLightMountain713 Oct 22, 2026
6e1e468
test(harness): 2507, a node without Docker's systemd cgroup driver ho…
MorningLightMountain713 Oct 22, 2026
620d317
fix(apps): the cgroup floor asks for cgroup.kill in FluxOS's own cgroup
MorningLightMountain713 Oct 22, 2026
033e246
test(harness): every node runs systemd as PID 1, with dockerd and Flu…
MorningLightMountain713 Oct 22, 2026
1a9bae1
test(harness): a gate raises the host's inotify instance pool to 8192
MorningLightMountain713 Oct 22, 2026
77e9ffa
test(harness): a node's node_modules belongs to the account that owns…
MorningLightMountain713 Oct 22, 2026
f220bc9
fix(apps): the node status monitor starts once boot has settled, and …
MorningLightMountain713 Oct 22, 2026
cfe1286
test(harness): 2208 reads and drives pm2 as the operator's account Fl…
MorningLightMountain713 Oct 22, 2026
b445e5c
fix(apps): a host stall takes the node out of service whether or not …
MorningLightMountain713 Oct 22, 2026
6ae5b42
test(harness): 3303, a node whose config directory stalls with docker…
MorningLightMountain713 Oct 22, 2026
ce7b578
test(harness): 3303 reads a held config write from the background, si…
MorningLightMountain713 Oct 22, 2026
47f230d
fix(apps): a stall's kill finds an app's containers by their app labe…
MorningLightMountain713 Oct 22, 2026
ad0359e
fix(apps): an empty app slice's stop is queued with systemd, not wait…
MorningLightMountain713 Oct 22, 2026
b466143
fix(apps): a host stall's unload reads docker's records once, within …
MorningLightMountain713 Oct 23, 2026
350f59b
test(harness): a node's stallable disk can hold every read as well as…
MorningLightMountain713 Oct 23, 2026
2c508ed
test(harness): 3303 stops a node's apps when docker's disk stops answ…
MorningLightMountain713 Oct 23, 2026
8d59d38
fix(apps): a host stall's trip and its count of readings are kept on …
MorningLightMountain713 Oct 23, 2026
06f64be
test(harness): 3303 restarts FluxOS mid-stall and the node still goes…
MorningLightMountain713 Oct 23, 2026
22e379f
fix(apps): a host stall's state write overtaken by a stop leaves the …
MorningLightMountain713 Oct 23, 2026
0a309bf
fix(apps): a host stall's state write in flight at a stop still lands
MorningLightMountain713 Oct 23, 2026
c71dccd
test(harness): a dockerd restart leaves a node's FluxOS running
MorningLightMountain713 Oct 23, 2026
5d4876d
test(harness): a legacy node's syncthing runs on through a FluxOS sto…
MorningLightMountain713 Oct 23, 2026
e6c1377
test(harness): 02 reads the node's dockerd from its unit
MorningLightMountain713 Oct 23, 2026
994ef5f
fix(apps): a host stall's count moves only once an interval has passe…
MorningLightMountain713 Oct 23, 2026
548d0f1
test(harness): 3303 restarts FluxOS over and over mid-stall and the n…
MorningLightMountain713 Oct 23, 2026
6c4470b
fix(apps): a host stall's state is kept in /run/fluxos, and written o…
MorningLightMountain713 Oct 23, 2026
8ed1ffd
fix(apps): a host stall's unload reads the installed apps and docker'…
MorningLightMountain713 Oct 23, 2026
c23543d
fix(apps): a host stall's unload log names the one stop window
MorningLightMountain713 Oct 23, 2026
27fc43a
fix(apps): a host stall kills every container outside the app slices …
MorningLightMountain713 Oct 23, 2026
8a31443
docs(apps): the host-stall unload's doc names the reads at once and t…
MorningLightMountain713 Oct 23, 2026
60294fd
test(harness): 3318 kills a container made before the app slices when…
MorningLightMountain713 Oct 23, 2026
3811e32
fix(apps): a host stall kills the containers outside the app slices o…
MorningLightMountain713 Oct 23, 2026
54873da
test(harness): 3318 kills a container made before the app slices when…
MorningLightMountain713 Oct 23, 2026
46211dc
fix(apps): boot does not wait for a host stall's state write, and the…
MorningLightMountain713 Oct 23, 2026
bea0e5a
test(harness): 3319 boots past the host-stall start while the state w…
MorningLightMountain713 Oct 23, 2026
329bbda
test(harness): 3319's canary holds its probe write in the background
MorningLightMountain713 Oct 23, 2026
114b9f3
test(apps): the held host-stall write tests wait for the write by tim…
MorningLightMountain713 Oct 23, 2026
83471c6
Merge pull request #1874 from RunOnFlux/fix/host-stall-dos
MorningLightMountain713 Oct 23, 2026
e2d0bcb
fix(syncthing): a peer stays in a folder while it is connected and sh…
MorningLightMountain713 Oct 19, 2026
93293f9
fix(syncthing): a local change no other device holds is kept, not rev…
MorningLightMountain713 Oct 19, 2026
c604a0e
fix(syncthing): only a change to data from another device is kept fro…
MorningLightMountain713 Oct 19, 2026
561c2e2
test(harness): 3310, a primary that went quiet and then died is taken…
MorningLightMountain713 Oct 19, 2026
12c48f7
test(harness): 3310 counts only the primary's location rows as the ex…
MorningLightMountain713 Oct 19, 2026
646e1f9
test(harness): 3310 changes a file and a directory of the primary's, …
MorningLightMountain713 Oct 19, 2026
8eebabc
fix(syncthing): a device seen within a day keeps its entry when no fo…
MorningLightMountain713 Oct 19, 2026
b0ce6fc
fix(syncthing): a folder keeping its local changes says so once, when…
MorningLightMountain713 Oct 19, 2026
ef17c7d
test(harness): 3310 clears FDM's primary once the primary dies
MorningLightMountain713 Oct 19, 2026
b871955
fix(syncthing): a device kept in a folder no location names is said o…
MorningLightMountain713 Oct 19, 2026
b4a9ad7
test(harness): 3310 keeps the dead primary named on FDM while the sta…
MorningLightMountain713 Oct 19, 2026
41ea0f0
fix(syncthing): a recently seen unused device under another device's …
MorningLightMountain713 Oct 19, 2026
ae4b6e8
fix(syncthing): nobody seeds a folder while one of its holders has no…
MorningLightMountain713 Oct 22, 2026
8d9e0a9
test(harness): 51, nobody seeds while a holder has not yet measured w…
MorningLightMountain713 Oct 22, 2026
56ddc31
test(harness): 2252, a fleet of two releases seeds a cold-start folde…
MorningLightMountain713 Oct 22, 2026
9a9d517
test(harness): a mixed fleet runs different FluxOS code on each image…
MorningLightMountain713 Oct 22, 2026
7da14ed
test(harness): 2214's holder-first case holds both contenders and rel…
MorningLightMountain713 Oct 22, 2026
d795a51
test(harness): a g: app's holders are placed empty, and a folder pinn…
MorningLightMountain713 Oct 22, 2026
7740a73
test(harness): 2209's partial-restore case puts the primary's data in…
MorningLightMountain713 Oct 22, 2026
4bf8a66
test(harness): 68's senior-standby case holds the seed before it meas…
MorningLightMountain713 Oct 22, 2026
40e27f8
test(harness): 68's senior-standby case pins the folders synced only …
MorningLightMountain713 Oct 22, 2026
098fdf4
fix(syncthing): each receive-only folder has one state from its insta…
MorningLightMountain713 Oct 22, 2026
b9ba7c8
fix(syncthing): a pass counts each folder it holds out for an unsafe …
MorningLightMountain713 Oct 22, 2026
79a1645
test(harness): 2253 seeds a cold start on the lowest address while th…
MorningLightMountain713 Oct 22, 2026
242be0a
test(harness): 2253 counts the waits of a pass that opens after the h…
MorningLightMountain713 Oct 22, 2026
5d2fec3
fix(syncthing): a local change that is the only copy is found from th…
MorningLightMountain713 Oct 22, 2026
1670c52
fix(syncthing): whether a folder's local changes hold the only copy o…
MorningLightMountain713 Oct 22, 2026
7f9d452
test(harness): the syncthing stub pages db/localchanged as syncthing …
MorningLightMountain713 Oct 22, 2026
36c3ae6
test(harness): 3312 keeps a standby's change checked while the primar…
MorningLightMountain713 Oct 22, 2026
f09f9bc
test(harness): 3313 checks a standby's local changes off the pass, re…
MorningLightMountain713 Oct 22, 2026
628e5b1
test(harness): 3312 and 3313 hold the next check before it starts, so…
MorningLightMountain713 Oct 22, 2026
e783147
test(harness): 3313 releases its checkpoints after each test
MorningLightMountain713 Oct 22, 2026
13790ea
fix(syncthing): a standby's own changes are reverted only while anoth…
MorningLightMountain713 Oct 22, 2026
92abea8
test(harness): 3314 and 3315 revert a standby's own changes only whil…
MorningLightMountain713 Oct 22, 2026
ac454fc
fix(syncthing): a holder is in an app's folders while a location list…
MorningLightMountain713 Oct 23, 2026
9134a2e
fix(syncthing): a primary no location lists is out of the app, and a …
MorningLightMountain713 Oct 23, 2026
88f9da2
test(harness): 3310 keeps a listed primary across the standby's resta…
MorningLightMountain713 Oct 23, 2026
25f900c
fix(syncthing): a standby does not start beside a remembered primary …
MorningLightMountain713 Oct 23, 2026
b8295e8
test(harness): 3316 starts nothing on the standby beside a primary no…
MorningLightMountain713 Oct 23, 2026
7aa0a27
revert(syncthing): a silent peer's liveness is read per folder, as be…
MorningLightMountain713 Oct 23, 2026
e201acb
style(appQuery): no blank line doubled after installedAppsListedAt
MorningLightMountain713 Oct 23, 2026
f19bcfc
fix(syncthing): a holder whose volume will not mount is left out of t…
MorningLightMountain713 Oct 23, 2026
dfa1483
test(harness): 2254 leaves a holder that cannot mount its volume out …
MorningLightMountain713 Oct 23, 2026
3c246c1
test(harness): 2202's fleet keeps its locations through the old prima…
MorningLightMountain713 Oct 23, 2026
af4dd29
fix(syncthing): a check of a standby's local changes stands while it …
MorningLightMountain713 Oct 23, 2026
e78fc5d
test(harness): 3317 reverts a standby's changes while the primary kee…
MorningLightMountain713 Oct 23, 2026
8e24905
test(harness): 3317 waits for the pull that follows a revert to put t…
MorningLightMountain713 Oct 23, 2026
73eeb70
fix(syncthing): a folder whose locations cannot be read keeps what th…
MorningLightMountain713 Oct 23, 2026
a55b2ed
test(harness): 2255 seeds beside a holder that cannot read its locati…
MorningLightMountain713 Oct 23, 2026
e6045cc
fix(syncthing): a folder of an app whose spec cannot be read is held …
MorningLightMountain713 Oct 23, 2026
9f944e8
test(harness): 2256 leaves a holder that cannot decrypt an app's spec…
MorningLightMountain713 Oct 23, 2026
d2d8e14
fix(syncthing): a revert of a standby's changes goes ahead only on th…
MorningLightMountain713 Oct 23, 2026
fd6d907
test(harness): 3317 keeps a standby's change whose revert was held wh…
MorningLightMountain713 Oct 23, 2026
29008ef
test(harness): 3320 reverts a standby's change with the primary still…
MorningLightMountain713 Oct 23, 2026
fae8965
fix(syncthing): a device any folder lists is not deleted, so it never…
MorningLightMountain713 Oct 23, 2026
9af013b
test(syncthing): the connection-record comment sits on the test it de…
MorningLightMountain713 Oct 23, 2026
7b353c1
Merge pull request #1876 from RunOnFlux/fix/syncthing-takeover
MorningLightMountain713 Oct 23, 2026
5e86756
fix(apps): an apprunning message is stored one entry at a time
MorningLightMountain713 Oct 22, 2026
c16e73f
fix(apps): a node announces only the apps a peer can store
MorningLightMountain713 Oct 22, 2026
550d327
fix(apps): installing an app by hand is the flux team's, testing one …
MorningLightMountain713 Oct 22, 2026
127eed9
fix(apps): a sync batch logs its refused apprunning entries in one line
MorningLightMountain713 Oct 22, 2026
0bbbad4
fix(apps): a node keeps its own record of when it took each app
MorningLightMountain713 Oct 22, 2026
916cbf6
test(harness): 3501-3503 what a node announces about its apps, and wh…
MorningLightMountain713 Oct 22, 2026
0a0c55c
fix(apps): an apprunning message naming only refused entries is not a…
MorningLightMountain713 Oct 22, 2026
fb74fa3
test(harness): 3503 registers with the peers a two-node fleet holds
MorningLightMountain713 Oct 22, 2026
27fb59d
feat(harness): announcement refusals and placement records are publis…
MorningLightMountain713 Oct 22, 2026
b27baab
test(harness): 3501-3503 assert on the node's events
MorningLightMountain713 Oct 22, 2026
2520bae
test(harness): 3501 cuts the stub off before the fleet peers; 3503 wa…
MorningLightMountain713 Oct 22, 2026
639495b
test(harness): 3501 places the unhashed-app case on a node that annou…
MorningLightMountain713 Oct 22, 2026
afc5901
fix(apps): installapplocally refuses a specification without a height
MorningLightMountain713 Oct 22, 2026
fcde09d
test(apps): a redeploy for a change of components keeps the placement…
MorningLightMountain713 Oct 22, 2026
f0950e4
test(harness): 3504 a synced announcement is judged one entry at a ti…
MorningLightMountain713 Oct 22, 2026
94137bc
fix(apps): a test install removes only what it installed
MorningLightMountain713 Oct 22, 2026
913df1c
fix(apps): a redeploy that ends without the app drops its placement r…
MorningLightMountain713 Oct 22, 2026
215546d
feat(harness): network:apprunning says everything a node did with an …
MorningLightMountain713 Oct 22, 2026
5935165
fix(apps): the placement record follows the app's volume
MorningLightMountain713 Oct 22, 2026
c9eec5c
test(harness): 3502 a soft redeploy keeps the placement record and a …
MorningLightMountain713 Oct 22, 2026
630dd58
fix(apps): boot runs its placement steps again until they succeed
MorningLightMountain713 Oct 22, 2026
8c4d6f1
test(harness): 3504 syncs a returning node against peers that hold on…
MorningLightMountain713 Oct 22, 2026
e0a3af2
docs(apps): a hard install's placement record write must succeed
MorningLightMountain713 Oct 22, 2026
9ed3db3
test(harness): 2237 holds the crashed node's confirmation until the b…
MorningLightMountain713 Oct 22, 2026
7da4a76
test(harness): 2237 has the restarted node dial the bystander it tell…
MorningLightMountain713 Oct 22, 2026
b77a644
docs(apps): name when a placement record outlives its app
MorningLightMountain713 Oct 22, 2026
23ecdd8
fix(network): a node without an address asks benchmark for one every …
MorningLightMountain713 Oct 22, 2026
b4eb78c
fix(apps): the announcer waits for this node's address and for every …
MorningLightMountain713 Oct 22, 2026
0091b9f
fix(network): a node asks whether it can be heard the moment it has a…
MorningLightMountain713 Oct 22, 2026
d65cc5c
test(harness): 3506 a node that boots without its address dates its r…
MorningLightMountain713 Oct 22, 2026
e8acbac
test(harness): 3506 holds the address back through boot, with a boot …
MorningLightMountain713 Oct 22, 2026
02a0e52
fix(apps): a removal stands when its placement record cannot be deleted
MorningLightMountain713 Oct 22, 2026
29bdabf
fix(network): network:apprunning is published only for a message that…
MorningLightMountain713 Oct 22, 2026
a815997
fix(apps): an app not yet paid for is tested by the owner whose key s…
MorningLightMountain713 Oct 22, 2026
da07841
fix(apps): an announcement holds up removals only from its snapshot t…
MorningLightMountain713 Oct 22, 2026
465206f
fix(apps): a removal tells the network after the announcement in flig…
MorningLightMountain713 Oct 22, 2026
2908799
fix(apps): the expiry check leaves an app being tested installed
MorningLightMountain713 Oct 23, 2026
f2f8ca1
Merge pull request #1882 from RunOnFlux/fix/announced-apps
MorningLightMountain713 Oct 24, 2026
e5f5cae
test(hostStall): a held write is released once
MorningLightMountain713 Oct 24, 2026
56b7b23
Merge pull request #1885 from RunOnFlux/fix/host-stall-test-release-once
MorningLightMountain713 Oct 24, 2026
8a3b5ae
Merge branch 'master' into development
Cabecinha84 Oct 24, 2026
9dfef7f
chore(release): bump version to 8.22.0 and carry the release fingerprint
Cabecinha84 Oct 24, 2026
48a0add
fix(apps): validate app name and owner
MorningLightMountain713 Oct 25, 2026
6d87a31
fix(apps): validate app name and owner where a spec arrives
MorningLightMountain713 Oct 25, 2026
7c84d6b
refactor(apps): remove appValidator's unused registerAppGlobalyApi
MorningLightMountain713 Oct 25, 2026
6e7a7a6
fix(apps): scope the app name and owner check to enterprise specs
MorningLightMountain713 Oct 25, 2026
f220a91
refactor(apps): remove dead enterprise-owner lookups
MorningLightMountain713 Oct 25, 2026
04ddc7e
fix(enterprise): decrypt exactly the specs the route checks treat as …
MorningLightMountain713 Oct 25, 2026
6b23442
Merge pull request #1887 from RunOnFlux/fix/app-input-validation
MorningLightMountain713 Oct 25, 2026
c10a308
chore(release): carry the 8.22.0 release fingerprint
MorningLightMountain713 Oct 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 42 additions & 5 deletions ZelBack/config/default.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,32 @@ module.exports = {
'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIfVQ1HBlOYD61OEzV19gSWPG6yVWvz+TyHXflXIHsPg fluxadm-legacy',
],
},
// A thread of a process FluxOS depends on that stays in the kernel without
// running for one interval holds the node back from new placements, and for
// stuckIntervals intervals takes it out of service until it reboots. Its apps
// are then asked to stop all at once, and whatever of them can still run after
// stopWindowMs is killed: longer than the slowest removal of a component seen on
// the fleet (39 s), which stops it first.
hostStall: {
readIntervalMs: 5 * 60 * 1000,
stuckIntervals: 6,
stopWindowMs: 60 * 1000,
},
database: {
url: '127.0.0.1',
port: 27017,
// How long one round trip, or the wait for a pooled connection, may take
// before the call fails. callTimeoutMs bounds every call on the main client:
// over four times the slowest healthy round trip seen on the fleet.
// maintenanceCallTimeoutMs bounds the client for the named long operations:
// index builds, the explorer restore's deletes and the registry rebuild.
callTimeoutMs: 60 * 1000,
maintenanceCallTimeoutMs: 15 * 60 * 1000,
// The database is suspect, and the node takes on no new apps, once
// suspectRoundTrips round trips have run out within suspectWindowMs. It stops
// being suspect suspectWindowMs after the last one.
suspectRoundTrips: 4,
suspectWindowMs: 30 * 60 * 1000,
local: {
database: `${dbPrefix}zelfluxlocal`,
collections: {
Expand Down Expand Up @@ -79,6 +102,7 @@ module.exports = {
collections: {
appsInformation: 'zelappsinformation',
appsRuntimeState: 'zelappsruntimestate', // node-local per-component controller state: desiredState, restartHistory (crash backoff), last exit
appsPlacements: 'zelappsplacements', // when this node took each app it holds, kept through redeploys
},
},
appsglobal: {
Expand Down Expand Up @@ -107,6 +131,10 @@ module.exports = {
upnp: {
gatewayUrl: '',
nodeIp: '',
// a removal of this node's own mapping the router refuses is asked again
// after this long, the wait doubling up to removalRetryMaxMs
removalRetryFirstMs: 30 * 1000,
removalRetryMaxMs: 60 * 1000,
},
benchmark: {
host: '127.0.0.1',
Expand Down Expand Up @@ -136,6 +164,11 @@ module.exports = {
// Docker's networking rules and its patch releases fixed them; 28.1.1 is the
// oldest release the fleet runs in numbers.
minimumDockerAllowedVersion: '28.1.1',
// The MongoDB a node runs: the oldest release FluxOS supports. From 6.0 a
// $group or $sort past the memory limit spills to disk rather than failing,
// which the registry rebuild and the duplicate merges at boot rely on; the
// patch level is the oldest 6.0 release the fleet runs in numbers.
minimumMongoDbAllowedVersion: '6.0.27',
fluxTeamFluxID: '1hjy4bCYBJr4mny4zCE85J94RXa8W6q37',
// A list, so support can be granted to (or revoked from) an identity without
// touching every privilege check. A bare string is still read as a one entry
Expand Down Expand Up @@ -448,9 +481,10 @@ module.exports = {
peerShortfallDosPerMinute: 0.13,
// While this node knows no address of its own it asks benchmark to detect its
// public IP this often, and is out of service after this many asks find none.
// Benchmark caches its answer for 69 s.
publicIpAskIntervalMs: 90 * 1000,
publicIpAsksBeforeDos: 8,
// Benchmark caches an address it found for 69 s and none it failed to find, so
// each ask while none is known is a fresh lookup against public IP services.
publicIpAskIntervalMs: 15 * 1000,
publicIpAsksBeforeDos: 48,
// The apps port check. timeoutsMs: how long it waits before testing again
// after a pass, an error, a failed port, once its count reaches the DOS
// threshold, and after an app error. thresholds: once portsHighEdge ports
Expand Down Expand Up @@ -562,8 +596,6 @@ module.exports = {
daemonPONFork: 2020000, // block height where PON (Proof of Node) fork activates - chain works 4x faster after this block
blocksAllowanceInterval: 1000, // ap differences can be in 1000s - more than 1 day
removeBlocksAllowanceIntervalBlock: 1625000, // after this block we can start having app updates without extending subscription - block expected in April 19th 2024
ownerAppAllowance: 1000, // a by-name local install (fluxteam only) runs for this amount of blocks before the expiry sweep removes it
temporaryAppAllowance: 200, // in case of any user installing some temporary app message for testing purposes, the app will run for this many blocks
expireFluxAppsPeriod: 100, // every 100 blocks we run a check that deletes apps specifications and stops/removes the application from existence if it has been lastly updated more than 22k blocks ago
updateFluxAppsPeriod: 9, // every 9 blocks we check for reinstalling of old application versions
removeFluxAppsPeriod: 11, // every 11 blocks we check for more than maximum number of instances of an application
Expand All @@ -577,6 +609,9 @@ module.exports = {
bootDelayMultiplier: 1,
spawnDelayMs: 0,
removalSpacingMs: 60000,
// How long one app's removal may take, when every app is removed, before the
// next app's starts. A removal past it keeps running.
appRemovalDeadlineMs: 5 * 60 * 1000,
// Per-document expiry for the ephemeral app collections, in seconds, read by
// appConstants.js. Each record carries its own deadline and the collection
// index is expireAt/expireAfterSeconds:0, so changing one of these takes
Expand Down Expand Up @@ -645,6 +680,8 @@ module.exports = {
connectionBackoffMs: [120000, 300000, 600000, 900000],
nodeMonitorIntervalMs: 1200000,
nodeMonitorRemovalDelayMs: 60000,
// events per message of an answer to a peer's state sync
syncAnswerBatchSize: 2000,
// Residential-node staging. The placement hold is immediate and is not
// tunable; these pace only the part that moves customer data.
residentialCheckIntervalMs: 6 * 60 * 60 * 1000, // re-evaluate the verdict
Expand Down
Loading
Loading