Change log
查看 MarkdownThis page lists user-visible changes to server-zd, newest first; each section covers the changes since the previous release of this component.
0.1.20
Released 2026-11-06 as server-zd/v0.1.20. Reference: 0.1.20.
Breaking
- dev and local now default to 32 partitions instead of 1024; serve keeps 1024. To keep an existing 1024-partition directory, set cluster.partitionCount to 1024 in --config. Reference.
- dev now honors api.listen from --config when --listen is absent. Review copied configuration files or pass --listen explicitly to keep the previous bind address. Reference.
Added
- dex-server-zd local runs a single production node on local disk with the same data directory layout and lock as dev. It allows a 30-second Step attempt drain by default. Reference.
- dev and local warn at startup when listening on a non-loopback address without authenticators. Reference.
Changed
- Partition-count mismatch errors report the data directory and both counts. A hot standby classifies the mismatch as a configuration error. Reference.
0.1.19
Released 2026-11-06 as server-zd/v0.1.19. Reference: 0.1.19.
Breaking
- streamStore.backend now defaults to memory for serve as well as dev. Set it to disabled to retain rejection of Client Stream calls with FAILED_PRECONDITION. Reference.
- streamStore.maxTotalBytes caps node Stream data at 1 GiB by default; writes beyond it return RESOURCE_EXHAUSTED. Raise this setting and streamStore.maxStreamCapacityBytes (64 MiB by default) if applications need larger buffers. Reference.
Added
- dexzd_step_stream_writes_dropped_total counts dropped Step Stream writes by reason. These best-effort writes still never fail the Step. Reference.
- Startup warns when streamStore.backend is disabled. Reference.
Changed
- A Stream message too large to fit still returns RESOURCE_EXHAUSTED, with an error explaining that it can never fit. The rejection no longer trims that Stream. Reference.
Fixed
- streamStore.estimatedMessageOverheadBytes, streamStore.backgroundTrimBatchSize, streamStore.trimBatchYieldTime, and streamStore.trimWorkers now take effect. Reference.
- A rejected Stream write requests enough trimming to make room for itself, preventing continued rejection while usage sits at the trim target. Reference.
- Stream message identities keep increasing after trimming removes a Stream and a write recreates it, so resume tokens do not skip new messages. Reference.
0.1.18
Released 2026-11-05 as server-zd/v0.1.18. Reference: 0.1.18.
Breaking
- dev now defaults to strict durability and flushes acknowledged writes to disk. Pass --durability process-crash-safe or set dev.durabilityMode to processCrashSafe for the previous behavior. Reference.
- Strict startup fails if the embedded store cannot open or flush its data directory or an ancestor directory. Fix the named directory before restarting. Release notes.
- All durability modes refuse a data directory left unclean by a release before 0.1.4. Delete that directory to start empty; cleanly stopped directories remain usable. Release notes.
Added
- dex-server-zd dev --durability selects strict, process-crash-safe, or relaxed and overrides dev.durabilityMode. Reference.
Changed
- The embedded object store is now named s3local. Its on-disk format is unchanged. Release notes.
Fixed
- Strict writes flush parent directory entries, including existing directories and concurrent creation, before acknowledging writes. Release notes.
0.1.17
Released 2026-11-05 as server-zd/v0.1.17. Reference: 0.1.17.
Breaking
- Protocol version 4 requires a coordinated server upgrade: stop all old active and standby processes before starting the new version, then upgrade SDKs. After the new binary writes to a storage prefix, roll forward or restore a pre-upgrade backup into a new prefix. Reference.
- A Step attempt interrupted after its hand-out was committed now fails with NOT_COMPLETED and consumes a retry. Review retry policies and side effects before upgrading. Reference.
- Retry total duration starts at the first hand-out and only gates scheduling another retry. Use method timeouts to bound a running attempt. Reference.
- Steps with no available or supporting Worker now wait durably instead of failing with NO_WORKER_AVAILABLE. Set a Flow timeout when that wait must be bounded; matching.dispatchWait now applies only to RPCs. Reference.
- Worker startup fails when its requested concurrency exceeds matching.maxConcurrentTasksCap (256 by default). Lower Worker concurrency or raise that cap and matching.maxStreams first. Reference.
- limits.maxChildFlowResultBytes now limits child Flow results to 16 MiB by default. Raise it before starting affected runs or reduce result size. Reference.
Added
- Protocol version 4 records Step attempt start at hand-out to a reserved Worker slot and reports attempt_progress in recovery errors. The minimum supported protocol remains unchanged, so older SDKs keep working. Reference.
- lifecycle.attemptDrainTimeout lets planned stops and step-downs drain running attempts for 30 seconds by default, or 2 seconds under dev. Set Kubernetes terminationGracePeriodSeconds longer than this timeout. Reference.
- matching.syncMatchWait, matching.headsResyncInterval, matching.headsMaxSkippedDeletions, and matching.unsupportedTypeCacheEntries configure durable Step dispatch. Release notes.
- dexzd_step_task_queue_entries and dexzd_step_task_queue_oldest_age_seconds expose durable backlog. The entries gauge can read low during background counting after recovery; use oldest age meanwhile. Reference.
Changed
- The RPC lock-conflict message now says “a Step” instead of “a running Step”. Reference.
Fixed
- limits.maxFlowStateBytes now checks state growth across Step attempts and RPCs that change Flow state. Reference.
0.1.16
Released 2026-11-02 as server-zd/v0.1.16. Reference: 0.1.16.
Fixed
- A process that steps down and takes its own lease back resumes serving instead of exiting. Public calls still running after lease release end with UNAVAILABLE and may be retried. Reference.
- Only the newest gRPC server instance accepts new connections, preventing startup refusals after readiness reports SERVING and first-call connection errors. Release notes.
Older releases: GitHub releases.