Add counting future metrics (#5743)

* Added counting metrics.

* Code tidying.
CHANGELOG_BEGIN
CHANGELOG_END

* Rename based on review suggestion.
This commit is contained in:
Miklos 2020-04-28 15:58:15 +02:00 committed by GitHub
parent ea50c329f2
commit d6c5a2532d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -7,7 +7,7 @@ import java.util.concurrent.CompletionStage
import akka.Done
import akka.stream.scaladsl.{Keep, Source}
import com.codahale.metrics.Timer
import com.codahale.metrics.{Counter, Timer}
import com.daml.dec.DirectExecutionContext
import scala.concurrent.Future
@ -32,6 +32,15 @@ object Timed {
result
}
def trackedFuture[T](counter: Counter, future: => Future[T]): Future[T] = {
counter.inc()
future.andThen { case _ => counter.dec() }(DirectExecutionContext)
}
def timedAndTrackedFuture[T](timer: Timer, counter: Counter, future: => Future[T]): Future[T] = {
Timed.future(timer, trackedFuture(counter, future))
}
def source[Out, Mat](timer: Timer, source: => Source[Out, Mat]): Source[Out, Mat] = {
val ctx = timer.time()
source