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
After collecting a synchronous checkpoint, the collector waited up to
100 ms on an empty queue. The caller waits until the batch persists, so
it cannot add work. The wait only delayed it. Sequential steps paid it
once per step.
Once a batch holds a synchronous checkpoint, wait 1 ms on an empty
queue instead. A batch with no blocked caller keeps the full window, so
a step's asynchronous START still shares a request with its SUCCEED.
With a 1 ms window, refreshes from independent coordinators can split
into separate requests when they arrive more than 1 ms apart. A refresh
is the empty checkpoint a coordinator sends to see that a wait has
ended. The coordinator knows the end time when the branch suspends, so
it now requests the refresh then, with that time attached, through
ExecutionState.schedule_refresh. The collector holds refreshes until
their time and sends all refreshes due at one time in one request. A
refresh scheduled before a batch is sealed joins it. Failure, completion
and shutdown settle every pending refresh.
On Lambda at 1024 MB, 1000 sequential steps went from 142 ms to 41 ms
per step. Ten nested coordinators resumed a wave 89 to 104 ms after its
end time instead of 288 to 303 ms.
Fixes#710
0 commit comments