denoland/celldPublic

self-hosted, distributed Durable Objects

v0.0.2

The RPO=0 output gate is now on by default: HTTP responses, outgoing WebSocket
frames, and broadcasts are held until the cell's writes are durably replicated,
including writes from co-hosted Durable Objects. Set CELLD_OUTPUT_GATE=0 to
acknowledge writes without proving durability.

Replication now runs in-process by default via the new celld-ltx backend;
CELLD_REPLICATOR=litestream keeps the external process.

Evicting a cell now releases its ownership, nodes publish real load for
placement, and concurrent evictions are bounded. Outbound WebSockets per cell
are now bounded. Peer requests get a connect timeout, and stale WebSocket
routes are refreshed. V8 is upgraded to 152, and bootstrap bytecode is cached
across isolates. RFC 6598 overlay addresses (Tailscale) are accepted.
RDRyan Dahl authored
1d3f5bdPatch
Parent44cec22
121 files changed+31317-1325513 binary
StackedSplit
Cargo.lock+465 โˆ’87
Cargo.toml+2 โˆ’5
Dockerfile+14 โˆ’35
README.md+14 โˆ’13
crates/celld/Cargo.toml+41 โˆ’40
crates/celld/assets.rs+3 โˆ’3
crates/celld/asyncrt.rs+4 โˆ’1
crates/celld/control_plane.rs+556 โˆ’652
crates/celld/dead_node_gc.rs+387 โˆ’0
crates/celld/deploy.rs+143 โˆ’21
crates/celld/fault.rs+0 โˆ’0

No textual changes.

crates/celld/fleet.rs+590 โˆ’0
crates/celld/js.rs+1647 โˆ’1566
crates/celld/js/atob_btoa.js+0 โˆ’0

No textual changes.

crates/celld/js/byte_streams.js+0 โˆ’0

No textual changes.

crates/celld/js/compression_streams.js+0 โˆ’0

No textual changes.

crates/celld/js/crypto.js+0 โˆ’0

No textual changes.

crates/celld/js/harness.js+25 โˆ’8
crates/celld/js/headers.js+0 โˆ’0

No textual changes.

crates/celld/js/identity_transform_stream.js+0 โˆ’0

No textual changes.

crates/celld/js/node_assert.js+0 โˆ’0

No textual changes.

crates/celld/js/node_async_hooks.js+0 โˆ’0

No textual changes.

crates/celld/js/node_buffer.js+0 โˆ’0

No textual changes.

crates/celld/js/node_crypto.js+0 โˆ’0

No textual changes.

crates/celld/js/node_events.js+0 โˆ’0

No textual changes.

crates/celld/js/node_path.js+0 โˆ’0

No textual changes.

crates/celld/js/node_stream.js+0 โˆ’0

No textual changes.

crates/celld/js/node_test.js+0 โˆ’0

No textual changes.

crates/celld/js/node_timers.js+0 โˆ’0

No textual changes.

crates/celld/js/node_util.js+0 โˆ’0

No textual changes.

crates/celld/js/set_immediate.js+0 โˆ’0

No textual changes.

crates/celld/js/streams.js+0 โˆ’0

No textual changes.

crates/celld/js/text_encoding.js+0 โˆ’0

No textual changes.

crates/celld/js/text_encoding_streams.js+0 โˆ’0

No textual changes.

crates/celld/js/url.js+0 โˆ’0

No textual changes.

crates/celld/js/url_pattern.js+0 โˆ’0

No textual changes.

crates/celld/js/url_search_params.js+0 โˆ’0

No textual changes.

crates/celld/js/writable_stream.js+0 โˆ’0

No textual changes.

crates/celld/lib.rs+137 โˆ’0
crates/celld/ltx_repl.rs+516 โˆ’0
crates/celld/main.rs+5329 โˆ’0
crates/celld/ownership_store.rs+498 โˆ’0
crates/celld/peer_auth.rs+5 โˆ’6
crates/celld/peer_probe.rs+43 โˆ’47
crates/celld/protocol.rs+0 โˆ’0

No textual changes.

crates/celld/replication.rs+273 โˆ’229
crates/celld/runtime.rs+1426 โˆ’0
crates/celld/src/lib.rs+0 โˆ’6296
crates/celld/src/main.rs+0 โˆ’5
crates/celld/src/ownership.rs+0 โˆ’1486
crates/celld/src/startup.rs+0 โˆ’996
crates/celld/startup.rs+302 โˆ’0
crates/celld/storage.rs+185 โˆ’404
crates/celld/wake.rs+114 โˆ’56
crates/logic/Cargo.toml+3 โˆ’4
crates/logic/alarm.rs+0 โˆ’0

No textual changes.

