Artem Nikiforov
Artem Nikiforov
@iRevive, can you confirm that the issue is resolved in 3.2.3?
I think I excluded `parEvalMap` ``` val err = new IllegalArgumentException("TheException") def run: IO[Unit] = { val singleRun = Stream(()).concurrently((Stream(()) ++ Stream.raiseError[IO](err)).repeat) .handleErrorWith(ex => Stream.exec(IO.println(s"Caught ${ex.getMessage}"))) .groupWithin(512, 1.second) Stream.repeatEval(singleRun.compile.drain).compile.drain.guaranteeCase(IO.println) }...
The exception persists in 3.3.0, 3.2.4, 3.0.0, 2.5.4, 2.5.0, 2.1.0. But doesn't appear in 2.0.0. Git bisect might help to understand the cause of the error. UPD: I also checked...
This is CE2 compliant code ``` def run(args: List[String]): IO[ExitCode] = { val singleRun = Stream(()).concurrently((Stream(()) ++ Stream.raiseError[IO](err)).repeat) .handleErrorWith(ex => Stream.eval_(IO.delay(println(s"Caught ${ex.getMessage}")))) .groupWithin(512, 1.second) Stream.repeatEval(singleRun.compile.drain).compile.drain.guaranteeCase(c => IO.delay(println(c))).map(_ => ExitCode.Success) }...
I bisected 2.1.0 ... 2.0.0 ``` 659791b0fd3eef85824fbff39f8280e9931281f8 is the first bad commit commit 659791b0fd3eef85824fbff39f8280e9931281f8 Author: Diego E. Alonso-Blas Date: Sat Sep 21 01:55:06 2019 +0100 Solves memory Leak Reverts changes...
`whenM` should have call-by-name argument F[A] as in `whenA`(https://github.com/typelevel/cats/pull/4207). Otherwise, it might lead to memory leaks https://github.com/typelevel/fs2/pull/2412