в http4s по-умолчанию не cancellable?
                  
                  
                  
                  
                  
                  Правильный / самый короткий ли способ исправить эту ситуацию что-то вроде такого:
                  
                  
                    def initializeServer: IO[Unit] =
                  
                  
                      for {
                  
                  
                        terminateWhenTrue <- SignallingRef[IO, Boolean](false)
                  
                  
                        exitCode <- Ref.of[IO, ExitCode](ExitCode.Success)
                  
                  
                        _ <- IO.cancelable[Unit] { _ =>
                  
                  
                          BlazeServerBuilder[IO]
                  
                  
                          .bindHttp(8080)
                  
                  
                          .withHttpApp(app)
                  
                  
                          .serveWhile(terminateWhenTrue, exitCode)
                  
                  
                          .compile
                  
                  
                          .drain
                  
                  
                          terminateWhenTrue.set(true)
                  
                  
                        }
                  
                  
                      } yield ()
                  
                  
                  
                  
                  
                  Предвосхищая вопросы о том зачем это нужно: чтобы без sbtRevolver / fork работал в sbt Ctrl-C при использовании IOApp.
                  
                  
                
https://gist.github.com/eld0727/4d0bebbb9f9e513f07e74bdb1d3ce2a4
Короче зря я ругал http4s. Оказалось что просто не вызывается всё-таки cancellation в IOApp когда в sbt нажимаешь Ctrl-C если там нет форка :(
Обсуждают сегодня