Aaron Echols and Pasha Sviderski
7ecf63169b
feat(daemon): debounce container change notifications to avoid reconcile storms ( #438 )
...
* fix(store): debounce container change notifications to avoid reconcile storms
SubscribeContainers forwarded every raw row-level change event from
Corrosion as its own signal, with no coalescing. Each signal triggers
a full reconcile (ListContainers + regenerate) in every independent
subscriber (caddy-controller, DNS resolver) on every machine in the
cluster. With enough container/health-check churn across services,
this produces a sustained stream of events (observed ~1.6-1.7/sec
cluster-wide on a 45-service, 7-machine cluster) and burns meaningful
CPU on every machine continuously, regardless of whether that machine
runs Caddy locally. On a resource-constrained node this escalated into
kernel RCU stall warnings and a full freeze.
Coalesce bursts of events into a single signal per debounce window
instead of forwarding one per event.
* bound debounced changes by the window
---------
Co-authored-by: Pasha Sviderski <me@psviderski.name >
2026-10-07 13:30:09 +10:00
Pasha Sviderski
e4bd1ad443
feat(store): improve waiting for store replication to skip unavailable members
2026-10-01 20:59:15 +10:00
Pasha Sviderski
e50c5fbe57
refactor(api): replace map[string]uint64 with api.StoreVersion for store version handling
2026-09-30 16:43:46 +10:00
Pasha Sviderski
842f796e38
refactor(store): unify logic and enhance logging for initial store sync (waitStoreSync)
2026-09-08 12:04:26 +10:00
Pasha Sviderski
0f6c03240b
feat(store): add WaitForStoreVersion API to wait for cluster store replication up to target version
2026-09-08 10:52:53 +10:00
Pasha Sviderski
8aedc2bf19
refactor(proto): move protobuf generated API to the top-level api/pb package
2026-09-04 10:50:30 +10:00
Pasha Sviderski
a24fc11caf
feat(caddystorage): generic namespace-scoped key-value storage using cluster table in Corrosion
2026-09-04 10:50:30 +10:00
Pasha Sviderski
35191c00e0
fix(cluster): improve error handling on failed machine subscription in cluster store
2026-06-23 20:54:25 +10:00
Pasha Sviderski
8b95db66d1
feat(machine): sync machine arch, daemon and docker versions to store, sync machine info on schedule
2026-06-22 19:47:35 +10:00
Pasha Sviderski
26951773d1
feat: add created_at/updated_at columns to cluster and machines store tables
2026-05-26 10:07:12 +10:00
Pasha Sviderski
9236aa341a
refactor: migrate to latest Corrosion version 2026.5.14 for ucind (compare versions vector for store sync)
2026-05-25 14:09:51 +10:00
Pasha Sviderski
07acb31bf3
fix: do not include outdated containers from the removed machine in DNS and Caddy configs
2026-05-21 19:33:28 +10:00
Pasha Sviderski
6e9acefbe6
fix: Caddy config regeneration due to non-deterministic container serialisation ( fixes #111 )
2026-04-15 16:49:01 +10:00
Pasha Sviderski
a67f936cc1
chore: wait for known missing changes during the initial cluster store sync
2026-03-09 17:40:51 +10:00
Pasha Sviderski
fc847093d2
chore: new InspectMachine gRPC method that to return store DB version (lamport time)
2025-12-19 16:29:14 +10:00
Pasha Sviderski
d2a7af744d
fix: uncloud daemon crash when listing partially replicated container records
2025-12-18 16:32:26 +10:00
Pasha Sviderski
9438654d99
docs: fix comment in schema.sql
2025-09-23 12:21:45 +10:00
Pasha Sviderski
b046b78398
feat: migrate Caddy to generated Caddyfile, mount persistent data volume
2025-08-22 19:51:15 +10:00
Pasha Sviderski
4cc1e556dd
chore: store ServiceContainer (includes service spec) instead of Container in Corrosion store
2025-08-14 14:53:33 +10:00
Pasha Sviderski
2714587ec5
feat: add RemoveMachine API endpoint to remove a machine from the cluster
2025-07-25 19:30:59 +10:00
Evgenii Orlov
2c3bea64e5
feat: impl of functionality for renaming and updating machines ( #91 )
2025-07-22 18:45:19 +10:00
da3634b690
E2E tests use repeated strings for test data where constants add no value ( #97 )
...
---------
Co-authored-by: Pasha Sviderski <me@psviderski.name >
Co-authored-by: Anton Ovchinnikov <anton@tonyo.info >
2025-07-21 19:30:02 +02:00
Evgenii Orlov
31cd4c77e9
feat: support x-machines placement constraints in compose files ( #90 )
2025-07-10 16:46:29 +10:00
Pavel Sviderski
b1abd07dde
refactor: move api, client, compose packages to pkg
2025-03-22 18:43:00 +10:00
Pavel Sviderski
3757813b20
refactor: rename main module to github.com/psviderski/uncloud
2025-03-22 18:25:08 +10:00
Pavel Sviderski
5e9b883ad5
fix: increase wait time for machine to 5 min, discard unknown when decoding json to proto
2025-02-26 12:19:04 +10:00
Pavel Sviderski
f6cf5cc250
feat(dns): cluster API for reserving/releasing cluster domain in Uncloud DNS
2025-02-24 17:35:19 +10:00
Pavel Sviderski
5e2b2ac836
refactor: api.Container to use the detailed ContainerJSON struct instead of Container (Summary)
2025-02-14 16:37:40 +10:00
Pavel Sviderski
6b80ef9db8
subscribe to container changes in Caddyfile controller
2024-12-11 15:14:32 +10:00
Pavel Sviderski
2134f3c1d9
add a stub for Caddyfile controller
2024-12-11 12:17:15 +10:00
Pavel Sviderski
3ac166e6cb
move common api types to api package
2024-12-05 15:17:36 +10:00
Pavel Sviderski
daada3bbe9
add service inspect command, introduce squirrel for sql query building
2024-12-03 10:56:29 +10:00
Pavel Sviderski
6eb373e4de
init InspectService method
2024-12-02 20:36:31 +10:00
Pavel Sviderski
e9d07687f2
build corrosion image based on wolfi]
2024-11-26 20:15:31 +10:00
Pavel Sviderski
5c1a3dd694
move generic docker types to top level docker package
2024-11-23 15:35:26 +10:00
Pavel Sviderski
3c1d2201ce
add methods to create, update, list, delete containers in store
2024-11-19 19:35:38 +10:00
Pavel Sviderski
b4c2ec3a2a
sync new and updated containers to cluster store, no deletion yet
2024-11-19 16:06:16 +10:00
Pavel Sviderski
2819ba63aa
add sync_status field to containers table
2024-11-18 19:50:40 +10:00
Pavel Sviderski
40f929847c
add updated_at field to containers table
2024-11-16 07:37:43 +10:00
Pavel Sviderski
e73e38957a
add index on containers.machine_id
2024-11-16 07:00:09 +10:00
Pavel Sviderski
e82b78df49
comment DB schema
2024-11-16 06:43:24 +10:00
Pavel Sviderski
741378d0b7
create containers table in Corrosion store
2024-11-15 21:35:33 +10:00
Pavel Sviderski
c70c8a6ec1
validate machine info before returning in ListMachine
2024-11-10 19:38:55 +10:00
Pavel Sviderski
94186b2ae7
allow to subscribe to machine changes in the cluster store
2024-10-04 16:14:59 +10:00
Pavel Sviderski
4ec87db8e8
add init machine to store when initialising a cluster
2024-10-02 11:34:54 +10:00
Pavel Sviderski
8fbf406007
relax relationship between corrosion service, init cluster with new store
2024-10-01 23:37:07 +10:00
Pavel Sviderski
667ecadd30
init cluster store backed by corrosion
2024-09-30 20:46:41 +10:00
Pavel Sviderski
3e9718f08c
update store schema when configuring corrosion, create machines table
2024-09-27 20:10:05 +10:00