Repository navigation
Releases: ewhauser/celld
Release list
v0.6.2-ewhauser.5
v0.6.2-ewhauser.4
Package the current fork main at version 0.6.2-ewhauser.4 after merging the peer tunnel fix from PR #134 (issue #133).
Peer calls over /peer/tunnel no longer hang on a pooled connection whose network path died silently, such as a flow a stateful firewall, NAT, or proxy expired while it sat idle. Previously such a call waited about 15 minutes for the kernel to abandon the socket, and every hung call stranded another dead tunnel in the pool.
- A pooled tunnel idle for CELLD_PEER_TUNNEL_IDLE_MS (default 60000) is closed instead of reused. Keep the value below the idle timeout of any middlebox between nodes. Reuse now prefers the newest tunnel, so the surplus from a burst ages out.
- Each tunneled call waits at most the admission wait plus the handler budget plus CELLD_OPERATION_DEADLINE_MS for its reply. On expiry celld closes that tunnel and fails the call as ambiguous; it is never replayed, because the owner may already have run it.
This release adds no storage-format or protocol change. Real Snowflake and production AWS behavior remain unqualified.
v0.6.2-ewhauser.3
Package the current fork main at version 0.6.2-ewhauser.3 after merging the transaction slot fix from PR #131.
storage.transaction() now releases its _transactionTail slot and rejects when its blockConcurrencyWhile waiter is retired before the callback runs (a spent handler budget, a shutdown cancel, or a terminated isolate). Previously the leaked slot made every later transaction on the object wait until the 30s block limit reset it.
This release adds no storage-format change and no new features. Real Snowflake and production AWS behavior remain unqualified.
v0.6.2-ewhauser.2
Package the current fork main at version 0.6.2-ewhauser.2 after merging the topic-keyed Snowflake loader audit and reconciliation support from PR #128.
The new --consumer-topic option scopes Snowflake reads, findings, tombstones, and landed rows to one Kafka topic, and starts the shared EXPORT_ROUTE and EXPORT_ERASE tasks in topic mode. It is included in the Kafka-enabled native binaries and -kafka container image, which build with export-kafka and export-snowflake. The standard binary and image do not include the Snowflake audit feature.
The separate Snowflake loader remains a source build. This release adds no storage-format change. The merged source passed CI, TCK, and Export Snowflake checks, including the topic-mode tests. Real Snowflake and production AWS behavior remain unqualified.
v0.6.2-ewhauser.1
Merge upstream celld v0.6.2 into the fork while retaining its DynamoDB coordination, change export, telemetry, operator integrations, and default and Kafka release variants.
Upstream v0.6.2 includes fixes for forwarded Durable Object fetch errors, WebSocket handling, .env parsing in celld dev, bucket-durable epoch GC, torn WAL header recovery, eviction compaction, and several Worker and fleet issues. See the upstream v0.6.2 notes for the full list.
The fork package version is 0.6.2-ewhauser.1. Release assets include default and Kafka-enabled binaries for Linux x86_64, Linux aarch64, and macOS aarch64, plus build records, checksums, and provenance. The container phase publishes corresponding Linux amd64 and arm64 images after this release is published.
The merged source passed the fork's CI and TCK checks. Nine known-bug observations and three divergences were reviewed against v0.6.2; untested repro expectations remain scoped to v0.6.1. Pin the verified container manifest digest when deploying with the operator. This release does not establish real AWS or EBS qualification.
v0.6.1-ewhauser.4
Fix export reconciliation, rollout readiness, and scheduled performance checks.
- Read cell LTX keys in the layout the replica client writes, and refuse to reconcile an unrecognized LTX inventory instead of reporting zero cells.
- Reject a bucket audit consumer when the configured export sink has no bucket output. The Kafka release variant now includes the Snowflake audit feature for reconcile, verify, and erase.
- Let a healthy joining node become ready when an incumbent's inactive file cache is the only obstacle to rollout headroom. Local hard-cap shedding remains based on the full cgroup charge; readiness logs keep reporting the current blocker after the observation deadline.
- Keep shared-runner latency changes visible without failing scheduled performance runs on timing alone. Prevent the performance harness from assigning the same port to two listeners in one fleet.
The release does not change the storage format. External fleet and Snowflake behavior still needs qualification in the target environment.
v0.6.1-ewhauser.3
Publish Kafka-enabled release artifacts alongside the default Celld build.
- Add celld-kafka binaries for Linux x86_64, Linux aarch64, and macOS aarch64, built with export-kafka.
- Add the -kafka container variant for Linux amd64 and arm64, with variant-specific tags, build records, and provenance. The default image retains the bucket sink and the Kafka variant never claims latest.
- Keep blob-stream and Snowflake audit features opt-in source builds. The separate Snowflake loader is not a release asset.
- Handle missing performance baselines without failing otherwise successful runs.
Use the -kafka image when configuring the Kafka change-export sink and pin its verified manifest digest. This release changes artifact availability; it does not change the storage format or establish real-AWS or Snowflake qualification.
v0.6.1-ewhauser.2
Fork maintenance release based on upstream v0.6.1.
- Reduce storage overhead by draining dirty cells in LTX loops, reusing LZ4 encoder state, scanning WAL frame headers for full checkpoints, and allocating LTX paths and bucket keys once.
- Reduce change-export overhead with one-pass record decoding, shared ownership reads, single encoding per record, and a delivery cache sized to its working set. Exclude rowid-only tables that shadow rowid from capture.
- Improve dev-store listing by scanning key ranges instead of reading every object. Enable jemalloc background threads only on supported Linux and FreeBSD targets.
- Improve the optional Snowflake loader with reused append buffers, direct JSON body extraction, jemalloc, VARIANT landing bodies, and views compatible with incremental Dynamic Tables. The loader remains a separately built tool, not a release asset.
The release binaries retain the default bucket export sink; Kafka, blob-stream, and Snowflake audit features remain opt-in source builds. DynamoDB remains optional and bucket coordination remains the default. This release does not establish real-AWS DynamoDB or EKS/EBS qualification.
Performance validation now provisions enough file descriptors for 10,000-cell workloads, applies the idle-fleet request budget per node, and handles an absent historical baseline without failing reporting. S16 activation, S7 saturation, S9 memory, and both F9 fleet sizes passed three repetitions each. The final focused workflow passed, including the reporting path; no historical baseline comparison was available.
Release artifacts: Linux x86_64, Linux aarch64, and macOS aarch64. Native checksums and build provenance are verified, and the packaged macOS binary passed a Durable Object write/restart persistence smoke test.
v0.6.1-ewhauser.1
Fork prerelease based on upstream v0.6.1, retaining everything in v0.6.0-ewhauser.2.
- Upstream v0.6.1: Python Workers, epoch GC (CELLD_LTX_RETENTION_SECS), celld cell gc --dry-run, configurable asset and Dynamic Worker size limits, log severity, and the WebSocket ordering fixes (#90).
- Change export, off by default. A node exports each committed row change of the classes it is told to export, as a convergent mirror of each cell's tables, with the celld export repair, backfill, inspect, reconcile, verify and erase commands. The release build carries the bucket sink; the blob-stream sink, the Kafka sink and the Snowflake audit are Cargo features the release binaries and image do not enable. celld-export-loader loads a blob-stream or Kafka topic into Snowflake through Snowpipe Streaming and is not a release asset. See docs/export.md.
- Optional DynamoDB control plane. CELLD_CONTROL=dynamodb://TABLE keeps leases, cell ownership, deploy pointers and node load in a table instead of the bucket; bucket coordination stays the default. celld control init, migrate and repair-epochs create, move and repair a table fleet. See docs/dynamodb-control.md.
- Cell runtimes start off the core thread, a lone dev node activates fresh cells faster, an alarm set years ahead no longer aborts the node (#75), and celld dev nodes stop when their supervisor dies on macOS.
Nodes can roll from 0.6.0-ewhauser.2. Set CELLD_LTX_RETENTION_SECS, deploy a Python Worker, or raise CELLD_MAX_ASSET_FILE_BYTES above 25 MiB only after every node runs this build. The Snowflake path is tested against an emulator only and the DynamoDB table path is not qualified against real AWS. This release does not establish EKS/EBS qualification.
v0.6.0-ewhauser.2
Fork prerelease based on upstream v0.6.0, retaining everything in v0.6.0-ewhauser.1.
- OTLP metrics (#23). With CELLD_OTEL set to a collector URL, celld exports node load gauges read from the same snapshot /state serves, plus fleet-wide distributions of per-cell CPU (celld.cell.cpu_time) and per-cell V8 heap (celld.cell.heap_bytes), as delta exponential histograms with no per-cell attributes. On by default with a collector, every 60 seconds; OTEL_METRICS_EXPORTER=none turns them off, and OTEL_RESOURCE_ATTRIBUTES adds resource attributes such as a fleet name to every OTLP signal. While metrics are on, celld reads the thread CPU clock around every cell turn.
- Retired operator APIs removed (#19). Strict disk-removal shutdown and /state.node_log reporting are gone; a shutdown request with a mode parameter now returns HTTP 400 without stopping the process. Ordinary and preserve shutdown are unchanged.
Nodes can roll from 0.6.0-ewhauser.1: there are no record or storage format changes, and peers stay compatible in both directions. This release does not establish EKS/EBS qualification.