From 271bf2c27f06e5e13a2caa321b7e14b0ac224ff7 Mon Sep 17 00:00:00 2001 From: Krzysiek Ciesielski Date: Thu, 9 Nov 2023 17:56:19 +0100 Subject: [PATCH] [bugfix] Fix blocking implementation for CatsMonadAsyncError (#3309) --- .../scala/sttp/tapir/integ/cats/effect/CatsMonadError.scala | 1 + .../sttp/tapir/server/armeria/cats/CatsMonadAsyncError.scala | 3 +++ 2 files changed, 4 insertions(+) diff --git a/integrations/cats-effect/src/main/scala/sttp/tapir/integ/cats/effect/CatsMonadError.scala b/integrations/cats-effect/src/main/scala/sttp/tapir/integ/cats/effect/CatsMonadError.scala index 5cc409a6f0..654de29e3c 100644 --- a/integrations/cats-effect/src/main/scala/sttp/tapir/integ/cats/effect/CatsMonadError.scala +++ b/integrations/cats-effect/src/main/scala/sttp/tapir/integ/cats/effect/CatsMonadError.scala @@ -13,4 +13,5 @@ class CatsMonadError[F[_]](implicit F: Sync[F]) extends MonadError[F] { override def suspend[T](t: => F[T]): F[T] = F.defer(t) override def flatten[T](ffa: F[F[T]]): F[T] = F.flatten(ffa) override def ensure[T](f: F[T], e: => F[Unit]): F[T] = F.guaranteeCase(f)(_ => e) + override def blocking[T](t: => T): F[T] = F.blocking(t) } diff --git a/server/armeria-server/cats/src/main/scala/sttp/tapir/server/armeria/cats/CatsMonadAsyncError.scala b/server/armeria-server/cats/src/main/scala/sttp/tapir/server/armeria/cats/CatsMonadAsyncError.scala index 2bbe9bd4e3..56cc347079 100644 --- a/server/armeria-server/cats/src/main/scala/sttp/tapir/server/armeria/cats/CatsMonadAsyncError.scala +++ b/server/armeria-server/cats/src/main/scala/sttp/tapir/server/armeria/cats/CatsMonadAsyncError.scala @@ -9,4 +9,7 @@ import sttp.tapir.integ.cats.effect.CatsMonadError private class CatsMonadAsyncError[F[_]](implicit F: Async[F]) extends CatsMonadError[F] with MonadAsyncError[F] { override def async[T](register: ((Either[Throwable, T]) => Unit) => Canceler): F[T] = F.async(cb => F.delay(register(cb)).map(c => Some(F.delay(c.cancel())))) + + override def blocking[T](t: => T): F[T] = + F.blocking(t) }