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
... documents a footgun when trying to submit many IOs from a single tokio task & failing to recognize that the futures are interdependent due to the interdependence on the fixed resource of slots.
Not a problem in practice for Pageserver because we don't have that pattern there.
But, could happen that we want to do something like that in the future.
Solution
No idea whether we can leverage the Rust typesystem to prevent this.
The text was updated successfully, but these errors were encountered:
In #57 there
were doubts about the behavior when we're waiting for slots, and when we
return slots.
This PR adds test cases that demonstrate the current behavior.
The behavior demoed in
`test_slot_exhaustion_behavior_when_op_completes_but_future_does_not_get_polled`
might be surprising, but, is not a huge problem in Pageserver right now
because generally we don't have that pattern in the codebase.
Created an issue nonetheless, this can be improved:
#60closes#57
Test
test_slot_exhaustion_behavior_when_op_completes_but_future_does_not_get_polled
added here:https://github.com/neondatabase/tokio-epoll-uring/pull/61/files#diff-42ff2d8c02106563d45de5a3c6fba2769e81d4438c3afc7acc7becdc55b3ea47R399
... documents a footgun when trying to submit many IOs from a single tokio task & failing to recognize that the futures are interdependent due to the interdependence on the fixed resource of slots.
Not a problem in practice for Pageserver because we don't have that pattern there.
But, could happen that we want to do something like that in the future.
Solution
No idea whether we can leverage the Rust typesystem to prevent this.
The text was updated successfully, but these errors were encountered: