You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Breaking Changes
Upgrade order. Mixed versions are not supported. Stop every old process (active, hot standby, cold standby), then start the new version. Upgrade the server before the SDKs. The next SDK releases require protocol 4 and fail clearly against an older server.
Interrupted attempts. A SYNC attempt interrupted after hand-out (server restart, failover, lease loss) fails with NOT_COMPLETED and spends a retry. ASYNC attempts now behave the same.
Retry total duration. TotalDuration only gates scheduling a retry after a failure. It never stops a running attempt, which is bounded only by the method timeout. IsRetryTotalDurationExceeded returns false on server-zd. Workers on released SDKs see the new Step deadline as soon as the server is upgraded. The released Python and TypeScript v1.32.0 test suites each have one test that asserts the old rule.
Steps with no Worker. Steps no longer fail with NO_WORKER_AVAILABLE. They wait in a durable queue until a Worker takes them, the Flow times out, or the Flow stops. This includes Step types that no connected Worker supports. matching.dispatchWait now applies only to RPCs.
Worker limit. A Worker whose MaxConcurrentTasks is above matching.maxConcurrentTasksCap (256) fails to start. Raise matching.maxStreams and the cap first.
Child Flow results. New limits.maxChildFlowResultBytes (16 MiB by default). A child Flow result larger than this, previously accepted, now fails the child, and the parent receives an ordinary child failure.
Error text. The RPC lock-conflict message changes from "a running Step" to "a Step".
server-zd v0.1.17
Features
Step attempts start at hand-out (#1253). "Started" now means "handed to a Worker that reserved a slot". A task that was never handed out never reports an unknown outcome. RecoveryErrorInfo has attempt_progress: NOT_STARTED or NOT_COMPLETED. Protocol version 4.
Durable Step task queue (#1259). Steps that no Worker takes right away wait in a durable queue per tenant, Flow type and Step type. Dex Web shows each active Step method's phase, pending reason, attempt and wait time.
Planned stops drain (#1258, fixes #1240). A planned stop or step-down drains running Step attempts for up to lifecycle.attemptDrainTimeout. Set Kubernetes terminationGracePeriodSeconds longer than this.
Fixes
Run state limit (#1234, fixes #1226).limits.maxFlowStateBytes now bounds a Flow's state across Step attempts and RPCs that change Flow state.
New settings
matching.syncMatchWait: 200 ms.
matching.headsResyncInterval: 5 min.
matching.headsMaxSkippedDeletions.
matching.unsupportedTypeCacheEntries. Raise it when its evictions metric or its WARN appears.
lifecycle.attemptDrainTimeout: 30 s; 2 s under dex-server-zd dev.
limits.maxChildFlowResultBytes: 16 MiB.
New metrics
Queue depth and oldest age, recovered refs, and incomplete scans and seeks. After a restart the entries gauge can read low until the background counts finish. Use the oldest-age gauge meanwhile.
Upgrade
Stop every old process, including standbys, then start v0.1.17.
Before server-zd 1.0, rolling a node back to an older 0.x binary after a newer one has run is not supported.
Artifacts
Container image dex-server-zd:0.1.17 for linux/arm64 and linux/amd64.
dex-server-zd binaries for Linux amd64, Linux arm64 (glibc 2.28 or newer), macOS arm64 and macOS amd64, with checksums.txt.