Qualify long-lived workflow histories on published Server artifacts - #245
Conversation
|
Mixed-history candidate slice is now in commit Published Server 2.4.21 (index This is correctness and recovery evidence with a serious latency finding, not a qualified limit. The first-to-last durable signal span was 441.225 seconds. The first run finished about 34 minutes 50 seconds after the last signal event, including timeout and lease wait. For the 16 post-offer workflow tasks, created-to-completed p50/p95/p99 were 15.74/160.00/160.00 seconds. A MySQL snapshot showed a scheduler transaction modifying 3,308 rows and holding 4,601 locks while an HTTP completion transaction waited on a task lock. Workflow #573 and draft PR #574 own a bounded repair path. The highest logged PHP request allocation was 92 MiB. Eight queue-worker container restarts occurred without Docker OOM; the exact recycling cause was not established. Active SDK-worker peak RSS and per-signal API latency for this timed-out run were not captured. The updated fixture emits offer metrics before worker processing, accepts a bounded worker window and resume run ID, and verifies legitimate activity retry starts separately from single durable completions. A fresh 10-signal default-mode smoke passed. This branch remains draft pending the same-shape comparison with the watchdog fix, PostgreSQL, external payloads, retention and published-package conformance. |
Scope
Qualifies Server #237 against the exact published Server 2.4.26 image, PHP SDK 2.1.6, Python SDK 2.3.7, Rust SDK 2.1.2, Workflow 2.2.18, Waterline 2.0.7 and CLI 2.1.2. This PR adds reproducible synthetic evidence and Server operating guidance. The product defects found during qualification were fixed and released in their owning repositories.
Results
Operating decision
Keep the default warning at 8,000 events or 4 MiB and the continue-as-new recommendation at 10,000 events or 5 MiB. Server reference now explains the counters, continuation, recovery and retention practice. The evidence supports the tested published tuple and limits; it does not claim a universal capacity number. Automatic age-based expiry and remote object-store cleanup were not exercised by the targeted retention run.
Checks