twitter/finagle

Unable to stop CollectClosables thread

Open

#758 aperta il 6 feb 2019

Vedi su GitHub
 (8 commenti) (0 reazioni) (0 assegnatari)Scala (1435 fork)batch import
help wanted

Metriche repository

Star
 (8864 star)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

Hello we are using Finagle as a HttpClient - it works really good. Great job.

Unfortunately Finagle generates resource leak under standard behavior that applications are deployed and undeployed many times on JBoss AS, Tomcat etc. By resource leak I mean that if I 100 times deploy and undeploy an application that uses Finagle I'll get at least 100 threads

The problem is that finagle contains unstopable threads

Var.scala

  def flatMap[U](f: T => Var[U]): Var[U] = new Var[U] {
    def observe(depth: Int, obs: Observer[U]) = {
      val inner = new AtomicReference(Closable.nop)

and this starts

  private val collectorThread = new Thread("CollectClosables") {
    override def run(): Unit = {
      while (true) {
        try {

Guida contributor