twitter/finagle

Unable to stop CollectClosables thread

Open

#758 aberto em 6 de fev. de 2019

Ver no GitHub
 (8 comments) (0 reactions) (0 assignees)Scala (1.435 forks)batch import
help wanted

Métricas do repositório

Stars
 (8.864 stars)
Métricas de merge de PR
 (Nenhuma PRs mesclada em 30d)

Description

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 {

Guia do colaborador