-
Notifications
You must be signed in to change notification settings - Fork 605
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
parEvalMap deadlocks when Stream's F
has extra error channels
#3199
Comments
Interesting, not sure I understand how that would work :) So to me this feels like a variant of typelevel/cats#4308. Specifically, see my comment typelevel/cats#4308 (comment).
Ideally we should be using a |
This also happens on 3.7.0 and CE 3.5.0 Seems to be triggered with translate and doobie ConnectionIO |
That's unrelated, and due to the way |
Tested and reproduced on version 3.2.7 and 3.6.1
This happens because in
parEvalMapUnordered
, the results of the evalMap action are passed back to the controlling stream using a callback inF
.But when
F
has a failure mode other thanraiseError
, theEither[Throwable, Result] => ...
callback can't be invoked - leading to deadlock.The fix for this probably involves using
Outcome
instead of theEither
-based callback.This fails the same way when using
EitherT
instead of IorTThanks to @armanbilge and @ChristopherDavenport for your help in debugging!
The text was updated successfully, but these errors were encountered: