diff --git a/prism-agent/service/server/src/main/scala/io/iohk/atala/agent/server/jobs/ConnectBackgroundJobs.scala b/prism-agent/service/server/src/main/scala/io/iohk/atala/agent/server/jobs/ConnectBackgroundJobs.scala index ddba8d375d..cbda92d5c2 100644 --- a/prism-agent/service/server/src/main/scala/io/iohk/atala/agent/server/jobs/ConnectBackgroundJobs.scala +++ b/prism-agent/service/server/src/main/scala/io/iohk/atala/agent/server/jobs/ConnectBackgroundJobs.scala @@ -14,6 +14,7 @@ import io.iohk.atala.mercury.model.* import io.iohk.atala.mercury.model.error.* import io.iohk.atala.resolvers.DIDResolver import io.iohk.atala.shared.utils.aspects.CustomMetricsAspect +import io.iohk.atala.shared.utils.DurationOps.toMetricsSeconds import zio.* import zio.metrics.* object ConnectBackgroundJobs { @@ -98,11 +99,11 @@ object ConnectBackgroundJobs { resp <- MessagingService.send(request.makeMessage).provideSomeLayer(didCommAgent) @@ Metric .gauge("connection_flow_invitee_send_connection_request_ms_gauge") .tagged("connectionId", record.id.toString) - .trackDurationWith(_.toNanos.toDouble) + .trackDurationWith(_.toMetricsSeconds) connectionService <- ZIO.service[ConnectionService] _ <- { if (resp.status >= 200 && resp.status < 300) - connectionService.markConnectionRequestSent(id) + connectionService.markConnectionRequestSent(id) // TODO: this one throws an error @@ InviteeConnectionRequestMsgSuccess @@ CustomMetricsAspect.endRecordingTime( s"${record.id}_invitee_pending_to_req_sent", @@ -127,7 +128,7 @@ object ConnectBackgroundJobs { @@ Metric .gauge("connection_flow_invitee_process_connection_record_ms_gauge") .tagged("connectionId", record.id.toString) - .trackDurationWith(_.toMillis.toDouble) + .trackDurationWith(_.toMetricsSeconds) case ConnectionRecord( id, @@ -149,7 +150,7 @@ object ConnectBackgroundJobs { resp <- MessagingService.send(response.makeMessage).provideSomeLayer(didCommAgent) @@ Metric .gauge("connection_flow_inviter_send_connection_response_ms_gauge") .tagged("connectionId", record.id.toString) - .trackDurationWith(_.toNanos.toDouble) + .trackDurationWith(_.toMetricsSeconds) connectionService <- ZIO.service[ConnectionService] _ <- { if (resp.status >= 200 && resp.status < 300) @@ -165,7 +166,7 @@ object ConnectBackgroundJobs { @@ Metric .gauge("connection_flow_inviter_process_connection_record_ms_gauge") .tagged("connectionId", record.id.toString) - .trackDurationWith(_.toMillis.toDouble) + .trackDurationWith(_.toMetricsSeconds) case _ => ZIO.unit } diff --git a/shared/src/main/scala/io/iohk/atala/shared/utils/DurationOps.scala b/shared/src/main/scala/io/iohk/atala/shared/utils/DurationOps.scala new file mode 100644 index 0000000000..f377973895 --- /dev/null +++ b/shared/src/main/scala/io/iohk/atala/shared/utils/DurationOps.scala @@ -0,0 +1,9 @@ +package io.iohk.atala.shared.utils + +import java.time.Duration + +object DurationOps { + + extension (d: Duration) def toMetricsSeconds: Double = d.toMillis.toDouble / 1000.0 + +} diff --git a/shared/src/main/scala/io/iohk/atala/shared/utils/aspects/CustomMetricsAspect.scala b/shared/src/main/scala/io/iohk/atala/shared/utils/aspects/CustomMetricsAspect.scala index a7c7509c9e..bc9c55e268 100644 --- a/shared/src/main/scala/io/iohk/atala/shared/utils/aspects/CustomMetricsAspect.scala +++ b/shared/src/main/scala/io/iohk/atala/shared/utils/aspects/CustomMetricsAspect.scala @@ -4,6 +4,7 @@ import zio.* import scala.collection.mutable.{Map => MutMap} import zio.metrics.* import java.time.{Instant, Clock, Duration} +import io.iohk.atala.shared.utils.DurationOps.toMetricsSeconds object CustomMetricsAspect { private val checkpoints: MutMap[String, Instant] = MutMap.empty @@ -36,7 +37,7 @@ object CustomMetricsAspect { end <- now maybeStart = checkpoints.get(key) metricsZio = maybeStart.map(start => Duration.between(start, end)).fold(ZIO.unit) { duration => - ZIO.succeed(duration.toMillis.toDouble / 1000.0) @@ Metric.gauge(metricsKey).tagged(tags) + ZIO.succeed(duration.toMetricsSeconds) @@ Metric.gauge(metricsKey).tagged(tags) } _ <- metricsZio } yield res