Git Product home page Git Product logo

Comments (9)

dsilvasc avatar dsilvasc commented on May 22, 2024 1

Another way to keep AsyncHttp from blocking jvm shutdown is to pass in your own thread factory to the netty timer and make the timer thread a daemon thread.

See also apache/druid#5076

Example config:

  private def defaultClient(options: SttpBackendOptions): AsyncHttpClient =
    new DefaultAsyncHttpClient(
      new DefaultAsyncHttpClientConfig.Builder()
        .setConnectTimeout(options.connectionTimeout.toMillis.toInt)
        // use a daemon thread for the netty timer
        // see also https://github.com/apache/incubator-druid/pull/5076
        .setNettyTimer(new HashedWheelTimer(new ThreadFactoryBuilder().setDaemon(true).build()))
        .build())

from sttp.

aeons avatar aeons commented on May 22, 2024

Try calling handler.close.

from sttp.

adamw avatar adamw commented on May 22, 2024

As @aeons mentioned, I think you need to close the handler as well. Could you paste your full example?

Also, instead of creating a custom ExecutionContext, you can use the global one by importing ExecutionContext.Implicits.global

from sttp.

nrinaudo avatar nrinaudo commented on May 22, 2024

I think I'm running into something similar:

import com.softwaremill.sttp._
import com.softwaremill.sttp.okhttp._
import scala.concurrent.Future
import scala.concurrent._
import scala.concurrent.duration._

object Evaluate extends App {
  implicit val handler = OkHttpFutureHandler()

  val response: Future[Response[String]] =
    sttp
      .post(uri"http://localhost")
      .send()

  println(Await.result(response, 500.millis))
}

This prints the expected response, then hangs:

  • for ~= 60 seconds before quitting
  • forever if I swap okhttp out for async handler (in its Future mode)

from sttp.

nrinaudo avatar nrinaudo commented on May 22, 2024

At the suggestion of @aeons , I've added a hander.close call at the end:

  • ok http: nothing changes
  • async http: it takes a while to close, but it does (about 4 seconds on my local computer)

from sttp.

adamw avatar adamw commented on May 22, 2024

Indeed, however this only happens for OkHttpFutureHandler. When using OkHttpSyncHandler, the app finishes immediately

from sttp.

adamw avatar adamw commented on May 22, 2024

I think with async http client taking 4 seconds to close - not something we can influence, sttp is just calling the client's close() method. I suppose terminating and joining all the threads for some reason takes up so much time.

from sttp.

omainegra avatar omainegra commented on May 22, 2024

This is caused by the internal dispatcher of OkHttp, which is used only for async operations, like OkHttpFutureHandler and OkHttpMonixHandler. I just created a PR #32 that fixes this

from sttp.

adamw avatar adamw commented on May 22, 2024

OkHttp should be fixed in 0.11. AsyncHttp should use close() :)

from sttp.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.