twitter/finagle

Unable to stop CollectClosables thread

Open

#758 创建于 2019年2月6日

在 GitHub 查看
 (8 评论) (0 反应) (0 负责人)Scala (8,864 star) (1,435 fork)batch import
help wanted

描述

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 {

贡献者指南

Unable to stop CollectClosables thread · twitter/finagle#758 | Good First Issue