Repository navigation
3.9.3
Install: composer require durable-workflow/sdk:^3.9
Upgrade from 3.9.2 now. 3.9.2 can fail existing runs on native Server 3.0.x that contain a repeated condition-wait open. 3.9.1 users should upgrade too, to keep 3.9.2's fix that stops unrelated signals from restarting a waitCondition() timeout (#269).
Fixed
- Repeated condition-wait opens (#283, #284). When a queued workflow task re-sends a still-open wait, native Server records a second physical wait, and the first wait's timer still fires later. 3.9.2 treated that timeout as finishing the first wait, split it from the chain, and replay failed with a non-determinism error. A later open now continues an earlier same-key wait if that wait was still open or satisfied when the later one opened. A timeout before the later open still makes a separate call, such as a grace period. When the deadline has already passed, the worker re-sends the wait with
timeout_seconds: 0, so the Server times it out at once andwaitCondition()returnsfalse.- Known limitation: a repeated open that the Server records after the earlier wait has already timed out is still refused by replay. Server 3.1.1 is planned to stop recording repeated opens of a still-open wait (server#1015), which removes that case.
- Request bodies keep full float precision whatever the host's
serialize_precisionis (#248, #276).
Added
open_condition_waitcommands carrycondition_wait_occurrence_id(protocol 1.17),php:condition-wait:Nfor the NthwaitCondition()ordeferCondition()call in the run (#269, #274). Every replay and reopen of one call sends the same id, so the Server can recognize a repeated open of a still-open wait. Servers that don't use it ignore it.