in server/src/main/scala/com/twitter/server/handler/ThreadsHandler.scala [59:86]
private def htmlResponse(req: Request): Future[Response] = {
// first, gather the data
val raw: Seq[ThreadInfo] =
Thread.getAllStackTraces.asScala.toMap.map {
case (thread, stack) =>
ThreadInfo(thread, stack.toSeq, isIdle = false)
}.toSeq
val withIdle = markedIdle(raw)
val sorted = withIdle.sortWith {
case (t1, t2) =>
(t1.isIdle, t2.isIdle) match {
case (true, false) => false
case (false, true) => true
case _ => t1.thread.getId < t2.thread.getId
}
}
val view = new ThreadsView(sorted, deadlockedIds)
val rendered = view()
newResponse(
// note: contentType must be explicit here because of `IndexView.isFragment`
contentType = "text/html;charset=UTF-8",
content = Buf.Utf8(rendered)
)
}