From 7b535e59a6d81822ef2aa70a4a8f045bb9b9a7ef Mon Sep 17 00:00:00 2001 From: eikek Date: Fri, 17 Jun 2022 22:35:08 +0200 Subject: [PATCH] Fix starting a background task to install an addon --- .../docspell/restserver/ws/Background.scala | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/modules/restserver/src/main/scala/docspell/restserver/ws/Background.scala b/modules/restserver/src/main/scala/docspell/restserver/ws/Background.scala index b0870fc5..e4858959 100644 --- a/modules/restserver/src/main/scala/docspell/restserver/ws/Background.scala +++ b/modules/restserver/src/main/scala/docspell/restserver/ws/Background.scala @@ -24,20 +24,15 @@ object Background { )(run: F[A])(implicit enc: OutputEventEncoder[A]): F[Unit] = { val log = logger.getOrElse(docspell.logging.getLogger[F]) Async[F] - .background(run) - .use( - _.flatMap( - _.fold( - log.warn("The background operation has been cancelled!"), - ex => log.error(ex)("Error running background operation!"), - event => - event - .map(enc.encode) - .flatTap(ev => log.info(s"Sending response from async operation: $ev")) - .flatMap(wsTopic.publish1) - .void - ) - ) - ) + .start { + run.map(enc.encode).attempt.flatMap { + case Right(ev) => + log.info(s"Sending response from async operation: $ev") *> + wsTopic.publish1(ev).void + case Left(ex) => + log.warn(ex)(s"Background operation failed!") + } + } + .as(()) } }