[Yield] Support invocations to yield on transient errors#4725
[Yield] Support invocations to yield on transient errors#4725AhmedSoliman wants to merge 1 commit into
Conversation
Test Results 8 files ± 0 8 suites ±0 2m 43s ⏱️ - 2m 6s Results for commit 96b03fe. ± Comparison against base commit 5ea7c39. This pull request removes 17 tests.♻️ This comment has been updated with latest results. |
b824fb7 to
c8ebcb2
Compare
1b4b644 to
3c4e111
Compare
a0d3f06 to
90f61fc
Compare
tillrohrmann
left a comment
There was a problem hiding this comment.
Great work @AhmedSoliman 🚀 Looking forward to finally releasing invoker slots when retrying for prolonged times :-) LGTM. +1 for merging.
|
|
||
| use restate_util_time::{FriendlyDuration, NonZeroFriendlyDuration}; | ||
|
|
||
| const DEFAULT_INVOCATION_YIELD_THRESHOLD: FriendlyDuration = FriendlyDuration::from_secs(2); |
There was a problem hiding this comment.
A comment in the invocation state machine said that the threshold is 1 second.
| bilrost::empty_state_via_default!(ByteCount<true>); | ||
|
|
||
| bilrost::delegate_proxied_encoding!( | ||
| use encoding (bilrost::encoding::Varint) |
There was a problem hiding this comment.
Why are we encoding ByteCount as a varint? Is the space saving benefit big enough for the added decoding cycles? Or is it because of wire compatibility with another format?
| bilrost::empty_state_via_for_overwrite!(ByteCount<false>); | ||
|
|
||
| bilrost::delegate_proxied_encoding!( | ||
| use encoding (bilrost::encoding::Varint) |
Full implementation for yielding invocations from the invoker back to the vqueues scheduler. This unifies with the existing support for memory-budget-based invocation yielding.
Full implementation for yielding invocations from the invoker back to the vqueues scheduler. This unifies with the existing support for memory-budget-based invocation yielding.
Stack created with Sapling. Best reviewed with ReviewStack.