twitter/finagle

Unable to stop CollectClosables thread

开放

#758 创建于 2019年2月6日

 (8 条评论) (0 个反应) (0 位负责人)Scala (1,435 个派生)batch import
help wanted

仓库指标

星标
 (8,864 个星标)
PR 合并指标
 (30 天内没有已合并 PR)

描述

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 {

贡献者指南