crates/logic/cache.rs+4 โˆ’4
crates/logic/dead_node_reconciliation.rs+43 โˆ’0
crates/logic/lib.rs+4081 โˆ’0
crates/logic/peer.rs+0 โˆ’1
crates/logic/pressure.rs+28 โˆ’32
crates/logic/restore.rs+0 โˆ’1
crates/logic/routing.rs+4 โˆ’4
crates/logic/schedule.rs+28 โˆ’4
crates/logic/sqlite.rs+0 โˆ’1
crates/logic/src/cell.rs+0 โˆ’67
crates/logic/src/dead_node_reconciliation.rs+0 โˆ’36
crates/logic/src/evict.rs+0 โˆ’247
crates/logic/src/lease.rs+0 โˆ’172
crates/logic/src/lib.rs+0 โˆ’120
crates/logic/src/lifecycle.rs+0 โˆ’437
crates/logic/wake.rs+171 โˆ’102
crates/ltx/Cargo.toml+47 โˆ’0
crates/ltx/LICENSE+202 โˆ’0
crates/ltx/README.md+37 โˆ’0
crates/ltx/reference/litestream-go/testdata/db/enforce-retention/database+0 โˆ’0

Binary file not shown.

crates/ltx/reference/litestream-go/testdata/db/write-snapshot-to/database+0 โˆ’0

Binary file not shown.

crates/ltx/reference/litestream-go/testdata/wal-reader/frame-checksum-mismatch/wal+0 โˆ’0

Binary file not shown.

crates/ltx/reference/litestream-go/testdata/wal-reader/frame-salts/wal+0 โˆ’0

Binary file not shown.

crates/ltx/reference/litestream-go/testdata/wal-reader/ok/wal+0 โˆ’0

Binary file not shown.

crates/ltx/reference/litestream-go/testdata/wal-reader/salt-mismatch/wal+0 โˆ’0

Binary file not shown.

crates/ltx/reference/ltx-format.md+84 โˆ’0
crates/ltx/scripts/capture-golden.sh+74 โˆ’0
crates/ltx/scripts/db_equal.sh+72 โˆ’0
crates/ltx/scripts/guards.sh+42 โˆ’0
crates/ltx/src/client/file.rs+219 โˆ’0
crates/ltx/src/client/mod.rs+195 โˆ’0
crates/ltx/src/client/object_store.rs+1291 โˆ’0
crates/ltx/src/db.rs+2032 โˆ’0
crates/ltx/src/error.rs+353 โˆ’0
crates/ltx/src/leaser.rs+1665 โˆ’0
crates/ltx/src/lib.rs+533 โˆ’0
crates/ltx/src/ltx.rs+909 โˆ’0
crates/ltx/src/replica.rs+1106 โˆ’0
crates/ltx/src/replica_url.rs+719 โˆ’0
crates/ltx/src/store.rs+263 โˆ’0
crates/ltx/src/wal.rs+939 โˆ’0
crates/ltx/tests/conformance.rs+1 โˆ’0
crates/ltx/tests/differential_xtool.rs+454 โˆ’0
crates/ltx/tests/faults_inject.rs+448 โˆ’0
crates/ltx/tests/fixtures/golden/.gitkeep+1 โˆ’0
crates/ltx/tests/fixtures/golden/MANIFEST.md+39 โˆ’0
crates/ltx/tests/fixtures/golden/replica/ltx/0/0000000000000001-0000000000000001.ltx+0 โˆ’0

Binary file not shown.

crates/ltx/tests/fixtures/golden/replica/ltx/0/0000000000000002-0000000000000002.ltx+0 โˆ’0

Binary file not shown.

crates/ltx/tests/fixtures/golden/replica/ltx/0/0000000000000003-0000000000000003.ltx+0 โˆ’0

Binary file not shown.

crates/ltx/tests/fixtures/golden/replica/ltx/0/0000000000000004-0000000000000004.ltx+0 โˆ’0

Binary file not shown.

crates/ltx/tests/fixtures/golden/replica/ltx/0/0000000000000005-0000000000000005.ltx+0 โˆ’0

Binary file not shown.

crates/ltx/tests/fixtures/golden/replica/ltx/0/0000000000000006-0000000000000006.ltx+0 โˆ’0

Binary file not shown.

crates/ltx/tests/fixtures/golden/sample.wal+0 โˆ’0

Binary file not shown.

crates/ltx/tests/fuzz_parsers.rs+536 โˆ’0
crates/ltx/tests/integration_file.rs+282 โˆ’0
crates/ltx/tests/integration_minio.rs+287 โˆ’0
crates/ltx/tests/integration_resilience.rs+349 โˆ’0
crates/ltx/tests/litestream_helpers.rs+560 โˆ’0
crates/ltx/tests/property_roundtrip.rs+243 โˆ’0
docs/README.md+20 โˆ’15
docs/cloudflare-compat.md+121 โˆ’34
docs/limitations.md+6 โˆ’7
docs/security.md+1 โˆ’1
docs/simulations.md+93 โˆ’0
docs/support.md+13 โˆ’10