tapir icon indicating copy to clipboard operation
tapir copied to clipboard

[BUG] Error when accessing swagger UI

Open iodone opened this issue 2 years ago • 1 comments

Tapir version: *** 1.0.0 Scala version: *** 2.13.8

Describe the bug

My code:

import sttp.tapir.swagger.bundle.SwaggerInterpreter

  private lazy val endpoints = List(
    AuthEndpoint.checkTable,
    AuthEndpoint.checkPermission,
    TestEndpoint.helloWorld
  )

  private lazy val swaggerEndpoints = SwaggerInterpreter().fromEndpoints[Future](endpoints, "xxxx", "xxxx")
  lazy val route: Route =
    serverInterpreter.toRoute(swaggerEndpoints)

The following error occurs when accessing the url: 0.0.0.0:8080/docs

Uncaught error from thread [guard-akka-http-server-akka.actor.default-dispatcher-5]: 'java.lang.Object sttp.monad.MonadError.blocking(scala.Function0)', shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled for ActorSystem[guard-akka-http-server]
java.lang.NoSuchMethodError: 'java.lang.Object sttp.monad.MonadError.blocking(scala.Function0)'
	at sttp.tapir.static.Resources$.$anonfun$resources$2(Resources.scala:36)
	at scala.util.Try$.apply(Try.scala:210)
	at sttp.monad.MonadError.handleError(MonadError.scala:26)
	at sttp.monad.MonadError.handleError$(MonadError.scala:25)
	at sttp.monad.FutureMonad.handleError(MonadError.scala:128)
	at sttp.monad.syntax$MonadErrorOps.handleError(MonadError.scala:58)
	at sttp.tapir.static.Resources$.resources(Resources.scala:37)
	at sttp.tapir.static.Resources$.$anonfun$apply$1(Resources.scala:17)
	at sttp.tapir.server.interpreter.ServerInterpreter$$anon$2.$anonfun$onDecodeSuccess$1(ServerInterpreter.scala:197)
	at sttp.monad.syntax$MonadErrorOps.flatMap(MonadError.scala:57)
	at sttp.tapir.server.interpreter.ServerInterpreter$$anon$2.onDecodeSuccess(ServerInterpreter.scala:198)
	at sttp.tapir.server.interceptor.decodefailure.DecodeFailureInterceptor$$anon$1.onDecodeSuccess(DecodeFailureInterceptor.scala:15)
	at sttp.tapir.server.interceptor.content.UnsupportedMediaTypeInterceptor$$anon$1.onDecodeSuccess(UnsupportedMediaTypeInterceptor.scala:28)
	at sttp.tapir.server.interceptor.log.ServerLogEndpointInterceptor$$anon$2.$anonfun$onDecodeSuccess$2(ServerLogInterceptor.scala:36)
	at sttp.monad.syntax$MonadErrorOps.flatMap(MonadError.scala:57)
	at sttp.tapir.server.interceptor.log.ServerLogEndpointInterceptor$$anon$2.$anonfun$onDecodeSuccess$1(ServerLogInterceptor.scala:37)
	at scala.util.Try$.apply(Try.scala:210)
	at sttp.monad.MonadError.handleError(MonadError.scala:26)
	at sttp.monad.MonadError.handleError$(MonadError.scala:25)
	at sttp.monad.FutureMonad.handleError(MonadError.scala:128)
	at sttp.monad.syntax$MonadErrorOps.handleError(MonadError.scala:58)
	at sttp.tapir.server.interceptor.log.ServerLogEndpointInterceptor$$anon$2.onDecodeSuccess(ServerLogInterceptor.scala:40)
	at sttp.tapir.server.interceptor.exception.ExceptionInterceptor$$anon$1.$anonfun$onDecodeSuccess$1(ExceptionInterceptor.scala:19)
	at scala.util.Try$.apply(Try.scala:210)
	at sttp.monad.MonadError.handleError(MonadError.scala:26)
	at sttp.monad.MonadError.handleError$(MonadError.scala:25)
	at sttp.monad.FutureMonad.handleError(MonadError.scala:128)
	at sttp.tapir.server.interceptor.exception.ExceptionInterceptor$$anon$1.onDecodeSuccess(ExceptionInterceptor.scala:19)
	at sttp.tapir.server.interpreter.ServerInterpreter.$anonfun$tryServerEndpoint$16(ServerInterpreter.scala:128)
	at sttp.monad.syntax$MonadErrorOps.map(MonadError.scala:56)
	at sttp.tapir.server.interpreter.ServerInterpreter.$anonfun$tryServerEndpoint$15(ServerInterpreter.scala:129)
	at sttp.tapir.server.interpreter.ServerInterpreter$ResultOrValue.$anonfun$flatMap$2(ServerInterpreter.scala:237)
	at scala.concurrent.impl.Promise$Transformation.run(Promise.scala:470)
	at akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:63)
	at akka.dispatch.BatchingExecutor$BlockableBatch.$anonfun$run$1(BatchingExecutor.scala:100)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
	at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:94)
	at akka.dispatch.BatchingExecutor$BlockableBatch.run(BatchingExecutor.scala:100)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:49)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(ForkJoinExecutorConfigurator.scala:48)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)

What is the problem?

How to reproduce?

Maybe you can provide code to reproduce the problem?

Additional information

iodone avatar Jul 13 '22 08:07 iodone

Do you have any other dependencies in your project? Any non-standard classloader / classpath setup?

adamw avatar Jul 18 '22 14:07 adamw

I could not reproduce this with Tapir 1.3.0. Feel free to reopen if you're still having such issues with Swagger endpoints.

kciesielski avatar May 05 '23 08:05 kciesielski