mirror of https://github.com/sbt/sbt.git
Merge pull request #5692 from eatkins/task-progress
Clear singleton TaskProgress between runs
This commit is contained in:
commit
23ade8c650
|
|
@ -42,7 +42,10 @@ private[sbt] abstract class AbstractTaskExecuteProgress extends ExecuteProgress[
|
||||||
}
|
}
|
||||||
|
|
||||||
override def afterWork[A](task: Task[A], result: Either[Task[A], Result[A]]): Unit = {
|
override def afterWork[A](task: Task[A], result: Either[Task[A], Result[A]]): Unit = {
|
||||||
timings.get(task).stop()
|
timings.get(task) match {
|
||||||
|
case null =>
|
||||||
|
case t => t.stop()
|
||||||
|
}
|
||||||
activeTasksMap.remove(task)
|
activeTasksMap.remove(task)
|
||||||
|
|
||||||
// we need this to infer anonymous task names
|
// we need this to infer anonymous task names
|
||||||
|
|
@ -51,6 +54,11 @@ private[sbt] abstract class AbstractTaskExecuteProgress extends ExecuteProgress[
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected def reset(): Unit = {
|
||||||
|
activeTasksMap.clear()
|
||||||
|
timings.clear()
|
||||||
|
}
|
||||||
|
|
||||||
private[this] val taskNameCache = TrieMap.empty[Task[_], String]
|
private[this] val taskNameCache = TrieMap.empty[Task[_], String]
|
||||||
protected def taskName(t: Task[_]): String =
|
protected def taskName(t: Task[_]): String =
|
||||||
taskNameCache.getOrElseUpdate(t, taskName0(t))
|
taskNameCache.getOrElseUpdate(t, taskName0(t))
|
||||||
|
|
|
||||||
|
|
@ -101,6 +101,7 @@ private[sbt] class TaskProgress private ()
|
||||||
}
|
}
|
||||||
|
|
||||||
override def afterAllCompleted(results: RMap[Task, Result]): Unit = {
|
override def afterAllCompleted(results: RMap[Task, Result]): Unit = {
|
||||||
|
reset()
|
||||||
// send an empty progress report to clear out the previous report
|
// send an empty progress report to clear out the previous report
|
||||||
appendProgress(ProgressEvent("Info", Vector(), Some(lastTaskCount.get), None, None))
|
appendProgress(ProgressEvent("Info", Vector(), Some(lastTaskCount.get), None, None))
|
||||||
}
|
}
|
||||||
|
|
@ -132,8 +133,12 @@ private[sbt] class TaskProgress private ()
|
||||||
StandardMain.exchange.updateProgress(event)
|
StandardMain.exchange.updateProgress(event)
|
||||||
private[this] def active: Vector[Task[_]] = activeTasks.toVector.filterNot(Def.isDummy)
|
private[this] def active: Vector[Task[_]] = activeTasks.toVector.filterNot(Def.isDummy)
|
||||||
private[this] def activeExceedingThreshold: Vector[(Task[_], Long)] = active.flatMap { task =>
|
private[this] def activeExceedingThreshold: Vector[(Task[_], Long)] = active.flatMap { task =>
|
||||||
val elapsed = timings.get(task).currentElapsedMicros
|
timings.get(task) match {
|
||||||
if (elapsed.micros > threshold) Some[(Task[_], Long)](task -> elapsed) else None
|
case null => None
|
||||||
|
case t =>
|
||||||
|
val elapsed = t.currentElapsedMicros
|
||||||
|
if (elapsed.micros > threshold) Some[(Task[_], Long)](task -> elapsed) else None
|
||||||
|
}
|
||||||
}
|
}
|
||||||
private[this] def report(): Unit = {
|
private[this] def report(): Unit = {
|
||||||
val currentTasks = activeExceedingThreshold
|
val currentTasks = activeExceedingThreshold
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue